diff --git a/.dashboard.js b/.dashboard.js index 636619f..f94b02c 100644 --- a/.dashboard.js +++ b/.dashboard.js @@ -1,55 +1,95 @@ -// helper for adding p(99) to existing chart -function addP99 (chart) { - chart.series = { - ...chart.series, - 'http_req_duration_trend_p(99)': { label: 'p(99)', format: 'duration' } +//@ts-check +/** + * @typedef {import('./config').dashboard.Config} Config + * @typedef {import('./config').dashboard.Tab} Tab + * @typedef {import('./config').dashboard.Panel} Panel + * @typedef {import('./config').dashboard.Chart} Chart + */ + +/** + * Customize dashboard configuration. + * @param {Config} config default dashboard configuration + * @returns {Config} modified dashboard configuration + */ +export default function (config) { + /** + * Search for an array element that has a given id property value. + * @param {string} id the id for the search + * @returns the first element whose id property matches or is undefined if there are no results + */ + function getById(id) { + return this.filter((/** @type {{ id: string; }} */ element) => element.id == id).at(0) } -} -// define request duration panel -function durationPanel (suffix) { - return { - id: `http_req_duration_${suffix}`, - title: `HTTP Request Duration ${suffix}`, - metric: `http_req_duration_trend_${suffix}`, - format: 'duration' + // add getById method to all array + Array.prototype["getById"] = getById + + /** + * helper for adding p(99) to existing chart + * @param {Chart} chart + */ + function addP99 (chart) { + chart.series = Object.assign({}, chart.series) + chart.series['http_req_duration.p(99)'] = { label: 'p(99)', format: 'duration' } } -} -// copy vus and http_reqs panel from default config -const overview = defaultConfig.tab('overview_snapshot') - -// define custom panels -const customPanels = [ - overview.panel('vus'), - overview.panel('http_reqs'), - durationPanel('avg'), - durationPanel('p(90)'), - durationPanel('p(95)'), - durationPanel('p(99)') -] - -// copy http_req_duration chart form default config... -const durationChart = { ...overview.chart('http_req_duration') } - -// ... and add p(99) -addP99(durationChart) - -// uncomment to add cumulative tabs -// defaultConfig.tabs.push(defaultConfig.tabOverview('cumulative')) -// defaultConfig.tabs.push(defaultConfig.tabTimings('cumulative')) - -// define custom tab -const customTab = { - id: 'custom', - title: 'Custom', - event: overview.event, - panels: customPanels, - charts: [overview.chart('http_reqs'), durationChart], - description: 'Example of customizing the display of metrics.' -} + /** + * define request duration panel + * @param {string} suffix + * @returns {Panel} panel + */ + function durationPanel (suffix) { + return { + id: `http_req_duration_${suffix}`, + title: `HTTP Request Duration ${suffix}`, + metric: `http_req_duration_trend_${suffix}`, + format: 'duration' + } + } + + /** + * reference to overview tab from default config + * @type {Tab} + */ + const overview = config.tabs.getById('overview_snapshot') -// add custom tab to configuration -defaultConfig.tabs.push(customTab) + /** + * define custom panels + * @type {Panel[]} + */ + const customPanels = [ + overview.panels.getById('vus'), + overview.panels.getById('http_reqs'), + durationPanel('avg'), + durationPanel('p(90)'), + durationPanel('p(95)'), + durationPanel('p(99)') + ] -export default defaultConfig + /** + * copy of the http_req_duration chart form default config + * @type {Chart} + */ + const durationChart = Object.assign({}, overview.charts.getById('http_req_duration')) + + // and add p(99) + addP99(durationChart) + + /** + * custom tab definition + * @type {Tab} + */ + const customTab = { + id: 'custom', + title: 'Custom', + event: overview.event, + panels: customPanels, + charts: [overview.charts.getById('http_reqs'), durationChart], + description: 'Example of customizing the display of metrics.' + } + + // add custom tab to configuration + config.tabs.push(customTab) + + return config +} diff --git a/.golangci.yml b/.golangci.yml index a4a9cd6..af47db9 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -50,8 +50,10 @@ linters-settings: - github.com/gorilla/schema - github.com/tidwall/gjson - github.com/r3labs/sse/v2 + - github.com/dop251/goja - github.com/grafana/xk6-dashboard/assets - github.com/grafana/xk6-dashboard/dashboard + - github.com/grafana/xk6-dashboard/customize test: files: - $test @@ -59,5 +61,7 @@ linters-settings: - $gostd - github.com/stretchr/testify/assert - github.com/sirupsen/logrus + - github.com/dop251/goja + - github.com/tidwall/gjson - github.com/grafana/xk6-dashboard/assets - github.com/grafana/xk6-dashboard/dashboard diff --git a/README.md b/README.md index 363e498..16ff1c9 100644 --- a/README.md +++ b/README.md @@ -139,8 +139,8 @@ host | Hostname or IP address for HTTP endpoint (default: "", empty, listen port | TCP port for HTTP endpoint (default: `5665`; `0` = random, `-1` = no HTTP), example: `8080` period | Event emitting frequency (default: `10s`), example: `1m` open | Set to `true` (or empty) to open the browser window automatically -config | UI configuration file location (default: `.dashboard.js`) (see [Customization](#customization)) -report | File name to save the report (dafault: "", empty, the report will not be saved) +report | File name to save the report (default: "", empty, the report will not be saved) +tag | Precomputed metric tag name(s) (default: "group"), can be specified more than once ## Docker @@ -190,26 +190,24 @@ The `/events` endpoint (default: http://127.0.0.1:5665/events) is a standard SSE Events will be emitted periodically based on the `period` parameter (default: `10s`). The event's `data` is a JSON object with metric names as property names and metric values as property values. The format is similar to the [List Metrics](https://k6.io/docs/misc/k6-rest-api/#list-metrics) response format from the [k6 REST API](https://k6.io/docs/misc/k6-rest-api/). Two kind of events will be emitted: + - `config` contains ui configuration + - `param` contains main extension parameters (period, scenarios, thresholds, etc) + - `start` contains start timestamp + - `stop` contains stop timestamp + - `metric` contains new metric definitions - `snapshot` contains metric values from last period - `cumulative` contains cumulative metric values from the test starting point -**Example events** - -```plain -event: snapshot -id: 1 -data: {"checks":{"type":"rate","contains":"default","tainted":null,"sample":{"rate":0}},"data_received":{"type":"counter","contains":"data","tainted":null,"sample":{"count":11839,"rate":5919.5}},"data_sent":{"type":"counter","contains":"data","tainted":null,"sample":{"count":202,"rate":101}},"http_req_blocked":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":0.0037155,"max":0.00485,"med":0.0037155,"min":0.002581,"p(90)":0.0046231,"p(95)":0.00473655}},"http_req_connecting":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":0,"max":0,"med":0,"min":0,"p(90)":0,"p(95)":0}},"http_req_duration":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":120.917558,"max":120.928988,"med":120.917558,"min":120.906128,"p(90)":120.926702,"p(95)":120.927845}},"http_req_failed":{"type":"rate","contains":"default","tainted":null,"sample":{"rate":0}},"http_req_receiving":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":0.0709745,"max":0.088966,"med":0.0709745,"min":0.052983,"p(90)":0.0853677,"p(95)":0.08716685}},"http_req_sending":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":0.022489500000000003,"max":0.033272,"med":0.022489500000000003,"min":0.011707,"p(90)":0.031115500000000004,"p(95)":0.03219375}},"http_req_tls_handshaking":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":0,"max":0,"med":0,"min":0,"p(90)":0,"p(95)":0}},"http_req_waiting":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":120.824094,"max":120.841438,"med":120.824094,"min":120.80675,"p(90)":120.8379692,"p(95)":120.83970359999999}},"http_reqs":{"type":"counter","contains":"default","tainted":null,"sample":{"count":2,"rate":1}},"iteration_duration":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":3244.614784,"max":3244.614784,"med":3244.614784,"min":3244.614784,"p(90)":3244.614784,"p(95)":3244.614784}},"iterations":{"type":"counter","contains":"default","tainted":null,"sample":{"count":1,"rate":0.5}},"time":{"type":"gauge","contains":"time","tainted":null,"sample":{"value":1679907081015}},"vus":{"type":"gauge","contains":"default","tainted":null,"sample":{"value":1}},"vus_max":{"type":"gauge","contains":"default","tainted":null,"sample":{"value":2}}} - -event: cumulative -id: 1 -data: {"checks":{"type":"rate","contains":"default","tainted":null,"sample":{"rate":0}},"data_received":{"type":"counter","contains":"data","tainted":null,"sample":{"count":46837,"rate":1115.1362807429666}},"data_sent":{"type":"counter","contains":"data","tainted":null,"sample":{"count":1653,"rate":39.35607045857172}},"http_req_blocked":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":88.12648020000002,"max":456.345376,"med":0.0056419999999999994,"min":0.00219,"p(90)":262.8713841999999,"p(95)":359.60838009999975}},"http_req_connecting":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":37.2988213,"max":131.097342,"med":0,"min":0,"p(90)":122.40998579999999,"p(95)":126.75366389999999}},"http_req_duration":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":123.92543040000001,"max":133.508481,"med":121.77833150000001,"min":120.412089,"p(90)":132.29845799999998,"p(95)":132.9034695}},"http_req_failed":{"type":"rate","contains":"default","tainted":null,"sample":{"rate":0.2}},"http_req_receiving":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":0.10157959999999999,"max":0.337678,"med":0.0826445,"min":0.052983,"p(90)":0.11383719999999992,"p(95)":0.22575759999999973}},"http_req_sending":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":0.035149900000000005,"max":0.096238,"med":0.0272325,"min":0.011707,"p(90)":0.06422679999999999,"p(95)":0.08023239999999997}},"http_req_tls_handshaking":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":38.9789687,"max":268.92473,"med":0,"min":0,"p(90)":135.67093429999994,"p(95)":202.29783214999986}},"http_req_waiting":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":123.78870090000001,"max":133.411013,"med":121.5094465,"min":120.326814,"p(90)":132.15912649999999,"p(95)":132.78506975}},"http_reqs":{"type":"counter","contains":"default","tainted":null,"sample":{"count":10,"rate":0.23808875050557607}},"iteration_duration":{"type":"trend","contains":"time","tainted":null,"sample":{"avg":3626.924762,"max":4258.763721,"med":3377.395781,"min":3244.614784,"p(90)":4082.4901330000002,"p(95)":4170.626927}},"iterations":{"type":"counter","contains":"default","tainted":null,"sample":{"count":3,"rate":0.07142662515167282}},"time":{"type":"gauge","contains":"time","tainted":null,"sample":{"value":1679907081015}},"vus":{"type":"gauge","contains":"default","tainted":null,"sample":{"value":1}},"vus_max":{"type":"gauge","contains":"default","tainted":null,"sample":{"value":2}}} -``` - ## Customization -The embedded user interface can be customized using a single JavaScript configuration file specified in the `config` parameter (default: `.dashboard.js` in the current directory). The configuration file is an ES6 module that is executed in the browser. The module's default export is a JavaScript configuration object. +The embedded user interface can be customized using a single JavaScript configuration file specified in the `XK6_DASHBOARD_CONFIG` environment variable (default: `.dashboard.js` in the current directory). The configuration file is an ES6 module. The module's default export is a JavaScript function which returns a configuration object. The default configuration is passed as argument to the exported function. + +The default configuration is loaded from the [assets/packages/config/dist/config.json](assets/packages/config/dist/config.json) file, which can give you ideas for creating your own configuration. -Before executing the configuration file, the `window.defaultConfig` object is created with the default configuration. The default configuration is loaded from the [ui/assets/ui/public/boot.js](ui/assets/ui/public/boot.js) file, which can give you ideas for creating your own configuration. +> **Warning** +> The format of the custom configuration has changed! +> The stability of the configuration format is still not guaranteed, so you should check the changes before updating the version. +> In addition, it is possible that the custom configuration will be limited or phased out in the future. ### Examples @@ -219,57 +217,61 @@ Before executing the configuration file, the `window.defaultConfig` object is cr In this example, a tab called *Custom* is defined, which contains six panels and two charts. The first two panels are just a reference to the two panels of the built-in *Overview* tab. ```js -// helper for adding p(99) to existing chart -function addP99 (chart) { - chart.series = { - ...chart.series, - 'http_req_duration_trend_p(99)': { label: 'p(99)' } +export default function (config) { + Array.prototype.getById = function (id) { + return this.filter(element => element.id == id).at(0) } -} -// define request duration panel -function durationPanel (suffix) { - return { - id: `http_req_duration_${suffix}`, - title: `Request Duration ${suffix}`, - metric: `http_req_duration_trend_${suffix}`, - format: 'duration' + // helper for adding p(99) to existing chart + function addP99 (chart) { + chart.series = Object.assign({}, chart.series) + chart.series['http_req_duration.p(99)'] = { label: 'p(99)', format: 'duration' } } -} -// copy vus and http_reqs panel from default config -const overview = defaultConfig.tab('overview_snapshot') - -// define custom panels -const customPanels = [ - overview.panel('vus'), - overview.panel('http_reqs'), - durationPanel('avg'), - durationPanel('p(90)'), - durationPanel('p(95)'), - durationPanel('p(99)') -] - -// copy http_req_duration chart form default config... -const durationChart = { ...overview.chart('http_req_duration') } - -// ... and add p(99) -addP99(durationChart) - -// define custom tab -const customTab = { - id: 'custom', - title: 'Custom', - event: overview.event, - panels: customPanels, - charts: [overview.chart('http_reqs'), durationChart], - description: 'Example of customizing the display of metrics.' -} + // define request duration panel + function durationPanel (suffix) { + return { + id: `http_req_duration_${suffix}`, + title: `HTTP Request Duration ${suffix}`, + metric: `http_req_duration.${suffix}`, + format: 'duration' + } + } + + // copy vus and http_reqs panel from default config + const overview = config.tabs.getById('overview_snapshot') + + // define custom panels + const customPanels = [ + overview.panels.getById('vus'), + overview.panels.getById('http_reqs'), + durationPanel('avg'), + durationPanel('p(90)'), + durationPanel('p(95)'), + durationPanel('p(99)') + ] + + // copy http_req_duration chart form default config... + const durationChart = Object.assign({}, overview.charts.getById('http_req_duration')) + + // ... and add p(99) + addP99(durationChart) + + // define custom tab + const customTab = { + id: 'custom', + title: 'Custom', + event: overview.event, + panels: customPanels, + charts: [overview.charts.getById('http_reqs'), durationChart], + description: 'Example of customizing the display of metrics.' + } -// add custom tab to configuration -defaultConfig.tabs.push(customTab) + // add custom tab to configuration + config.tabs.push(customTab) -export default defaultConfig + return config +} ``` **p(99)** @@ -277,16 +279,21 @@ export default defaultConfig In this example, the 99th percentile value is added to the *Request Duration* chart on the built-in *Overview* tabs. ```js -// helper for adding p(99) to existing chart -function addP99 (chart) { - chart.series['http_req_duration_trend_p(99)'] = { label: 'p(99)' } -} +export default function (config) { + Array.prototype.getById = function (id) { + return this.filter((element) => element.id == id).at(0); + }; + + // helper for adding p(99) to existing chart + function addP99(chart) { + chart.series["http_req_duration.p(99)"] = { label: "p(99)" }; + } -// add p(99) to overview panels request duration charts -addP99(defaultConfig.tab('overview_snapshot').chart('http_req_duration')) -addP99(defaultConfig.tab('overview_cumulative').chart('http_req_duration')) + // add p(99) to overview panels request duration charts + addP99(config.tabs.getById("overview_snapshot").charts.getById("http_req_duration")); -export default defaultConfig + return config +} ``` ## Command Line @@ -322,12 +329,12 @@ Usage: k6 dashboard replay file [flags] Flags: - --config string UI configuration file location (default ".dashboard.js") --host string Hostname or IP address for HTTP endpoint (default: '', empty, listen on all interfaces) --open Open browser window automatically --period 1m Event emitting frequency, example: 1m (default 10s) --port int TCP port for HTTP endpoint (0=random, -1=no HTTP), example: 8080 (default 5665) --report string Report file location (default: '', no report) + --tags strings Precomputed metric tags (default [group]) can be specified more than once -h, --help help for replay ``` diff --git a/assets.go b/assets.go new file mode 100644 index 0000000..be2486d --- /dev/null +++ b/assets.go @@ -0,0 +1,41 @@ +// SPDX-FileCopyrightText: 2023 Iván Szkiba +// +// SPDX-License-Identifier: MIT + +package dashboard + +import ( + "embed" + "io/fs" +) + +//go:embed assets/packages/ui/dist assets/packages/brief/dist assets/packages/config/dist +var distFS embed.FS + +const base = "assets/packages/" + +func dirUI() fs.FS { + return dir(base + "ui/dist") +} + +func dirBrief() fs.FS { + return dir(base + "brief/dist") +} + +func fileConfig() []byte { + config, err := distFS.ReadFile(base + "config/dist/config.json") + if err != nil { + panic(err) + } + + return config +} + +func dir(dirname string) fs.FS { + subfs, err := fs.Sub(distFS, dirname) + if err != nil { + panic(err) + } + + return subfs +} diff --git a/assets/assets.go b/assets/assets.go deleted file mode 100644 index d554089..0000000 --- a/assets/assets.go +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-FileCopyrightText: 2023 Iván Szkiba -// -// SPDX-License-Identifier: MIT - -package assets - -import ( - "embed" - "io/fs" -) - -//go:embed ui brief -var distFS embed.FS - -func DirUI() fs.FS { - return dir("ui") -} - -func DirBrief() fs.FS { - return dir("brief") -} - -func dir(dirname string) fs.FS { - subfs, err := fs.Sub(distFS, dirname) - if err != nil { - panic(err) - } - - return subfs -} diff --git a/assets/brief/boot.js b/assets/brief/boot.js deleted file mode 100644 index 37658bb..0000000 --- a/assets/brief/boot.js +++ /dev/null @@ -1,188 +0,0 @@ -const overviewPanels = [ - { - id: 'iterations', - title: 'Iteration Rate', - metric: 'iterations_counter_rate', - format: 'rps' - }, - { - id: 'vus', - title: 'VUs', - metric: 'vus_gauge_value', - format: 'counter' - }, - { - id: 'http_reqs', - title: 'HTTP Request Rate', - metric: 'http_reqs_counter_rate', - format: 'rps' - }, - { - id: 'http_req_duration', - title: 'HTTP Request Duration', - metric: 'http_req_duration_trend_avg', - format: 'duration' - }, - { - id: 'data_received', - title: 'Received Rate', - metric: 'data_received_counter_rate', - format: 'bps' - }, - { - id: 'data_sent', - title: 'Sent Rate', - metric: 'data_sent_counter_rate', - format: 'bps' - } -] - -const overviewCharts = [ - { - id: 'http_reqs', - title: 'VUs', - series: { - vus_gauge_value: { label: 'VUs', width: 2, scale: 'n', format: 'counter' }, - http_reqs_counter_rate: { label: 'HTTP request rate', scale: '1/s', format: 'rps' } - }, - axes: [{}, { scale: 'n' }, { scale: '1/s', side: 1, format: 'rps' }], - scales: [{}, {}, {}] - }, - { - id: 'data', - title: 'Transfer Rate', - series: { - data_sent_counter_rate: { label: 'data sent', rate: true, scale: 'sent', format: 'bps' }, - data_received_counter_rate: { - label: 'data received', - rate: true, - with: 2, - scale: 'received', - format: 'bps' - } - }, - axes: [{}, { scale: 'sent', format: 'bps' }, { scale: 'received', side: 1, format: 'bps' }] - }, - { - id: 'http_req_duration', - title: 'HTTP Request Duration', - series: { - http_req_duration_trend_avg: { label: 'avg', width: 2, format: 'duration' }, - 'http_req_duration_trend_p(90)': { label: 'p(90)', format: 'duration' }, - 'http_req_duration_trend_p(95)': { label: 'p(95)', format: 'duration' } - }, - axes: [{}, {format: 'duration'}, { side: 1, format: 'duration' }] - }, - { - id: 'iteration_duration', - title: 'Iteration Duration', - series: { - iteration_duration_trend_avg: { label: 'avg', width: 2, format: 'duration' }, - 'iteration_duration_trend_p(90)': { label: 'p(90)', format: 'duration' }, - 'iteration_duration_trend_p(95)': { label: 'p(95)', format: 'duration' } - }, - axes: [{}, {format: 'duration'}, { side: 1, format: 'duration' }] - } -] - -function suffix (event) { - return event == 'snapshot' ? '' : ' (cum)' -} - -function reportable (event) { - return event == 'snapshot' -} - -function tabOverview (event) { - return { - id: `overview_${event}`, - title: `Overview${suffix(event)}`, - event: event, - panels: overviewPanels, - charts: overviewCharts, - description: - 'This section provides an overview of the most important metrics of the test run. Graphs plot the value of metrics over time.' - } -} - -function chartTimings (metric, title) { - return { - id: metric, - title: title, - series: { - [`${metric}_trend_avg`]: { label: 'avg', width: 2, format: 'duration' }, - [`${metric}_trend_p(90)`]: { label: 'p(90)', format: 'duration' }, - [`${metric}_trend_p(95)`]: { label: 'p(95)', format: 'duration' } - }, - axes: [{}, {format: 'duration'}, { side: 1, format: 'duration' }], - height: 224 - } -} - -function tabTimings (event) { - return { - id: `timings_${event}`, - title: `Timings${suffix(event)}`, - event: event, - charts: [ - chartTimings('http_req_duration', 'HTTP Request Duration'), - chartTimings('http_req_waiting', 'HTTP Request Waiting'), - chartTimings('http_req_tls_handshaking', 'HTTP TLS handshaking'), - chartTimings('http_req_sending', 'HTTP Request Sending'), - chartTimings('http_req_connecting', 'HTTP Request Connecting'), - chartTimings('http_req_receiving', 'HTTP Request Receiving') - ], - report: reportable(event), - description: - 'This section provides an overview of test run HTTP timing metrics. Graphs plot the value of metrics over time.' - } -} - -const defaultConfig = { - title: 'k6 dashboard', - tabs: [ - tabOverview('snapshot'), - tabTimings('snapshot'), - ], - - tabOverview, - tabTimings, - - tab (id) { - let tab = null - - for (const t of this.tabs) { - if (t.id == id) { - tab = t - - break - } - } - - if (tab == null) { - tab = { id: id } - - this.tabs.push(tab) - } - - let lookup = (collection, id) => { - for (const item of collection) { - if (item.id == id) { - return item - } - } - - let item = { id: id } - collection.push(item) - - return item - } - - tab.chart = id => lookup(tab.charts, id) - tab.panel = id => lookup(tab.panels, id) - - return tab - } -} - -window.defaultConfig = defaultConfig diff --git a/assets/brief/index.html b/assets/brief/index.html deleted file mode 100644 index c125f51..0000000 --- a/assets/brief/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - k6 report - - - - - - -
- - - - - diff --git a/assets/brief/init.js b/assets/brief/init.js deleted file mode 100644 index 6377104..0000000 --- a/assets/brief/init.js +++ /dev/null @@ -1 +0,0 @@ -window.config = window.config || window.defaultConfig diff --git a/assets/package.json b/assets/package.json index c3f2434..18e97c5 100644 --- a/assets/package.json +++ b/assets/package.json @@ -8,8 +8,7 @@ "build": "lerna run build" }, "devDependencies": { - "lerna": "^7.1.5", - "vite": "^4.4.9" + "lerna": "^7.1.5" }, "workspaces": [ "packages/*" diff --git a/assets/packages/brief/.gitignore b/assets/packages/brief/.gitignore index c1ffd2e..123d897 100644 --- a/assets/packages/brief/.gitignore +++ b/assets/packages/brief/.gitignore @@ -12,7 +12,6 @@ pnpm-debug.log* lerna-debug.log* node_modules -dist dist-ssr *.local diff --git a/assets/packages/brief/.testcontext.js b/assets/packages/brief/.testcontext.js index dafa506..c407659 100644 --- a/assets/packages/brief/.testcontext.js +++ b/assets/packages/brief/.testcontext.js @@ -2,19 +2,19 @@ // // SPDX-License-Identifier: MIT -import {readFileSync} from 'fs'; +import { readFileSync } from "fs"; +import { gunzipSync, gzipSync } from "zlib"; -let testconfig = "" -let testdata = "" +import config from "../config/dist/config.json"; +import custom from "../../../.dashboard.js"; -if (process.env.NODE_ENV != "production") { - let head = readFileSync("./public/boot.js").toString() - let cfg = readFileSync("../../../.dashboard.js").toString() - let tail = readFileSync("./public/init.js").toString() - - testconfig = head + cfg + tail +let testdata = ""; - testdata = "H4sIAAAAAAAA/+y9225lx7Ul+N6fkU9VgBGY94t+pR8Mta06Rygf2W3J7m4Uzr83ItYlZiwyfSQUQ/AWzSQSWEwmN9facRkx5phj/K8vf/jbf/ztT9/+9P3fv/vyzf/68sdvf/r293/97g/fff/37/7Yv/DT//eX77588+UPf/7bDz9999cvv/vyhz//8NO33//w45dvxjd/+d2XfvlT/+4f/vanP/3uy4/f/sdf/jR+2PhPX75BdkMi+t2Xv37703dfvsFM4eaegOrM8Z//+bvjdX/8rn/7h7wmCSjer8gSTc1dEiNRzPtL/vtPP/3l93/97v/+/f/1pz//4X8ud/vTX7/74Y/r6/70/X98949e99u//9uXb7hRoIlQgqkL4+++/Me3/++Xb8i1CSNS/0L/39AA0jFgfvR/+v6H45+Q6Xdf/vLfEv77uEZBAVy+9S//LfX8R7PMlDw/Yvxb/vcv3yBZE2OLRBj/ZMtd/+HPP/zw3R9++v6Hf/uAG6cGzhLESc6sJueNI0NzCBS9bvy6y3l/82bKr04tKCAp47it5Vf/49/++u1P3//5hw/4xZGxqUo4OQBpkp+/uRE1lPA+iMZvPn4nRwE9bwHRGrAG5X0vSN4MRdPsvitib0QEFKb3DZJkY/AwAR/3t47I//Ht939aBuQYxus8+O5/fPu3P/30j27wGPuw/ORjan/Mm25NhTT5HOxJer3rJC2Bme/RjkKUmllG6TXYUcXLYCdCBZ4Tg+8H2Z83JSC6lYHCjVTSgJbb/PG7H/74MTcJDYQMCc0gMk057bxNaBRkNu8ShPB4CtdEVhSuM1lTAZfpa4kocU/fOUSgIbCB8f1v6yT46U8//v7fv/3hjz/++7f/82NuFRtaJnACQJjC/XZyH+gCYr9oEq8D7//59vsPWmvG6LI0MyPvD1TvKYstLVSkTFkDT5DrGd5TV1uSkHuZutY0Lfp/vgYceWMnY/Y6c/vY7iPC33lXfvwvt6//etpeOxiX/auxghP2HURSybW/6Pc/fXesgx+5IDI5NA4Xd5QkvVZyNvGmCIRxPl0miUaWzNdsZmJtkiYwBz2zUTOnSKH7yTI7NFRRJb6fLBtGc5WUPB6tLDf5gY8WkfMGI836o6UECA52wP6q41HN1/u3b//2b9/9sof592//9Lf+4y3RTJVMdCxRf//bj//4B/+M2zh/Np8/7/fjDfqYn4nwn/2n/vjDt3/58d///NOXb/7PPZiQEh2v96BfNNwBA71P5+NFXJpsgn3GLUwZGW18+DVpiKOBYlDZIxDUs+4RoRpzGUps6uZ4LjkDQaC0QCEHKusQcxMQRhIdGyXtQ3fSN3CTPmnO/Z1bALPgVzcEJGjCyehlOaWGhHzipWv7FrPksG0Aj7ilAZCfb07cu5q0vj2PTeHaLZLQEd7sFtmCEFnL7UULRvWct8fY17mMcnvMLcUQXxHd9QW6n5bOx9Y/Ju5hjI7aLnSn7sHvojuX8tSg9ceLqQUAEYkEU8U9xMAupPsQnblgzPvyeWOgZAXP4YAI180wJ1Y4h2SYNPFZlvtCUydb7gvTWZn0grayGc9R/w1TMa+3cOJzaO6O+PVTmXUQEKplGUpoGhRcbwpRmnP0g9NxW7gN9HFzAUfn40PLNO7HhaigT9M8Usv8dXBTWeaviZHl+V7QMo8VGd20nrav+RxgfR3eBPrs2q2g2T6IJ8KNMmI+RTbylh5k15B4fNMB7zSaYQpMdoI1sZ972GOu9GyQHSsyYeg8xB0gj6RRiLmx78J3NJ8ibUBzEqKp+sFoDnehuf/jd3sgHKtOGN0vWu6AcAb3pLBzVmyAcAchZxA8P+5dAVB1Ye7U5io+1o4bzJEyP6g7BF34OgmEZV8AVHYA3Qfg4LqV/40D/EdiMrFmBmCBK7IgzuaktCzm4aY0F3OCxplMXDCztnFi5IqZvbmRcdSzO2tjpn7G1BdEZJhNsq+buMKWQYyJMxRE5gFQmSgFjblqazQiBAF9EsrhjVjQK+WBCE1ELICP7+d9yExRE99DZojG7gWacYKUG0S3BWlCCMQy8xCAKFxWtHZCM2QU53tS42Zo9hET8iPBlTdECM7H0oeKzQjHUX0yapopy3zEJChHWPamxBYFU4k0dRIqFDhqPw6gEOFLgylKaW6CchRZ8hqyzCbjFBCTMHNrlB55AyrhFn1MauHLxJom0UC0N1+m2tgj83yoeTFrAiF8HiV2QCmez5C3QCnVVPnsUEqcPa4n3S/alqJowP0iAcdL7IFSSAL5PpRiGATQxFJgUdkwk8S6jBOy8AKgSPsZVPJtxbP/YwqDTHAmnwdUKTaiJNbHab+jngxxWyuZAFwPyGgZOjEVQbZwR0CpT3lAK6KWDMl47qWxkJLsnKmvCrCU3JzxwXh1hCXQx91EWKYYBYAgyCgeT4TFAIlUkRUrs8uCqzSVhQ3eoXA/toYJLD5x1V2g75CLteoSOFnLhGTysDohJRyhnH6kzk1FRPXlcKMMfUB8LkDF2MyQUOIBqIKbERgubJUjus3JGC2FyAuiUm5oQRr5nIxo0ThF2OSN/iOgqSt7vDZbRRHNQpzZLzLpAljQiC1BJsDSpoAMqBViSaZQVIgljdEJISrEokbuoGWGMms0E0kWi10QS+ZTlC0Qy/4FsQZBZVjYKttTcPwV2SrWcUi/OSoCXkgqTqvA6uAHCjMFeVXfL2YKJdGe5YyLo8IkRsr3xSi/aWBF1tg1Uc4F6FL1YT+9scmtiOiLuacmWj0dgyVFPR5bQ+UItFJzyJapKHX5Fm6DIRO2F8RS0JBTCCdRSpPLSXCdSIo5DPUdOhUhBOtpAC1JgN8vuHlmKlVSJ0IzH0eAD0ZVA/9cU1ACavWQU71SVCxWNvX+/Yq83AOIadAiAgNx75D6c+EnsoZpEolTVCjczBIWQWbHN1JOMUlEpcrXTz59XpEsUy1YyIjKVKOWQGC0DpYP3ORjbvKxESqpNbAO4dfzC5N5M3C4GdTxrYrqVsgoaf2MU2hUJtPGEYFayCgya5KeYoWM6q/AoaQQr0tG+b/qer/Fup6EV5yUXGESZVXem/oqvSfNqtKnBTCRm8BTl38BJoq0+DwoSakBAdjFMlw6K9JsqYJYawiOZkRLDSE4rfBPSA3cQkpJj+1Qixe+SbWhGYecbwO/IFLCbMpsihdXIIV16nPRCuvE2JeogpCSJRbWSR2oKKzCm6hK+qOg5yzktL+gx+mZ7zLBilGZYBmi8zkViVfeScHNV66J0icUTFtYJ3Si+FygiamJmOHUeZk0EOFl6ilbLDMPMFJxIZsciE3fkk0aLZyZo4wl436WRLTXZpkYOuQMZ3qW8YIbEx6qxgM6hbVMSSnQKRp5klLVvXc4ZRqx6N65WSQlw4OtYw5snCp9/r4sgIp/AaiBmdALgMLmLw6gMuChd7rBlFVRBqTIqm0nWOVQhGArhOLEVQxFhpnl1T4PhBJohMB+Cny8FPDQk2/F9UBQ6oalZED9sFxWcc8GjMqqT+BK4A1BRbC2E1A2Nenr1atW7gSYAe2tNqoDjbvgMvqOLOsoTYeCPDuGEnOytwWujqWYznbFG0gBgintr+B1JDhr6oV2cgyNSjuBV1G6FQbKpNAjMLgCXQgoM4RY5qODQ8zm48+mjIJmJKbw7B4hamYdf95zElq4KMSb7pFoiOKL+pyaMThN3d0hrBr0YemBNtNIpJcGViTUNCEA1xPAqMxp31d0NhRS0+BBNl3ACpuFUBVI9f/HBHYdfPT6oiAFlqrF8cUwNc9t1bvtkCo11T47pDLxuFX9/eIQ9n80pEJWuBtDWXe5RFBjUCCoK/TY6A2aCERohVSmuXJMs6R3rSBwtuJwupic3z45AIy+45vZuThFYVBEm7uAAPr4XztNIrCBEopfKvvZj2Qt3OAftBMiN3RxT31uyv0/k5paVoaDrLkSEl7OGPsMJLh1vGEguPJerI3zsPI4dwhplEQgZWeQVF36CrOFenqWvkn3xuFsp1VEckFt3DxS3d3ekbu9BnY7mitB72J2x2zMWcghlJN0uIa+KHKtZmMmXkYc/ZkpNTEG0/PdL7Ue4A50+084RpJvFLMHpRQ5+2wzFAcs5yYOSKmFQlpOTWZMtEjZJdL4urmMSn0RuYDxjdh2k2CIo2uS87rR2pknRuH5M6CcQVMISj1vqkDsbOaYRuct+c4Ow3DWdIWlzE/ZLNWWMr+ZlBHZZzKLBjw6DFFVS5WfsmF4wBDY3StVNk0BVdylg58+EthoI4Pm1CGYI6+72jvOEazRBJKQJtDT0flT7FJYmRq4m1QlvEY2T05mfLC+bKwtzdLwkAhs6y/Uifl0B+ZL2ID56NUwX18NbsVWv9ij2ELBW4GHgttMIo5io2fZD5aqpNz67EO9NXSOF9ITkFW8hcFGXy1LYoB8tSwpoJ+pLsnUMhgCjgdfSbV+rner9g9qQ3c7hbhOWrihsaiH56LdcmuB1N+OJ9YY8IxFmYneAdcvA8/EOt569oYNZi0hozBrkFYVT6kstMC0EKZ4Z9gqNR22eaf5BsqC2Jw4tC/sb5/ix5JsSFibgJdqZURtP0R+FB+noZkvjYiKZJxr5dKIZVXJY7DCZ1N5cR8iguUgGM04NeukHCZ8km9ZNQ+h5ezkjYIO98Fi4ZXDt62azvRjF4vb6b+4i1/7lXAXmTQNTBJ1lCE1PSuXhxxgdm8yKbTw/m2LPJ5F0wrBltqYSNBr5bKf0Tk9Bas8nhood3S8rWbpE2z5FrCFG2qWLwe2EIDgxrXj6sC2Hw63Um0aweq2umXfvDVN8SbXVJuIjPaO6cWVAqVUkmsjYt34GzuinmdQ9ELP8LHxKZ0a5toOB41DQ9KGqiB4H+zqvyGnHuXYy6RLWNHiH5h0NeZ+sLXzrurCyY0NkLXY3/SfSICGQjvtujgDwHJuCt4CgldTCJODQbmUv+CMzutmQC5QSKHh5yjXSL9vypujJLjhC6IzaCiYLjm5JYThsHVjMgJMeEddD8axSKzQ2KtaBRo6YwY98NrJMwF5qt1i/I0yezXLsHcaCd74rypBVSpU8T1A5lr6hGR8HJJOgOZqOjUIiz6BBMnoxn5OmyGbNU2UtGLVcbJr2IIy6eukeWHX1h+SFVxb8yDi/jjeLlEfC/ZwKAEvqWaZ3oYCTgu9Nqrq9SRm5IDL/IbBpfkyvzHR1eHZwNT/SSkNchvao7tytBPrpTZQ73vNdO7KBiaGOcuo2RTAJ8ajQTGbr+o0SYssUlGW7IMBXLMoQ9hguOiGOOgukPdsj/hwkEcbQN42/9V9IM80C8gzzU0gL/B+RzFws9WEZMr9YcVqIrN2RCKYW/Xm1oc2zYQo6jZABDLdQNPr9gdsrAyzhvt5GDXqywtxKh4fhVELUoq5kPNoeiN51K6HJCYVecVr4ClRmBIUbprEfNp3F10SoTf2sMt9M14Qug2/cU66B28tf0bHGaX+GeS2WJ5MSRcujnPEQa4TAxX/fG8WIiqHsDsmCEhrJhQEim8f5geL2Pqmc39M1NrnJmBFchjVv4yAePGFsQ5sCwMuq4pNYeXXzDnQ5kHvkxFt/cAECko+PurRikhzsYZxc7z0jMuUBYG1wtnRAuJlG3OJMSIpLhv9C3uhJotJ7GLa5m6ztb1S+iJFce83t5RNsQXaLfUY3+kRhyvtVLL1fbGAsEHHaXjWAmf/WcyumrW7UrE5gZrv667MicFyCwbjf2GwsSnmNKIYV3vqmv1Id59IeBvNZk0t0O4QDhJohh5rjyWVHWmRsPU1aW0QEJMCAbCf23A02zyLa2h9oZcQiLdL+sdya9D6fpkkkP0PVoot0X6WwgWRmiryyQUumiSiJhwE4bpTp5Z+KAZvuDbYGylwDUEOn/vZUd8XolwEaomIMI/do3UABeOKqin6NNYmisMA4wURGkJzMQ7kvnAfh5pZ+2RRXjzwmfU9FwtwH4fze5BLgsLtPH71HujVT4AScvFLhXwdLwn9jL4RniVxItv5p7ivRpLU8id4bUMFQoalscBJhzHle/oE5xB+32YGTQFZL3YtdovXtKlwBMbzDR5RQiq/CL6lNVayu3FyJ5MWhAAq4w8XoVoqWtQ+IeNQc11OXiDVj4aspYCu7H9fdj0dcRGqiYQzriPwIym0u2BKW4VqEP1AgfZs9TTEBiEYWgumaUpXwF7h1LyRXoWEg1ILbZKicbaQeiXWolEkhxQumTWiKSmRxJgpvAvZ4RS1bwF2ssFgTF4O2AmhzNJmvzqKmx8fbUm3YI2EdgrWEEHtXQsnCFOsbQouFF+ppDKslq5IdrnkT098y7IlPBrQkIDvs7t/HqKNfRhII/VFpciRhqOrHatP0a6JYdaF3sA85gJFMMq3LHQ+y7nej14FHeWZ1S0/KBzSXlG31qefmxDn+vA6kMo4cpou7EYaEfreAYWiPMHApgKzq6C076F1WIeH/L1AtnDBINlYHGXyULo1a1T7QhdHwOGLXB3z+1FrEaqp0106W83VwADd13lpoY4Gn5dSEzUFpkNXWiVs4blkUCqCGdWpqZJSlJEdg0GSm9tKpZGaVLMNiib9XcV9sZNzb2mykUpzbdiPOsNx7O5mZtZsRm6KtZppIWhn6xdXRi00g6vphkbLYSRzgHArAjbNRp54uQzl9UVVTztVpVvQ11MG+OH4SzcQay+Jv8qj7ld7mkR/LfyF0jA6/HIGt6S5/Ys0CRPIJVVSKvyq+MuJF9tJ8qjdocnDuRKk2kGgNHY35Y2pRNmYOEXSUDmO/oc7XlIR6OfQahEtKe4tedF8UFNG7MfffbVQapHoym/uIRq4SiztBSZ4K8WHgtnd2JZtwMC5tu6SN3cRr5KM8cMxwl7RqgMaWrhDHIMavKQvuopWi/0wKm2RArD4pxJZyCptm7GSaoKyxko6pcXGVElFD6TjpixpOnSgRmS1OjNSW7RpV7/vVdz0zCUlE1zNwXVVq52cGYeDl8ewGYhJCzZwv290Qh9tzgH0y1gzaQysqBuRmjkSHBMUtQrPIkVr/qslJC9IzTIj15hwFhX3dY6qJwT5qisNDiN8Dx9/JGCzCdh22nioNRrWMnmR/LPLoN99Zi1+9hPJtMEeErQItNJLNWqaipzA1ccjs1kyI5bGThZrAZiCuq3NYD9Ksw0oTV8OpQWjF20Y46asI2a/WU9m3ylAgzR61+GS3CtHhogeFZcZrbyYYsaqXi4UWfSFaeI7r0dxUkrJ+V8/E0cGTVgpZwGarfUzuWCta2KSVy2LC7HbIj8zkSVqCiMaGnHwkXNU5H/9NVAcIe0VHTe8pRFIcjksHNSYN4wjgevGYChesYqYW8UqZN4f0Fu5mUkzghA/XsWKsxUOXlP0mXn6sWgMBDHmhCnCUDeyCsfCZmDMYNQsVv8NZ8i1hAmkmveZY4kgc8VhcnNBtc/HixEFJZWqpAcfqoIbZ7k6wYKzSKHKDLSDCqdLO4oL2gIRZbHVRQMURvrZ8Y5sQls8N5Wd5Fj2W0w9Q+qn1h+1haXfp8qBtcxc0CrU8nTmGniE3swZlQshJmzNKUAsC1d2ViZHL7Rw7MNbU4e+yURjh5n/6+Gtfk6bj7pf7ZH8M5Sp8TAU/2gTDQ18P6bbAmsEUohWDTFw2NIChsLgCO/3gKGq1LTgBXChGQV/7cz92wZc0Rg1RVYPExJtyRJcvcZDMu7q8eJWm5ml/jFKjQJsgnVDHaVJwYHCFOYb0F8rIJMwX7FnE62fBci4qo1CM0vIPDJSOStIGlerP2uciqJVKZlNpD/seGKS/uM90PtpZKN2bHQQLzXUC24RU/WntSMS+SpD8pq40TdwsPfnZAdiMeOfVthF0EHlp0NbZGKeq2P0YKSuBPgbc6kj6KIEc0CsSjBplOq8gi3MAKimx/2Hm4Yq73Is+5VQVj8HoaAmLyVIhwYZQTNWUqKF+WJXhg2ZL4L5bKm0JpkkWquONkKp+oJZ+Cwf3deSCNt8affjqx1e/y+Hr2gIeW8Gtl9tQVfud82R3ffVHKGJs5M8PStJoyWOmP8p60eqepLD6rSgq5Ti9U/Zf3JodWklyKZEHPzOoe1jUZT1IydgXO5rXn28mQ8R7X+1oPd7QAuoayG0SCUX2lhjjJaOxo5H39ENuRSbgyPm0r2Fbnwv8tbSRPIhNRFJtsJ0qTQl5po8ODBWMJieCp9XFPBbCxQUDVtbVftOp8kL4KLIOppJL9+Hk+cCJizsIGVjUE+gt8HLHW+ZAnu81536saiLNSlAzw+bgbCIDlS8bgRNsUgEpHbhrL2VarzSXWnI8RXFPjKJTSu03Yp9bu7hNC3D2BqwgNgvQmQRTYiQMt75rT8WoCFyZJytl1YRGpnmEs0k4G5l7rojIi0ALYhlyQ2wlmQjm3ZBaGyeKrorlInvqiNvrTq6NE8TY6U8OqJP0wvoKxZ5IcK0kcNB+99EmBC7Zqk5pjRVxKtHo2r0EZtzGvkbY1n1aG6mYrSt+3ImBuEmn7PcgNfs5fAaMsWUb/WrA0x9OGKzMkWMN+czCd5bgGoJBed+yqmQzRdTJCANWaX5VYb/0ACjgfAiAaZEhFmU3Olv9s9Ggwk1o0xAPrCFFFCWSSm2upUxvnXB8IaEWbzeSaS5GGhRlwyGvy9Bhf/qr8EMEq9YfURojAOK8+EC4QWVJRyM7gnKxM5urHPAKsOilCLFqFEJGC3UGW1Ry0n/YghvjbkUkvd8LTJgkX7hUmoEz1Wb2Sef6qq8h1xnXagET0dU+1yUF1OjABo5lLXhYRxY3BWr8t7QIvHNxLMWHga1/h99faOrX0bPycgWV8bKdShSU4m1C+kFcVVoc1dNXJNYmN2aRH+4S4WRAlgWNRckUammMFs0FJHLH/aMu7Q2PJKgmsb2l1DEENlXXXwagnwwmlKAf6GpvhEJTTvXcbWn51F0xj+JnulPG9BUjo4vSIZU4oBqHtvRUlEnAwzrlqzViOnXn7YWGjFTvgKriIpjYa0zEmAjwiCTcUrdKMXXFgEEiUKhjsJFim+qdos3ft7i3/+bohKqy75CZDbmIKTzd5ayESCFeC4CMCMnfbsRpEiWN+s0MTPSdSMACU4Seb5FIi2ckp/+p68BxaKJKqYJiBtODd14MBkZxd+ChdMXIZjGosZHDfDVy0ItGfAwLnv2RVLK0z31Y5kxZws9pnEqFWLMeQmtFVD2IruUamshvjBjThzr7HUTAHlXCYaWUTtTfDs1hoycFufilVK8Yg8t0S+axe5N08aZcLyBuA3SQQtWEz9nculzSg5f0gA0MLg4w1rzJA9fpZxIBjTHInE0RUk5tU66TGCLwITYJRmTuXPtdbXgluBw1zGNoZHIw8wC8WC97zKmCls8csvJlVhWHEcswdW9wofgIC6l4zb3CsLZ4LDDv0IBN8Qt+cthOQmX+aj71R5jMqEyI0i2YbkjPBPRV1OmSyuWVjXAkB5LcjkRPZgxFZyyFFj9KzhE19cpWjEfkPJTasW4cSbxwzdthL2JDBOxyZFFMokWcgwYXFeL2EyEQF6gWZi5sT6f/HgRzgzEV2yTpJYAGARyujxpEYsZZEhNx4TwpQ9ygjThKnnEZNbFK5VAUXwWOyybYCgr51zWd4UtCch9f8OM4paMwZKPKVRToxYKG1ffMTWj8ihWW1iNFF9EY2aEEZ9Mos/QRN0k5lJ2T8uRz7swaJFWgy6tBaXZ2jpDaEI6S8Z0eIoFx7Eo4ho4TMhGabs6IkUm4NppYWHUj4qJt38YGzcBxMCFPHNT1cW1AsFYKuTClsI1D57ZqCVJcu2DNG4MmryNN9uPtXYY8b8e1jKDqcofV3tU+eKz2Cke23Rj0cRdRI1BWAaLfiaacwNW5iXb0qVyZRiy5OWhZtTFflGikEiHYgtHpgkMcvQl20Z0pU0jIRUhLNVmIzlDcwiUX0qSxZAJBW/UjslwNBRGO37pWaakRi7zdz5cJYNFKwTDACwFtyF7JQyEyo5pQwvJs02yUCD9RSAN+jv2ghAMoRkBq2J/twm9FipDEqXSY/3xVlySKYsvv4ld7o+XY1i6kLmvpUo3EeedxBiREqFzIh8F/btWqRTVMCxHGsP0C0tYZWJpYKtLheBSeoUGEcEuvxoHRi2cxTSOm5MpuGJq6Cn8c/KSCgdGzTIs/IgBeSwvHwzKCIPkGGxUy5oIpFAt+pMRb/hW9QRAbrRyYcpGVHS4qI2H4R29ma6i/V32vPjMbYyYTYC2scjJQK1vFwLu5DRtXoWag8LMIx+JSYl8ucksHmOI5Lro/LOxsarWeEwfccLClVxkDWsmBnwEku9LJH/jnPvhuG2HeX+8Gm5jCJhGIeNqj8eYjtPU8TJKupMjQ/AI8TuWvKrHnGgR/B/UeTF2ldXAgtMrdHv0UwK75vvNW0wCgdPe6BNRZH3HCsnLpdQLQOtHSa8ADcD9rk/19Z6SUR+peK4sJRVvUGTEASG17BGj4xDBX7GDkpozaVGkF2BmkgjV29VjkZBJoK6UmKUWq/pK7BJSLAacZo2YdVip9nG6kx1jYgG7dV7Fv8JEpWYlCWOtzCLmo6Vy+ii8JcWMIDyWvoDCjwmB86ejxxDIAk5XXVt0BWqyhCU5kNByZEJFqqnk1pLUgey5KBJwowATP/oyYiWvgUlFY1ePpcQEYTszkyxb316CY7iv2VSaaUv0KdMYbZak6NOl+PR4NdZFaTZySjRdnhp+dmqKjhRVbqYtANHSt8VXvvFg+3D4JRtKlC8HvygN4u6TGFdHr8SHwy/Qu6dTHyZFHwe+rIWIEV+y/WqlILgEAHbsZbEK8wsMW9u30CVlOZdLoso8hBcrpoAWCiJ2JpRv1JhJkwBhd4HxuaQohQf9nBbMSp9BCxoiPNvXejmqYRJ4CrvrXgCCbEsFk/OkPq+9gJOM1gomimAUaQpaNDOAONEMr9qUVEl2j3cqx68B1aDf8eBkKI/PWeYjjXrAQHEBfjdCSUIXRSVmAvMzmPwEbTSSzeWtoBIa9V+DH171HwvbhMXxulerujNkA61FTbzzZMbhaVjhFq2ZkIC8LzgIBllPUJnBLP7r8Wws4U4ocXxOxai1YLb8ZVozzWaIwY5HBKnus4PNRpRk53tUTbXDDNAWywySB7oDVn2EJ7nqaIwvM1pSnfN4N1iWGe19MiTuylDSu96je4uf0DxMBCAu0eRZA5V+pGKLCutAfHpfjv4BC1FaLMqiRd/0eHHP4BYJStU8o7+AMqT5vjLorM1tMc9Q2GHZn6+G55iUbfpa9Ks9zZjqOaeF587IJEgfEWmnlJXKsR1j2HyvdNrClk31mUCsDQTKa6kFjbSWjsbPJ1yO+Z+IRdOGwzw+HwpibYYasJqS8RH+U3rBFhItsIGoBj06ANSOJL3aDIai8TwhvAYwsyZqbiF91PSnVvRlfWWPYsSvyWg1cxwqg0Zqt1nGaY1ByAKLJQFGGy6q1wjFncwZGgD6MQGjzMDIiCor45CFOKPURYpg4MXCZmAytjUFKThd9Cvizt88V0bRrMOfOJc7LROPMMCrAZlahL2tWlozI7bVY98BWPBNHQHVmguGqq/nJAe3cNtldzGb3HRvW+aI+Q7x44jM0/i1A0c5GrNuVJV5fMv0fXVjxFVYZimgBZ4OZZkh8aWjPSqVko1YSE9//21pSDT5my0+Fwo7fPZfD1phxkSx42qPwkylnDhE90Irwoxp/FoqlSiES6XSZrvygaf86XPRD23va8yQRTOe3Zp51zjx6bvw24ZW3ILIVR24f84Dszcy4ts5bRQovUOFemAmPPLuS364IqkhLQoyUTCzpTHLmhqiuPELoitpKqkjvm/wI9VvDhhkSZ9MTH23j1ghFw1ZPx/blLd7Zb0Yk6jmhY/2WDSEkxTaCLgGV0Wax2dxZLZUwsWDjKp0nx6+Yy5oD/MLxBR5dyZaeCR8Wp/9vl+ThF9EY5mWSG5RkZdziMHaW8OxmgJ2aGxYMsAdGvfnm0f/7kJjWSN2EKKXp7GiKbJHHEO30FjZCHCO3iHlT2C6E8kG4iJackQOiX4wXyVIvSirDnxZal3SoqGyaNgLg60dJvuvB7YMhk7ncvuC8D1gy2R6zZrAtrokmVmEJqBx8t22pzla4oVq7qTnQlzpQ8wvlRk41P1c/FN9+EvrZfy+0QFW+r5ryCJkRKnT7IC4McEhbfsl9UdqoUbK+6qP0RxI0WOkPFvUAnEgEC7hksq5SPdRdNWhRIZqTRj2Fma5GuuTsyW/opvFqCAiEZiqszvIjJZkcKdiLKYEWopvhqu2HZOTqnyRBNVqWy95Mk8r+p3oyk2QkDsW1umBCX1/mr16/RuVlkNP2joXTcNXNgttcRYb8HJ62sRuMqtvn+jieI3vOxCBdbijevyyIqI0QjDGczHZZlhB0RTcdTzxPITk18RkAHZfJGIMZBV7CcVaQlQxM1om5uDEVrIZmZ18F+Kyu/XPjta/fcHfEqpki1GFyGldcZNbzGGcshyJhh6MUxMXPX5f2scwqpCrHz3F8owf80J1qbRg7meH3AW8HgEGHw67dnjvI7wc7lJlmk+6X21BXWATdcFOI9dwVHMSZE9GqNFGEauRK4CuBBes5vvkGvkVyS+ysz/yjNIhP5czBSmTjudkR67B3Rc5XATqCh5JuvTAD8+nsoRH00jr79lDqzOgGjOJ6Nt2q2xBIUiaL4i2pAmoBmKkqaLz4q0vRxPVibY4CVLeEy+yutaBS6CMeg9crHiFgjNSarskt3DHENxYTuTok+sYJhZVhx8+5AuzXxI9Vpn9rCzy6gioItW4dnRT6tAXlkSjEFb9fBXFgBTKQGCRiqwiFWRJ62YQ4XdM/SgYdM3VzyuG6sJYEk3FnfMU38uCtUSD2U8ovKsPUmOSXFsl+N44AiL6PCVZJPgAoGgVeKFboFfEZYaZuJJcEMh6PqAH7jLGo4F1SvC5eQgEyra8I8pJdeUWzJWaR7zYp6a6GDVKsDbqlvRutVJxN93pno/AmMyncIjuM+hQHQuvFmFLnKTAo6jYJ8aCs0Ro7YZn7i9zy0U20l3/dIALGzODuyCM51z88s0CscZ1A7EGvLOwi4TmoqdnTghclFqSaL6cnb2lk4u9YoaRNBUUjOhYCYUWEwoy0yKgVxNYwrohZO11zCh7IDQyBuPFLJ9acoCr79TIU+A53fSIyD8l8sCG1S2fnWvBMHgN5lbXtdHF5NQ9TE4LyF1cPxmKsubi7HauNVZU7p5IufStgHAN47ZG6Ji5csekRzNy4ajY+/OmhxKLWcy3QaZfSYhl3DTN8hTyLoiJI1AXdXsqqC32+KSiS1mQmisQEq3qdmDx2snB7NgCPRx1Ys8tgCkmYNpikY87LPJfDjBRmsxmwnG1xzDC58wg3wyYNFQuvwgrYSdsUDucIG1NGzJ+clSyElNyyg/f84ggEys2l6v04DcOnnTkMyo79alVPSLEzO9UzlOC1ZesWm/QCCuVwOFbyCanAG618gIN8wdLpZGuvrYsvQh60kaB4MLXgC3oyfuZVGtNkHzVBN46LDVe2w8VEKdnxAKpRCB9JanELMlkp6cXs10WIjMTZyioVKrkHcNK3RMiFjMMUBXM1TQ1DXNtNDFgFP5kkIoHfE6ha+WrrcBMDryYGbPh4lIfDJxrK7BCSsxnTcBNUA3ooIpjxVUhTuGwq/z3q9lBWEMwVz46AaymbjsAxtI3qJmViqIGlqayUlGCrgGyAitVwofaKsPZYiMFtbtrEPFfJlxfviE/HFfOR92vNpmnWjGqM9kb4ajOl68ozWLK4ebAC6byKlwBwnyAqpSHmt3IHo2Cxlwtfz5T3U9bCIIFjsechYXSZLNYVbOmJmvNaqzlKYZlLQ9qBMS2Str7AaiGNkq0SHRifcV2QW3sKZEsHnTYsMxyH9vBS93lvpQyRjnWoCCKrG7ui3dDYkiNV8eGDIj6K8isEJHf3N4AQBzVtoGJFqNX0NVsi1xjIaVUHWCdgRry2Mo/BYASAjE5V7nF7YbZqphR0hDfi+ty0lBaYBSmoPrSIXAZnQYqhL/1JRZtnGEPkvP1HE7JuQ1K144YhYWnSo/hMj8tTpHSrgo11QJfsqA8UFUKLHleo7SXqURQkCmzS2NR85R9Mvbd7qZIG2p7L+hKD+ozG7tf7bFjECkRDSJ7ewYjEohJNZCzZmNjqGRVsi/NScAmq6KKASRWtkoteAFWrioxe7k2umn90wGrbKhB4ewEybDkYXdgVUNFQo86VMnB5ksAe/jMU8MR7WhP+doo8BFT+IOjIiCSV0RWKA0TaXrjxmozn6WDDlXBsToxVDPT5CEj6kv0Sux1HMX9+ZQ0kcN2DT2C3uu9+GB6yhPNRbDvVCZVQzWI62llmvX2UC4t3W3IIF5SuBaDYRset+937bo6sumv5Y71T4a8SFqSEKal93ehFAMpWB2XxOwY3tPlsAOUVUuljSxYYNWrj8xUnw8dUxshEaH5Tg2V8ERavBdpSaCaGhvfrmEDaDGm1S5BZ9ewxcPUOOFhYarUUe9TLzqIKg8Q4hVjAbDjNr36foS1wz/+9RAWW+QsBvarLfgK5H4Rga3oij0C1SNH3O5CW3k9NSMg2eJZCmtCNqHbVw0ZhMRiZbAkiej93u/fNs6SFt4fZwghaM1uywRnWqoQnquwo+MML8IOg4YobHksRPKI9VEUoVUY68Omn1/Rk4EbgRC48Tlia9q1BhdPdeznZa5KqhFPOAuAfdBzPQ1gEpLbO6Vr5+b99GGH89VGy3gONpAxE8fgqJbxSFyl6qHCBStVqTriQ6quAMHvz0xNN30UB5HIPhvCYmxGrszH4MqqWgcaVgslwdqUuXJaQgCycFqD1l9Vjalohvzwn8sU2WYRz3dNkLfWBN1aBiD4MXIntrKmypKyoKtM0UWeHoJMT3QljuFLTVDbYJLNH+QVMJCp7IJWeAvTcY8wHWUDtLKXg1YjZ/mGVv2qbZGms81uQLa9OquQUEpBdBPzGl7tuZgwiPoaXm0PdBWGD2k6g6yQKmC4BX1CSNXX5A5qglinP/nh8e62OEIHIt+u3YO5Mqu9MWdrOKVPcECsLb0DhFoNpIZgRJ6v2PxnLZPSvA9MB4078PPAUhTVPVTUYC0HLswqBpIXOzCBlikGcfg+LSai1oKISHGnlsopTCvHdKnTGVIWvwVcCCerRUF7KNWFF5UYGOdIi7uY4ipZR0HysPe7RH7zWIq0qYgr4DG0qNBVeYZQTjCFfawsQivUNF606xTExLLwVWmD8Z8TEqxpPxwJjGMlbQNV0/B6q7NVQGNLIKrO7KLKutgsmDktxuyo/RBR0RQ27Tjz4cuuFHmVYm9jdnKAANoHpnyCqS2GVrjDmF1fDUyhu09jhXG1BUrBtHlj2Ocdmg0Tg6Z36LWiuDZhxGpR2FfupQyIuDqxs11NSOdKzmBY7EKRFg5cLfoZWXdL1qUxURpPgXM2i0j4ZRY6SQ08keSQZ+I+0AUtTN2t6BGueqGkL33eEZE0axLRHCkpFtBFElAtmzC8iaAw+cMAhmQouBDjJcuFZ4O28ZJ5iFoi1pGd9f0gHaZLiXSKscSi5OjoxCh9NQ9H0oPTslo5pP64ieBsx9jp5R4siO95/hKIcq0cwhLzCH0QLwjMwKTIztbg6lAwuLBc1IMROiOVVNPdaEwapZvI1V4zhXbRknKyeD9vPmNTzuDTdh/3WWJRM+krIb/9tQV4UccbjND7MqFVAhkX0NYfueMK2lxU3N8UeMf8dwfB1bJsn6HTLnE8NTQhAKzb1Cgyqitm6TqUlqxzVRxEmPdpWqEbWjOnDFy6DqWJE+NaYeTGKoaxT8WFOrHbHnn8Duf318NumqXhcFztwG40doS7q3GvOB7A7nxqW4gwYZAqjheVr0Xq8CMlkRjoYYs1fOPf7z5EAQX3z8OKETfxTPQjgvpYy70Bq2L1lo50mqWyvpinRposi7mTHOEV92JuLSUFvYq9vQFxKuYr+jSMgD8yo3ukZsEqQCnF8b0fIqpNA2YFZYOG9QpQ0KTDVXlvaGISJMIctxsLjG4hD8brUsmvakpBsuKOmqtgHpagQ4lIXMgxSR4pebdea9HOm6izf0Vk+dunx7gxRZpDLL2ex5RihnpyciDUqCenJJPVfNQYg2rGTgdf0DHvRW6WKWotUSN4m3KepgB5Kz3mhx+N2tHOeWkuWcmbGIlSVc4nKUjeWtTi8yAiVmqP/fganuBEZeTqFUSdHIjF5Y0lvaG6xulduQV40QRee8RdO1zg5eWAl9Dgis5H3a/2VCBJyiQR2imfRyBIp/tPFXiZLfouWfrKxR8FSBZ8tCWCw+pBqgmGn8gSi6SBKgvT+nDHcZY4SBZ7d2G1Nx1RI5/6qm1c6hHjBPGqz40GzJiyOD1Fw3DuJ+rXhFsSxohx/ZljE5OCagGy3+Y9OBGEvBbn0B2vRMMTbkWo5QNjKdhOiTyYmiacf7AgKzpy9S5kxWA15bMiK3VeOC/xyKKqXOTyipAFRa2phoqpUbxYPh/GCjNQlfNPmZkgGmubcKhcQu5lZpJjoi0zU1Q8HwkMKixXTwMu0xMgiYx3WT68EX1vgloSzQQi+NhErofJpNRYYMgiJtQyNlu9tJw6+qoYi0bjO80pO76GjniN2SLyGi/T50zsQ1g4ERZuQVg7DN/55RAWhkxl+7jagq9g1j7pkej6wX7v1pfhd6QmfSmPxe/dXCqZBfmwHgU3W/FVmIM+ZLs31BLgI4D6OMd/HtDF0ERhUMWl4sgmGtVFq2/HYM9FnahRGrMuizq6mfM86SFzG/42fNTg5qJONPSrwAijqhavGLNjjQ2YhbR6aalFQSnIlNWmRIjXJEM1Jp/rtzUJJ6UT2EShHAAbAiWZ+DuP7IPpLcr0FVqd89EBuFQb2T3rcSdjjV8wFkh9H3iZUcjSNmxJwfTJ7CDG6Ye08Fcjs+qIE7umIQql3G4bff4dGUUrgUV8JGxWcjmYK4QfP10IQXBXJ2LZNHaWCLGFo19L+wwsdGmWXDsRs6kQ6qE9gRIU7Y00tDjYDL9Td9QLh9Z6IY6kyavbJS/9lwE66vH9vA1Yzd1+C6za4en+crAqj+ik4zn3iz20FQ4l9fluGm6tGLqiiqFyjL9vTffob/IinQfHKhphkhVXgUnZEB5tiUhYcnsfOdFo+JmMtUiacQdHxxOfUW79HKuES5N5iMJt7D1WdfQHqGI1Z5bn/jnorSS7zDmutb1vwJZXyekFUVXHTJwpcQ/bWVwjRsHqr8WAXt1JkdfmRJYlGhpYAbk2+80YQ9Jgnpl/thFdEYrcUzIKuBITLCYQTO5LTHTQUrkXw8pujq+wrt0sYgLsnw9SiVnQNYisQKukadE2hPOjV/WegthSXPHprBUapct1mJYqa80xPigsQKK0t2LAj4QCPDmWnRoshSZCgDniCWySVdAyjWLWBRUau5kUZJXNWbDErh7/L0ioOF2fX0we6HfyVKPxJdL26edv+Tzskc/TDs93ejVA5Qh+A6p+sQlQUans0lnb3SXB6lCZGNzG37oYPXBlqoJtQVQYvjJVjvlVRKUmWGoSsiAqZ/ScgOszabF0RLdMzTfjELyXnFltnhwLqCKyK1HuXtEjcO2EihaUnlngFENzEyE8+9NeVo0VanPIzlwnDCPXqsZS5SKRd8elP9HibgI5y4MequLvAn8McYb8itXUxwKqpOFEe0IqKYccD45q98CuUREVr7Zaqhk1unCRRZpSsL6vxXJ148T3b/a3j7e0A01HPwdZmZ0YwklldpoSWpmcHZDzGmUFYJb3yFnmqAUzqS1z1ELQw3cp3n9FvMXkQXTI2WQCLmyip13ZDbikj3OcgCuao1FRtI3/h8pczWzGFxkUSA5TWa6wC5vQKKnrLthlE3bZFti1wxj+5WAXDuODe9T2q+Nxf3yBEKYAC2CbAIulWfZD8/VxV6x0cL1YYZcrfEX5fjsVjYVGs6Vz6tURdE8SEmtOoZz0xjBZuWWHdnpKQjcWDKlP8kyM62MJvFNzy6+u/kjQ1Eko6vLJTRkyilXrkVGMhhS2kxETjNnGMxqYFCaTM9J68vDcvY/hmiiPnBBEc7D1GG6kPC1Dl9O4k3Im4itTYRTspvdHwW4ZWHTmyHyY+F91xqAF2aCKcuCipEcJmkr6xXghIVD9rovTRrmXFUutUsfpvyAxVTbMqTZwkqIsDckGxDW26NHXKOOBHR+x3KyoGsil8YrdOdMojQQ88GqPuBnijmVcRo7FV+Y1e7P0NDj54FxqfYIEaP5WrJ4tCF39kf74sYwbCSOZHB9e5rq6iKysNzPEG01Bhx+JvpQ0k11mK9Iy80U9PFYCThWRQncJxYqqeasPWEYTCr/yce/+R+sjBEOJKxQ0IWLRhXzzqMEcw7KeSP1yU9VDch8tiZCpZMSygTTyJJHcVs2MCQO3JC4S/Usl9uUbRILpLz+u9tjYH601JwzEM8J9lw7f3Djmxzzqd7C2eIE5oixFyakaE32oxtSA4H2ZCqplTo6jNK30F2Vk1ulYLp+Ii+MWLJYJJzip8I4cvVZZXExthjFSP+tS+FpmESaXeJRZmEQ536qCvVkMO6MXZeUUlKqLQ9SNv6EwL3hOYu2MTAuUaQBfjViIUzRm12CtcrqSGNzurBtxHXuUeVqyUd2Rq9M9B1TDMF4ykkBTI1fDMCJGuu/OF27cBVVnC+hn4+G4mQDfjbdSUZjSYTUxC580vHzvGYkCBrjMSPJwxnxPfMBJEcAr/CIQtm3RjL8W/HJtrAh2Lmx3mJBENlCmXMKEIsO99EJKAyeW2guZ0RRSsdqwJjcPFJjDty+mLTMSt1lP5AReWyxYaYe7/esBL+KEafLRr/YEMxJbNdHfBLvQGgsS0pH4YNM2THCcrIMr/1Z0qgNrJa/xQcbK8l6JBZEa8zDAP1bvubh0VElByZd8Zx/MQmgukunw7HnCaGQU9nOMh/q9EIGjnzYBBbr0n8PC4mLv7MIfqvG3FjYsbo7GylvpH9KIT7fSaz9ICpfq6CqKUFvkWVtYqKE/9wMSbgSuIifiLu+cWwsAU4J4Z0t+DbiG2BhC4G6xnFpt7lDNuSI38MDqaSG2pD6KKLu/PWoc4cjckd/xEKuwjxuCgxlvLKMKpet6YDqZOGCt7jKcHNViDElW1f+oospXqDhz1LB3a8aQmuLTQ3A3fNOmbk6S50yfRxhqFp7ydYb9XY8xa0ksnidzurHcqjiSM49f+x6N1tdjCFlOXn1a55vwVu/L02VzB2clNYKJobRlsrYkH5Hdj0oIqrYQzsDL4OG1mzMZoJkRXW0vk3ODo9cCcXJufTkQdFi6MyVuo/2B+oSsuRNITeRWlCYS4KebYGnP1JCmEQmc+2xj97YR0A4H/pf0vzCq/hfWttjG/or+FxAuIO9ajwnAUoB1cVoAYAnmO5zKmHAu/2uzprGCf8XviMWMeDZrfh6qTbCpGc+UbvYmjLn6jw1nrGIATkRRzNeJtaESmxTgxjZyc/0ykyylbu5n/EwFpVeEbNn39r4In+nJ9yaJ3kwUooYcsaDVJk0rC3l/lKgeERWreUNTZ9Lqyj9qXQAZ+lYB/sGStxG+PSdkkbwFYxSsBuG+eI7xqngLcaMHGruKpqhZ/mnpKwiIVPxsjvzYUs0vxzGulDcBU9QqJyVZ4jup+Sg1eYysGTAbPvo2mchAF3oNhRFQX91wzBpDf4JSTxnMTs0Aq7erQiMDmNsJj4UvNXHx5e/DUR1hMea3NjT4YEtGNzYmQjHc16m522SMdjjzvx7IUk6dbiP96nAc+XCQZVNKR0bbujWRmwN6Mmn2T7tJNm4uAVGbNRMolm7NfPQWUOpsKIhowzAE/HHiJuSGZJTIuLt8mQ0MkZXSjs977dTmCUY/56wd3AiGyCWfrBpxywhzPKmF2Ff4pMYmwnDeipUOT3ehqMdvk1Frvk/dIDzCKsvyLx7ED1kbhoZSFbdE40RP1ZfuRRge7A7X57QqE+Thi3vne1NWSMbJj/oneRQX+3qKIHXAtPcIJvbA1PsIsdPGLBnLx6zziqBh9Yc9hJ3TQMNWt361ypYvyoRRepfHSeos9CIkCvm7N7rDq98wQOya20smQzjZLw7fIAv1OJelbXiOGo5FSQLHZ5nJJuFLr7YEzfiuQdYKuNEylZlTbyXhKs7LMBR6ePWLItEaTPyRiM4novOdVhzcGNTJjx6cmbMELVHEuOYs9UUsKp4z0syqVWNqniFYG0VZbagmsaK5oeBOR97Hlz17Pz4czP3Lqn8U9nloe89H3a/2MGY8HDDO/ArOrY6x/Wye0M/pASZajSyFeFGqIftSMV39+ZWriQEQANpiUilCNcT4MznHahvtoHk8Yq0EGSFR8JKeJI41blgBcpUbm2DtTx86l2COlCeWIJA2KAA9uUx8QUDGLfpynBIcDmkz4AC9ITh79eoHt2K9J6haxymGgC4NBilaxFlBDdiM6N3n9cHaMxPLvqsft1W4sT5MqvYsedGeJelaxxRc+GmzpDXl2z3m6HiS0r99QowaGGPyOX6yEGLi7CyL4CzG0nZPQO1TV5cJiBFXE6PekRkeuRJhjBiyLeEIZy4l7uTBoDGJgt3BlIbaRGK4j8ycbzWSyImYrKWAsBd9mWJDMJPLhazyYNAcM/Vsg6r1RpOm0I8IMY6Ur5t3RDts918PRLmPCXhnVZofIr+PT6ssIWCH5d0usw3Xmf47a/KjUIhpFUKBLcHfwvYIObrWkNsW1kTsaxlHqvGJXDV4lGVVL93dLRPjaJgIsQR/u9MjaDiJebXXIES44kCuEEpTBcdjr/SlzBgEYvEYSa+BoLwlh8edzFgBVEchxbsYJUJqZdwAtNK2BIZV627SWIGRDwlhDZ5EbwSpsTf/GwVqiFipMaobVA0/KdQ7Q+cHiyWksaj4dRyOJm5aXfdd0fgTYikWdoJHW2ifT4K2nGUUfCQ1zMPMKCKWSagthFhIVjCV6aSrZSAaasdwu/DUr5MYiQ0xcohEpjxlhHYzMZWOSclRur+bTvg4LGoUFxLmfgAKScOlqIgNQoS0wKj+RXIV44OZ99eFUTu89V8ORhFYlFJ4v9rTNcmDBz1nhue2rkmEZqjRB/iRk+bVPcPn7j7EWyS8iLfkod5Htyh+MtjUoRryEEJjR4Vz19pZUvQGGUKhpZX8ivwWgenz+I9W9n4LpC7payQQOTGtpkIfS11FEwiOC4NGoa6QMbhWEZFMEt7RkniEylpOTGcX1jfycrVm2oFWyT7qp0kHDoRXpK+sabiai9PxUcDXkKwX9go15f1uYNLahwptNKjM4jllI0DQywymYNeDRPR+WNCNUi8hNpy9lLNnFJGPmtWl9SKFKguIoGXySlo+o48caIFeiRpzpD1Yuo/HYNw6ckwIWwulfSBDMt0VuJ8HzgJbGhjZobsK3qgE8zANevS39qUnUw+XuWP2YlN2pzprTXBlnrUlQwLrAtbEVQLrspQNIdwI3mH6PxKy2aTAbCcFJs1UXEEjiFWmz4U0Y3WSmvPNLlEaLdmaCrpWIiy1YZhLFN9+QWvKKm7FuF8TR2e/i+7jvXwCtj0ms7kBsNnLATZSsJv3GlebeK9hAX3Oi+C9NhfEoQLXJxXmK8Vrv2XGEsDC8kZuT+pPEe8ttxenrx3CMWy0eF8fn8jDn7FJkoogBB5K8UOKl41RGWrqHTJWWYg3AFFejS1AlMyL6l6bSQoXX18SbYjGEu9Wkl4DkGXzSIlQ5OOztEkSJVAhw9yhRlG6eiVsCTuy1XwrpemYS4iBCh1G2JDN4fJT3llbJEUywuuz1BbJVSonBiqr1exaW3QqHs6XrczdI1n8Ox7ktAe56G6Xsn82cgybWV8I0ylLQKy1hIO5udFWmCJIPSON8M8FbbmmC/N7Oi1jMa+NjmStj+jw3OVrwT7h1k6dlvY7IQRWMr5jNQ5ai9TIKtrqD1GxcmR9Qls1mHVs2Ze/qDotaaqkYbUUecu1nBEwcF/+5Kx/7TG44B2+/q8HuYSEubQeCh/yuI+GXMJxs8fCuwBXtHGkwjAQU7xnBik1gfBY/GUDq6csRawEGRlUK7HV1t/QobS+ly0so0k4gx2bgm8UcWlzFMpEI0+wjLJLJ6bOCJqfteYP91ZyNhXZ6WRB4eZ4/NLOBZI5MVjWlncT5So0SafK7hNKY3W40G0xyB5G2sKpFPX9OxBatuFuhGgviM36PYP2e2YnyNHmf7/tIVk02qMhMguTxGzFKSC5cYbhaZwsq8UwqWgEP/Vyw5uKGFiuqLCNjJl55nmXp4fsSZhxTifS0VUwYOTEaNfGf5ctgUocAOpawewb5HuTueNZFfE7TSp2G1nw6AhFVA3k1FmGZmhCMcimXzClvZ9PgnJIs98sRh/cUCkaQqksEVxrnqiwnrTUQ3wR4IMgrMBOOFyXmqe26CcP8hXRobhcuR65CdfJvUXKzuQABm0ZwQy3coNt3COmeNXeBwh7PmMw2RsY1vMXs3MDDbciPWYObZ4ELKXpmdWjGXiaKO6CdY9E0Q8HdTtSA/z1QF0MlvoCdeG0h0cTklvrLyQ745qQUUSUOCD736V2IoZVCgyRAF+zi+U3inwq/WVPTo3N9X1hGQILTXtK+0yUmjUNQ2YdcXK31VJHVSRuXDVmloEai8ZsBDtMBEfa0jD7iH2wJ/0sgiKsXJokxquMOAR/xcZJlCbcjxaGCeKGFbKTqnn1HzPKxcuibpEwfPQc4gBhUXfKPj77uYDfGsj3V2FA2xkEgKN3d9xe/7uK9kOzgLZQX9zHkH1h1pyArRrighshR65s4kWnJUlMm4vP5mhBDVGYlY6nXjsgBwFbRWdC4pVYU6dYrCy0pQClvBUfkDVHlD6A3wyuaBiorLbLQqxsNzstxMilIfRDxxjCatXawplJsYKxYYFBFYXhqSCdzhbROPIyUDpAmFNTkyySm8M6I1NzG69GODtJtziHMW0IIH89CBbppZTZr/ZAMC2JmboxMTM6BGMHMA5Kj8qsMa3aMzyImFnJNJYH6tLwzLc1oQN1JRc3iORGHBwJ+pZs+GA2jQbhocqYRyTP/8/e1+ZGjmNB3mUOQLyPeF9zl/05x9i7L0RlSo+yG5gGzMbkutKNBrJcVS7LIhWMiBfxfjIHe/pfl7n8FZk2KwUY+wqZICOgzCXnP/r9U/HjaYAMlh4LCyG2Rd808za1FXSAE+FXMm9zB8rMn0UmbiQGoxFwZZyRYx8ZB0uDK+q4Q+ddHT0OVtkSXejkRaAHoXv+uVA9uOiUNyO6xfhAZvBEmO0MrAg+QLbxuVbvYg0xTlsSK6Jzg6zwVdc0kr9YpSHwFjHbj0ZCqQS/zAibYZiMOPbAyvd33PxbasT093xnXiNRZDg94LmNMFMZqKTnbuPCozwNfd5SA7oIoanifeUeeI0ytNaBS071oGZxLwyWQFTN7852JZAhbpy2UwcNGxmEOAMto3NmCMzUtXv8UlNZorvOwl2qzwrYPMJKah+8jFlhx+2hpOY5xBngfdVKX1Lcfhypqb/cBz+I1PLjkFo50x2vcrw7b9kfR2pkF/lpZFstZ6KF74YtRbjNsc0MSelArZ5tSpRtbOzRpqTu3rizJeGVK6nup0f+oiQL5VGCiLiy5QUYmUHej+BVqTMJ64Jj7Pr2ll12M7GM1AWHuZBXdjWTB8gCKfhACFbDkolfuXXVNGwenNGTxFCwPpyIAjpfJBFws2+qlKZ0nNQHJphraDqnbp28NGFO7lz0aymWL24EGLwtRTZdiGoX4TXAIii1Lb9l9RWmrFv/EAT732PCpNIMr2zBLkVScnmHVsEiFJ2gLisTXbCVFRHr6i4TjlcRWhMjK60A2iVDtgfIzgFMG2w4Tq4L71UuBuu8F4dNz8wbUOUgIUFXH52GHzB3TXSNIe5qbo9bd2KtCsncNnspdqOqLbOXij+oavbSzGDQN/8FqT3F5UhcVn4ktln5Y0giND2Uwme60DV6SaSmWGLAcg3OD1tlR4iZrqxXWbYQi3tXyRgpKUibiE73ASnMgB7C+Q2ejo2rGodZ7e+dpCfIOY62KvtmL5VHikWl8fFPjmhipJlDvDWTM+eNH87khbRacx+LNKMNHYnWcZTMypcS3KXIGFrHTfGRGa41QAAIef68O/UFyN36OQMvKKsrdbl2QSgTZeMLmXOoktU7USuX20KLw4CdHJjFDAc3zeP/rYu82ES6uV8X4xh05aotV+Onz6RPfOsJUOIIfsfcPND4DubLMIPNXlvS5aVXGcyUf9Mq5hihOM4ks8ZdfCM+0zBXt/mv5iUdA0FLwTgbOXfOOi/T0pWOwYqyNXQfFFlkT3RGrrorbcxuHWarNukHHi1VyCwvuCGaDqhBl4xWLjdfOC/Tkuyc16yasrA4ZfUFqOXQPLZRtVWjNAWSPK8n0mcSYOYw/WGoVp8G1VTOObjX3Mrx7kRRP06A5V37ask7py6p1CTetY9o+z9xuVefugQvUE2Wjj9iDW7emnk0F2deyK5w602Yv8kMxoNRZPGqU7zgl42048nUGS8Lce+uE1EDFsKLU8VZFsIrQuvNyJ+4C8PcQkGfiLtmtQCBqc4PaYSXOMVdVTjYKProoXFI7/wRUi3HSnMdmzl00RyDlbFVcqRU07Oa9PjwXhJukQveos5z8aNU1oqnebwntTrHs9fobflSmP+67iIZquBkXUnFM4ceYb5k3ZdeDvHj/oAI0ZpYEaC01eLleTwjeylHDBc2B+/KuDe78dNOeitlULHg1V/it2iYg+dNvBjtTdykA6hpsM8OoDCkorBMT3rMUTSm6qohDRRzvEb1t+VVfKkL+HHk5BtIrs9DTlxh12TIfLdnePJEMK/FAdtaD1lJVRR4/ZdNsQjqJ2eK0mV88mGtFw1fnV2oqyusHmNWZK4oufSMXwShBMPCSFlmk47fdVExoBW0pEUmBN5S0q5zsaU9DLye2Yisuat7GWXzI6WOBEu+xt/yEz1c0x5D6vaqIroaFKcQ9H78/ecdfW/o3kSt3lhCg1OYzL+REKdT7LjnvwIRi2ElJK8q4PSNgqJCYN8vT69+sFEsicvUSS6GLU4vVDkbfdvBROYRnN8LjVEamRc42z0c+b8HxNg9UGfPmy0lkqa5eLggpSzLJEyqaq5CoydZo2CmiQtlGuvQY6nVAel3QbH7abO1QNIw3AWhMV83lUUjQs4h0hcS8+FQF16oLHfpPd1iE1+pSAsNU8UQeGj2BIugcZyS2D4XgsUf8mqWumeDYMe7PRDMW0O3b2zo9uPEHHHs0WGg63B3ogHW7DKj9GI9kvCHzT5pTcr38HakCxlWlfRtD+GPQi4dZSnNktYf0VYh/PekChYaamD2bx0uP4rOfECNZnpbpXonuIhFFi9JILgHiAFu+bDpMvFjg0elRa30FoXW1eT9gaAMg5nK7H0bd1dXmGEpiASjUUJKpYuriyOj92aJlwLLzVAmlbpVT2SkHl9XXKS6oChszVIJEHdLvcmCtNxT8mHjWg9CxfPj+4PQDhGRCe4Zwjp/WL0DVRNR8reWpvFQ03r3uqbsdHlF1oH4JXLG4b7UTx3CCFkCJ5xv6/ep/MczcIJC3uj28nhpxRI3UYPCxN5Ji7tSW/0a0vOtxUXuA1DRs30+7swJxsgkZHT/vAiXuXUElgJJbwjMc6hDvPJrf1ENF4cIPYpD1IBBkarJ24InHt0FP47GcgMhxvRxcCyysmXhZ+UeLdHhDY751vpHImVCcc6dpo2zv+1E/7mri3poN7usAa7aXQonQGuy1hQSuXqUpP0iFsyHO5zKzyfRrSTmSBBqAVqeGd6BVgkWoBWDnKzBhjlv5RrRdcTjVE51pTt9IvuFQQXyrHNw9pa6p+HtnD68ssAC3sCJCqEfGETYuI94SCKzFqB19hxvxFlqifM7OZBW0+2Ptbb45cV6el/1zpzp09IVaHlmYuGujjP0DbR+H3dl4mXu5GZxj02qjuSo6CKiWbF246RCnm2PxLlKiGUU/e5RGaVww6ejJtTIrDSfdcDeS7KFoJd+P/VDqdMEcUEmdZH2XJiVjxbmLVX6JMbKr5y6k7OSGkjXd7jRNov8l9rMHwdL9Uc9nM1Uflvk57s9Fnlzu76MuQ3fqR4eh6iUGQwVjD56eJxsF9+V9NFDLl19Vyh9kFfaK+xanOc0dUloXZ/m34OblAdZqaSeFz2bAb6OI1Xfx6NAoV2DILWUWrfyYGJeRC67XFfCmrGmceWxpt+jnp/IVeVIT2F9XcElA8Khjm6EBxGWSLh7Ym+JgxBTE7LOeF7PRj4wG3qWxvTcJ1Kfg8E/nHivzIC/FueCrrLZ/UkLSzAXBRbfGflxwreVx1K3tVA7VaO5IvXXASxGngEPx9WOlnRvJbLE5Bm74WsrmI0SSKxuLc8sFTzX59mzxNGjqI8vRSG5Le++PVi21gu5jtnRoBxtgaoGBiUVe+epvCx5jXmwkGUqsSajy21VztHDmX7K0nVCHe5F8qpV26IU5q0U5g64BfoDt/71b6WobG3XUXtM7tLmQMR2RqJSeqS8p/WiE1NWPRC1LHsIKue6mbNAV8sta3Sb0Gl6VyB+o8V9To1nSsp5nXveaYLmdMA9r6Scyd/4s9iYH3NLlTigctvBY3CBlyK/SbybsyY+Md0BIykrsuQxoyY6TFDijZ4Ce0NMXRJ8JG0d5+WFqGKZvQBfnYWzRkZIo3ZWCalDSjLfA4cNWPmxbBZk1TNdKZMXjtg4lvDi1YkFMV04LKvC7Kn4blX+BoglUAiRrfdWDNZU7sZJR+jilySxwsN8Vcn1bZWQqYQvVKiPKuPK3GaH/6fGCWmIA8UdVs1Z6bML84JVkMxo6p8NlIO04Srh4QxhyseZ5wx2UI1H2qlOU4rZvurG7XkP4D95D2fCwz1EON/tEf7+qbyHEzcRQ8M6sMJigS8o/0XUPCevbixJ5XryV5c1HgF8HzV/YC+pjbkP/4OAS9zUEXKsMLcWo+Uoq+7syBB1W2y1RZa5UFrqzm+a6420iDyjgVwBDQtLrqxvHqafAbdsUIIt9B1RYH240Fyoy4Hl5t/iLakwWSxYRI6rPmcJopIygxe+uOKZa1B4yrPi8IcnD/14qrwa8bURzkFG1gcPszrhbIzlFGQQJb75uoXdcjA8volnORsei/U3sltkXjgvfa9x9FyXqMOhvpRmR8ljBDFCwKsvUpkAWSMcIpzDIr7S/D+ZXno/Yc7nyy77Ow3LUI/zGt5KotVwPs+GjdbSmJFKN69FWrm6313gFtKVRB5c5YXufleMOE8mm+cQdyc4QP6Ar3/9W+IsxHld6uPdiXV/HHxNufu1NBx7lcRja2f110cbdBKeQkOzXQkWJbFsBV5efle/kT6AV5E/P3mHmMIexpD/35GXB0GKbYkmmKU7HKTR0rTIqpYSN0/NJb/Uh4W6P9pDSjneYm+9an7SOUHymZDLQsFuS1qanpMbl/HKPZdc0ovZCuZ1/hDnVEebOqxwr+fsA8iLvxG7f5bXCmNwvj9aRbZ7ZK/IBnht8sm1flFc/O5SXXKELQm8CIduUfn4vn4DoiIrVCJmhAYapEpWliUWCykWX/RCnycYX8NLk9mkwdk5chKhGfHAVsQh4rvysYAbVW0dKqTZJO6KYwvj256VAxoVvHRjHzCienWPifEDVSVcrcnd59fwKJfen6jQEUEo0X2ISm5EtaVBETtC4T+vvicErg1RwTfVYv9ziIrJ0GvZonuzdM0vlc4GEPDMxHLpxSCP1kQhuumAWn1amaJ2O9x/EbSyQepK8qpNfG/vxzmOXc+Iyvf2Xm4kUc/tPYYGZMmm9gEO9qX979jJM8XvK8/FQ6NSXz259ok2rVlgJEyXufD9gGQfUXYW2v3nPVJI7UhQYsskhgglKqq+mNxoKEn4ne95qxVeg0wtSefQqcVGTgsuwHcLNcBZndOCd9SF57Qh+P0rb5sWl9uyJEODEL8vIp5Q8AMGUc274wJbcRx0egm9O85J6lvMjzRaTzqMZPe1fkegbnigLDdiCWzjrv6hhkTngXDFeTxHlw69kil6dINwWnXtMIYKdaCqihxWcba63zODPFiN+eWkXBIceFDUHLCdfO3nIq4dgfH+cYhLUA1xHe/2IC6dsSIvF1jqXgERShU9LPoeHaTsOmKGPRoTHz3VZ1Vbnx10fXjgQ7LoFxXtSIwwSarWg/8eGSwUqJcfakVydZ1QKN4h/JdOWCadPmeVoeJm4Y+ZZZlnPZjrCQc+0vju0+URlM2v9qawKNlo7aKWJTcrsCiEULDdKNTH8bfy6973RwWiUkSl71QF9XzwXnxVVmoDTgr0E8ySAE+5JJI6KWpJAHZzfClGvNTAUtHd0e//a3CKh5VaAs8byYenV1uJPIrKC8sQSqbbGsaQqiK6EscsphZijUK8XO4prgTdKwte7uGd9BUwQg94aZGFO550hlsJ15U4c/5Wzrsk/pwv1EC7geefUxXt3aTnLxZbpT1kj/PrsKW9bBDb4t35qkfmsxr5x4GV/QFW//q30Nnc8gJWx7tzqvPHgRX0YngVujeklDxfaXpvQAVi7ohKPWyxYy0e4jnhZsvRmCXDGnG1bOusdZzIfw+4Uh+lfvZ4XzkM/irjeIOqSLNL2OK2owfB6FZhRWx4RLKeGpD0RsMYFuxI66Z3G0aShPhESZAxSkMsQD4fVx1YKUUt6VdS1IEVW9zQn8kGC0XJqfVJz3qPwaxWprbY3Y8vyoaNc4RaFL6sPpelAAuiop2YIoI89MAuiK56oHHqiqnIUBTfT/f+BnBVVsEMz4mnO7jypIh+zGHP7CvRiOBrMHB4ltLKGLMD5vygqpCqnLuGB1XunIGdVFXYIBIn8wy7swdnkU163NT7GfguToKFq2KBcUu5UucBQWZZ56owtOBWK0nFcRwgt4Eov0GUbwFRO5Le7dNAFEd43Hj1eHdi1h8HUdSCyh4j0z9eEi3i16u6Gpjd5M4kfSJpMbnLOwzgSm3wwl96rbyk46tnYXRJ/soOHZFjl46Il/sYvccNs1bvHhQvgueqRZTLqkVgurUfpiu1aMIP61nM6mH2gQhrElImdd+/1+2rpcbSiKvjnly06qs+WizWoFH1ovp2QuNUrW9dsPuV1I7Hyx0+oht5LQ6Q6PWynuCQSw4pE3o6hZDZymoJW3yPwAIaavh2naZz2J208vsmDo9jJ90ZIcqjws90rPcihUZIu7Jt6PC8VdtaFbOSsudP4fS6R5m6LYsWGRVsuzK0HjGZu8RDmTmqLrUMbbwGAuNOVZzGd5KYoQw3IBPBe3TnNXhIg4OVquMxG2UqydlWc91RD/DwfUYtthuY7Zk7jD/A7IRiZR2Y1R7r+z8IzNiR7dU4rnDwYnxfbVosq0sL6U/NUCyfvq1LPlSI3NasXyQkqg11hZJxHv9dQqLmMMm5BTfrrdeVXDa5LiaWNkkeNIw19QVmZS0znDP879z6ZoLXHKwZzuEfiMdYZ7powF6vK0WcY7hTaHPDQ8ia4FbObYgcPuLYux1fCa/37MD9QOSYKRLhG03wEA49u+JkWhQuM5bKgriEelcjR2BtkkZoHzXBSnqJ8wK0PJ2ZrvX4++JJOTVSHvh+Tu7Wcav1Q5FaLql2xqS0BpRCOdUehyKqWiJKj7/cjJVlF776UguzD2G5qWmeXsnbBC8jWNhbskONLNRdTXTas/LMhL0RloyACmmHWOYjSKPyTGbsEMv5+CmgkLUNYuGGWHumC3eEuuPjIBbC72iH+W5PtIPEHR0vkducWcwDCM3gc2u5DnMSGCjxaE4RZtQ9FU693OM4l6zsl9exGh4E1xt8pWfZd+2HwnzgjyA/wVluhF422Kgg73n5nhbuIn61Zvx3+3/Z4Cxcnn7bSZLxcQmZzrIK7yqI8Jn+czl2jx2pT5ynhdWavhVmsz6viyCVYa7fGkzUJPkj+6ZpHA80uNDzh05DnCpbBBesRL+NN9UI7t5yLtfghSLjYgq6/nAPqhITFsO1NnZavxwWNy/YzPMZ3vMg7OwZun1f6otDwCvfiW1vXkzIRNaMUzBJ7FYkbWhIuLzv/WgdPQWXeybgv1u1NSTTISbfrNofli5BFe+dts80QgtLBGpgVpnf48QWYo96xFDxh3JJ8GTFslrVyblqlxHsS6zBLhCXg61CbP7Yr3pEEx1UAnSLfZa41oLhqMD+GGW0tNJWizEpNzkOH2iFPCgdLEDg7Gzb5wGTG8LtMdfviJr/PAjH2cxZ89154/44hCOh22q2M/u0KA3CZOLKZ97vmyXTu7dq/s45i37n/qSv1noOWptCWPg15PWdTqnHZ2+d8hdFzUsNlBmHeh6X/oLNGsPAUgtLxrjd9kLDZ9TBQ/pQlXf3Tgvn0hhZLAcYmZe/I+UYs8kNJbc59cPwmA9VZgqeBt+48+WYY6QD0TO6kNziIiywTPhxFCFbbBKPcrJ3o1HgZhhrBnR4hfo3yt0Pu+/T67UyI6uJlMHEWETKaJSZSMUCwUxLsATlWZI07737SpmBnfyXMWXHo3qWoZ73k/WDEbyyFvuAI27yuoYjvXwFWSaqD4xFxexrBbVxgWG74k+/uMP3xZ+aHpfvrKC+zWHOg9mZF28Yp+UdwQUd5uW9/zBkwK2iZ3DpHFBmgvbsU5MhxrPvbBe6ui4h7THY245gef04cEU+qfvX3Xq8O6ndnwZXnHzTcMk7JxdZIqhpkNUnF33JiuBcrL6kEiu+SpWWq/jIPU2rwHKi5nRx/03JEDVKs0rl9boc9z4k4/SavDfw0vJ75v/YwTMkaN3Bk5UympkEGGYQ9ZPbaU34InYc0e1AERMxfCLD5cdlYdavpOYBhyq8MVwBTnwbemqRvNjBLJm95SblMClNnAp6u4hMPCTZ81XZvbGH2kLIyS6Z9fa9MRH6wjTKWR938VvefeA0KFkVf+EAy2Bx/d4oUDOrM36vMFkQD30Ezk7aSZDLanVPg3+J6arhrskrt8UIsWyzx2JDy6C1mvJZs/LSEXahr/tBszUB1WlEiSafr4a+alSlhK/WfHJd4FdFZeP1VUJHlRukZ88f20AF6FWrnl2mpKGVTK+7fVun4nYotiOF/hOhmN1BqPPdHjfYPwnFiOLebbp4c9ZFLykSXZ0E+cMPlhmg7zd8hpv7rfyskMzncf7+5O8BZ3qmKFX4uUNpS0QNoVpTGclYsrNeXE4P1gsUFaJfDL+wQYjMiK8YLUekK+MF3z4Totmso/zy2NT5bXtz7CtLJn0H0Q6E1TEMH7dsxgLRqhzyyuSQVgREMthSOPnc6WurS18qRB6AfrYBzciR2zJm1AO8hBFLgJe59bn9kwBTkb9Iohcg846b+X1MGLm44oWPOzRzY4kesefKcpWhH0uVVBnrHI2IlZN/IaiPVQx1znf3xwLQnCogqR8OzRDDFCyO+Wo5FDzYZQ4T3dCMvcB36SJkmIOb0jL/HOVx2l9yKHiwuCAbKJu/aAZj3RvttR2U7Uin3wfK/s///X8BAAD///HN1l47mQIA" +if (process.env.NODE_ENV != "production") { + let str = gunzipSync(readFileSync(".testdata.json.gz")).toString("utf8"); + let json = JSON.parse(str); + json.config = custom(config); + testdata = gzipSync(JSON.stringify(json)).toString("base64"); } -export default {testdata,testconfig} +export default { testdata }; diff --git a/assets/packages/brief/.testdata.json.gz b/assets/packages/brief/.testdata.json.gz new file mode 100644 index 0000000..f32c118 Binary files /dev/null and b/assets/packages/brief/.testdata.json.gz differ diff --git a/assets/packages/brief/dist/index.html b/assets/packages/brief/dist/index.html new file mode 100644 index 0000000..6613ab2 --- /dev/null +++ b/assets/packages/brief/dist/index.html @@ -0,0 +1,48 @@ + + + + + + + + k6 report + + + + + +
+ + + + + diff --git a/assets/packages/brief/index.html b/assets/packages/brief/index.html index bf48430..34525f0 100644 --- a/assets/packages/brief/index.html +++ b/assets/packages/brief/index.html @@ -7,7 +7,6 @@ href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgNjcuNzMzIDY3LjczMyIgZmlsbD0iIzdiNjVmYSIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNMy45MDIgNjMuODMxVjEwLjI2NiIvPjxwYXRoIGQ9Ik0zLjAwNSAxMC4yNjZWNjMuODNoMS43OTNWMTAuMjY2eiIvPjxwYXRoIGQ9Ik0zLjkwMiAzLjA5NWwyLjM5MyA3LjE3MUgxLjUwOXoiLz48cGF0aCBkPSJNMy45MDEuMjY0TC4yNjUgMTEuMTYySDcuNTR6bS0uOTM4IDYzLjU2N2g1NC41MDQiLz48cGF0aCBkPSJNMi45NjQgNjIuOTI2djEuODA5aDU0LjUwNHYtMS44MDl6Ii8+PHBhdGggZD0iTTY0LjYzOCA2My44MzFsLTcuMTcxIDIuMzkzdi00Ljc4NnoiLz48cGF0aCBkPSJNNTYuNTcxIDYwLjE5M3Y3LjI3NUw2Ny40NyA2My44M2wtMTAuODk4LTMuNjM3eiIvPjxwYXRoIGQ9Ik01NC4xOTMgNjMuNjg1SDQuNjhsMTYuNDgzLTM1LjE2IDkuOTI5IDcuMjk5IDEyLjk1MS0yMC4xOTJ6IiBmaWxsLW9wYWNpdHk9Ii41MDIiIHN0cm9rZT0iIzdiNjVmYSIgc3Ryb2tlLXdpZHRoPSIxLjg3MyIvPjwvc3ZnPg==" /> k6 report - diff --git a/assets/packages/brief/package.json b/assets/packages/brief/package.json index 6f06f08..2789cb7 100644 --- a/assets/packages/brief/package.json +++ b/assets/packages/brief/package.json @@ -1,5 +1,5 @@ { - "name": "xk6-dashboard-brief", + "name": "@xk6-dashboard/brief", "private": true, "version": "1.0.0", "type": "module", @@ -9,6 +9,7 @@ "preview": "vite preview" }, "dependencies": { + "@xk6-dashboard/model": "0.0.1", "bootstrap": "^5.3.1", "byte-size": "^8.1.1", "humanize-duration": "^3.28.0", diff --git a/assets/packages/brief/public/boot.js b/assets/packages/brief/public/boot.js deleted file mode 100644 index 37658bb..0000000 --- a/assets/packages/brief/public/boot.js +++ /dev/null @@ -1,188 +0,0 @@ -const overviewPanels = [ - { - id: 'iterations', - title: 'Iteration Rate', - metric: 'iterations_counter_rate', - format: 'rps' - }, - { - id: 'vus', - title: 'VUs', - metric: 'vus_gauge_value', - format: 'counter' - }, - { - id: 'http_reqs', - title: 'HTTP Request Rate', - metric: 'http_reqs_counter_rate', - format: 'rps' - }, - { - id: 'http_req_duration', - title: 'HTTP Request Duration', - metric: 'http_req_duration_trend_avg', - format: 'duration' - }, - { - id: 'data_received', - title: 'Received Rate', - metric: 'data_received_counter_rate', - format: 'bps' - }, - { - id: 'data_sent', - title: 'Sent Rate', - metric: 'data_sent_counter_rate', - format: 'bps' - } -] - -const overviewCharts = [ - { - id: 'http_reqs', - title: 'VUs', - series: { - vus_gauge_value: { label: 'VUs', width: 2, scale: 'n', format: 'counter' }, - http_reqs_counter_rate: { label: 'HTTP request rate', scale: '1/s', format: 'rps' } - }, - axes: [{}, { scale: 'n' }, { scale: '1/s', side: 1, format: 'rps' }], - scales: [{}, {}, {}] - }, - { - id: 'data', - title: 'Transfer Rate', - series: { - data_sent_counter_rate: { label: 'data sent', rate: true, scale: 'sent', format: 'bps' }, - data_received_counter_rate: { - label: 'data received', - rate: true, - with: 2, - scale: 'received', - format: 'bps' - } - }, - axes: [{}, { scale: 'sent', format: 'bps' }, { scale: 'received', side: 1, format: 'bps' }] - }, - { - id: 'http_req_duration', - title: 'HTTP Request Duration', - series: { - http_req_duration_trend_avg: { label: 'avg', width: 2, format: 'duration' }, - 'http_req_duration_trend_p(90)': { label: 'p(90)', format: 'duration' }, - 'http_req_duration_trend_p(95)': { label: 'p(95)', format: 'duration' } - }, - axes: [{}, {format: 'duration'}, { side: 1, format: 'duration' }] - }, - { - id: 'iteration_duration', - title: 'Iteration Duration', - series: { - iteration_duration_trend_avg: { label: 'avg', width: 2, format: 'duration' }, - 'iteration_duration_trend_p(90)': { label: 'p(90)', format: 'duration' }, - 'iteration_duration_trend_p(95)': { label: 'p(95)', format: 'duration' } - }, - axes: [{}, {format: 'duration'}, { side: 1, format: 'duration' }] - } -] - -function suffix (event) { - return event == 'snapshot' ? '' : ' (cum)' -} - -function reportable (event) { - return event == 'snapshot' -} - -function tabOverview (event) { - return { - id: `overview_${event}`, - title: `Overview${suffix(event)}`, - event: event, - panels: overviewPanels, - charts: overviewCharts, - description: - 'This section provides an overview of the most important metrics of the test run. Graphs plot the value of metrics over time.' - } -} - -function chartTimings (metric, title) { - return { - id: metric, - title: title, - series: { - [`${metric}_trend_avg`]: { label: 'avg', width: 2, format: 'duration' }, - [`${metric}_trend_p(90)`]: { label: 'p(90)', format: 'duration' }, - [`${metric}_trend_p(95)`]: { label: 'p(95)', format: 'duration' } - }, - axes: [{}, {format: 'duration'}, { side: 1, format: 'duration' }], - height: 224 - } -} - -function tabTimings (event) { - return { - id: `timings_${event}`, - title: `Timings${suffix(event)}`, - event: event, - charts: [ - chartTimings('http_req_duration', 'HTTP Request Duration'), - chartTimings('http_req_waiting', 'HTTP Request Waiting'), - chartTimings('http_req_tls_handshaking', 'HTTP TLS handshaking'), - chartTimings('http_req_sending', 'HTTP Request Sending'), - chartTimings('http_req_connecting', 'HTTP Request Connecting'), - chartTimings('http_req_receiving', 'HTTP Request Receiving') - ], - report: reportable(event), - description: - 'This section provides an overview of test run HTTP timing metrics. Graphs plot the value of metrics over time.' - } -} - -const defaultConfig = { - title: 'k6 dashboard', - tabs: [ - tabOverview('snapshot'), - tabTimings('snapshot'), - ], - - tabOverview, - tabTimings, - - tab (id) { - let tab = null - - for (const t of this.tabs) { - if (t.id == id) { - tab = t - - break - } - } - - if (tab == null) { - tab = { id: id } - - this.tabs.push(tab) - } - - let lookup = (collection, id) => { - for (const item of collection) { - if (item.id == id) { - return item - } - } - - let item = { id: id } - collection.push(item) - - return item - } - - tab.chart = id => lookup(tab.charts, id) - tab.panel = id => lookup(tab.panels, id) - - return tab - } -} - -window.defaultConfig = defaultConfig diff --git a/assets/packages/brief/public/init.js b/assets/packages/brief/public/init.js deleted file mode 100644 index 6377104..0000000 --- a/assets/packages/brief/public/init.js +++ /dev/null @@ -1 +0,0 @@ -window.config = window.config || window.defaultConfig diff --git a/assets/packages/brief/src/Brief.jsx b/assets/packages/brief/src/Brief.jsx index 4e8149f..6dff805 100644 --- a/assets/packages/brief/src/Brief.jsx +++ b/assets/packages/brief/src/Brief.jsx @@ -34,7 +34,7 @@ function charts(samples, conf) { } for (const chart of conf) { - let c = { ...chart, metrics: samples }; + let c = { ...chart, samples }; all.push(
{Chart(c)}
); } @@ -47,7 +47,7 @@ function ReportSection(props) {

{props.title}

{props.description}

- {charts(props.samples, props.charts)} + {charts(props.samples, props.charts)}
); @@ -56,9 +56,9 @@ function ReportSection(props) { function UsageSection(props) { return (
-
+

- Select a time interval by holding down the mouse on any graph to zoom. To cancel zoom, double click on any graph. + Select a time interval by holding down the mouse on any graph to zoom. To cancel zoom, double click on any graph.

); @@ -68,13 +68,13 @@ export function Brief(props) { return (

k6 report

-
{reportSections(props.data.metrics, props.config.tabs)}
+
{reportSections(props.data.samples, props.config.tabs)}
- +
); } diff --git a/assets/packages/brief/src/Chart.jsx b/assets/packages/brief/src/Chart.jsx index 8546c40..b5028f9 100644 --- a/assets/packages/brief/src/Chart.jsx +++ b/assets/packages/brief/src/Chart.jsx @@ -14,7 +14,7 @@ import {format} from './format' const sync = uPlot.sync("chart"); function Chart(props) { - const model = new MetricsUplot(props.metrics, props.series) + const model = new MetricsUplot(props.samples, props.series) const ref = useRef(null); //const { width } = useParentSize(ref); @@ -80,6 +80,6 @@ const dateFormats = [ [60, "{HH}:{mm}", "\n{YYYY}-{MM}-{DD}", null, "\n{MM}-{DD}", null, null, null, 1], [1, ":{ss}", "\n{YYYY}-{MM}-{DD} {HH}:{mm}", null, "\n{MM}-{DD} {HH}:{mm}", null, "\n{HH}:{mm}", null, 1], [0.001, ":{ss}.{fff}", "\n{YYYY}-{MM}-{DD} {HH}:{mm}", null, "\n{MM}-{DD} {HH}:{mm}", null, "\n{HH}:{mm}", null, 1], - ] +] export { Chart } diff --git a/assets/packages/brief/src/Digest.jsx b/assets/packages/brief/src/Digest.jsx index c9cc7eb..a12e079 100644 --- a/assets/packages/brief/src/Digest.jsx +++ b/assets/packages/brief/src/Digest.jsx @@ -16,7 +16,7 @@ const propertyNames = { export function Digest(props) { const { summary, type, series } = props - const filter = (key) => (!iterable(series) || series.includes(key)) && (summary.values[key].type == type) + const filter = (key) => (!iterable(series) || series.includes(key)) && (summary.values[key].meta.type == type) return ( diff --git a/assets/packages/brief/src/data.js b/assets/packages/brief/src/data.js index bc792ff..550841e 100644 --- a/assets/packages/brief/src/data.js +++ b/assets/packages/brief/src/data.js @@ -2,25 +2,27 @@ // // SPDX-License-Identifier: MIT -import { Metrics } from './metrics' -import { Summary } from './summary' +import { Samples, Summary } from "@xk6-dashboard/model"; export default async function () { - var text = document.getElementById("data").innerText - var blob = new Blob([Uint8Array.from(atob(text), m => m.codePointAt(0))]) - var stream = blob.stream().pipeThrough(new DecompressionStream("gzip")) + var text = document.getElementById("data").innerText; + var blob = new Blob([Uint8Array.from(atob(text), (m) => m.codePointAt(0))]); + var stream = blob.stream().pipeThrough(new DecompressionStream("gzip")); - var data = await new Response(stream).json() + var data = await new Response(stream).json(); - var metrics = new Metrics() + var samples = new Samples(); - for (var i = 0; i < data.snapshot.length; i++) { - metrics.push(data.snapshot[i]) - } + for (var i = 0; i < data.snapshot.length; i++) { + samples.push(data.snapshot[i]); + } - var summary = new Summary() + samples.annotate(data.metrics); - summary.update(data.cumulative) + var summary = new Summary(); - return { metrics, summary } + summary.update(data.cumulative); + summary.annotate(data.metrics); + + return { metrics: data.metrics, samples, summary, config: data.config }; } diff --git a/assets/packages/brief/src/main.jsx b/assets/packages/brief/src/main.jsx index 5d93e04..0253511 100644 --- a/assets/packages/brief/src/main.jsx +++ b/assets/packages/brief/src/main.jsx @@ -12,4 +12,4 @@ import './styles.scss' import './index.css' -data().then(d => render(, document.getElementById('root'))) +data().then(d => render(, document.getElementById('root'))) diff --git a/assets/packages/brief/src/metrics-uplot.js b/assets/packages/brief/src/metrics-uplot.js index 50db282..2f4e919 100644 --- a/assets/packages/brief/src/metrics-uplot.js +++ b/assets/packages/brief/src/metrics-uplot.js @@ -2,8 +2,7 @@ // // SPDX-License-Identifier: MIT -import { propTime } from './metrics' -import { format } from './format' +import { format } from "./format"; const palette = [ '#7b65fa', @@ -25,59 +24,35 @@ const palette = [ ] function formatter(kind) { - return function(self, val, seriesIdx, dataIdx) { + return function (self, val, seriesIdx, dataIdx) { return dataIdx == null ? "--" : val == null ? "" : format(kind, val); - } + }; } class MetricsUplot { - constructor (samples, series) { - this.data = MetricsUplot.buildData(samples, series) - this.series = MetricsUplot.buildSeries(this.data, series) - } - - static buildData (samples, series) { - const values = samples.values - - let data = [] - let time = values[propTime] - - if (!Array.isArray(time)) { - return data - } - - data.push(time) - - for (var key in series) { - if (!Array.isArray(values[key])) { - data.push(Array(time.length)) - continue - } - - data.push(values[key]) - } - - return data + constructor(samples, series) { + this.data = samples.select(Object.keys(series)); + this.series = MetricsUplot.buildSeries(this.data, series); } - static buildSeries (data, input) { - const series = [{value: formatter('timestamp')}] - const keys = Object.keys(input) + static buildSeries(data, input) { + const series = [{ value: formatter("timestamp") }]; + const keys = Object.keys(input); for (var i = 0; i < keys.length; i++) { - var pidx = i % palette.length + var pidx = i % palette.length; series.push({ stroke: palette[pidx], fill: `${palette[pidx]}20`, value: formatter(input[keys[i]].format), ...input[keys[i]], - show: data.length > i && Array.isArray(data[i + 1]) - }) + show: data.length > i && Array.isArray(data[i + 1]), + }); } - return series + return series; } } -export { MetricsUplot } +export { MetricsUplot }; diff --git a/assets/packages/brief/src/metrics.js b/assets/packages/brief/src/metrics.js deleted file mode 100644 index 59c341c..0000000 --- a/assets/packages/brief/src/metrics.js +++ /dev/null @@ -1,57 +0,0 @@ -// SPDX-FileCopyrightText: 2023 Iván Szkiba -// -// SPDX-License-Identifier: MIT - -import { roundTo } from 'round-to' - -const propTime = 'time' -const propType = 'type' - -class Metrics { - constructor ({ capacity = 10000, values = {}, progress = 0, lastEventId = 0 } = {}) { - this.capacity = capacity - this.values = values - this.length = values[propTime] ? values[propTime].length : 0 - this.progress = progress - this.lastEventId = lastEventId - } - - pushOne (key, value) { - if (!this.values.hasOwnProperty(key)) { - this.values[key] = Array(this.length) - } else if (this.values[key].length < this.length) { - this.values[key][this.length-1] = undefined - } - - this.values[key].push(roundTo(value, 4)) - - if (this.length == this.capacity) { - this.values[key].shift() - } - } - - push (data) { - for (const key in data) { - if (key == propTime) { - this.pushOne(key, Math.floor(data[key].sample.value / 1000)) - this.progress = data[key].sample.pct - - continue - } - - const typeTag = data[key].hasOwnProperty(propType) - ? `_${data[key][propType]}` - : '' - - for (const prop in data[key].sample) { - this.pushOne(key + typeTag + '_' + prop, data[key].sample[prop]) - } - } - - if (this.length < this.capacity) { - this.length++ - } - } -} - -export { Metrics, propTime } diff --git a/assets/packages/brief/src/summary.js b/assets/packages/brief/src/summary.js deleted file mode 100644 index ec75b3c..0000000 --- a/assets/packages/brief/src/summary.js +++ /dev/null @@ -1,85 +0,0 @@ -// SPDX-FileCopyrightText: 2023 Iván Szkiba -// -// SPDX-License-Identifier: MIT - -import prettyMilliseconds from 'pretty-ms' -import prettyBytes from 'pretty-bytes' -import byteSize from 'byte-size' -import { roundTo } from 'round-to' - -const propTime = 'time' - -class Summary { - constructor () { - this.values = {} - this.time = 0 - } - - update (data) { - let values = {} - let time = 0 - - for (const key in data) { - if (key == propTime) { - time = Math.floor(data[key].sample.value / 1000) - - continue - } - - values[key] = data[key] - values[key].format = format - - for (const prop in values[key].sample) { - let value = values[key].sample[prop] - if (Number.isInteger(value)) { - continue - } - - values[key].sample[prop] = parseFloat(value.toFixed(4)) - } - } - - this.values = values - this.time = time - } -} - -const customUnits = { - simple: [ - { from: 0, to: 1e3, unit: ' ', long: ' ' }, - { from: 1e3, to: 1e6, unit: 'k', long: 'kilo' }, - { from: 1e6, to: 1e9, unit: 'M', long: 'mega' }, - { from: 1e9, to: 1e12, unit: 'G', long: 'giga' }, - { from: 1e12, to: 1e15, unit: 'T', long: 'tera' }, - { from: 1e15, to: 1e18, unit: 'P', long: 'peta' }, - { from: 1e18, to: 1e21, unit: 'E', long: 'exa' }, - { from: 1e21, to: 1e24, unit: 'Z', long: 'zetta' }, - { from: 1e24, to: 1e27, unit: 'Y', long: 'yotta' } - ] -} - -function format (prop) { - if (this.contains == 'time') { - return prettyMilliseconds(this.sample[prop], { - formatSubMilliseconds: true, - compact: true - }) - } - - if (this.contains == 'data') { - let str = prettyBytes(this.sample[prop]) - - return prop == 'rate' ? str + '/s' : str - } - - const { value, unit } = byteSize(this.sample[prop], { - customUnits, - units: 'simple' - }) - - let str = `${roundTo(parseFloat(value), 2)} ${unit}` - - return prop == 'rate' ? str + '/s' : str -} - -export { Summary } diff --git a/assets/packages/brief/vite.config.js b/assets/packages/brief/vite.config.js index 209ce88..bf18305 100644 --- a/assets/packages/brief/vite.config.js +++ b/assets/packages/brief/vite.config.js @@ -2,15 +2,15 @@ // // SPDX-License-Identifier: MIT -import { defineConfig } from 'vite' -import preact from '@preact/preset-vite' -import { viteSingleFile } from "vite-plugin-singlefile" -import handlebars from 'vite-plugin-handlebars'; -import testcontext from './.testcontext' +import { defineConfig } from "vite"; +import preact from "@preact/preset-vite"; +import { viteSingleFile } from "vite-plugin-singlefile"; +import handlebars from "vite-plugin-handlebars"; +import testcontext from "./.testcontext"; export default defineConfig({ - plugins: [preact(), viteSingleFile(), handlebars({context: testcontext})], + plugins: [preact(), viteSingleFile(), handlebars({ context: testcontext })], build: { - outDir: '../../brief' - } -}) + // outDir: '../../brief' + }, +}); diff --git a/assets/packages/config/.eslintrc.json b/assets/packages/config/.eslintrc.json new file mode 100644 index 0000000..0d660b0 --- /dev/null +++ b/assets/packages/config/.eslintrc.json @@ -0,0 +1,15 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": ["eslint:recommended", "prettier"], + "plugins": ["prettier"], + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "rules": { + "prettier/prettier": "error" + } +} diff --git a/assets/packages/config/.gitignore b/assets/packages/config/.gitignore new file mode 100644 index 0000000..dead80e --- /dev/null +++ b/assets/packages/config/.gitignore @@ -0,0 +1,8 @@ +# Logs +logs +*.log +*-debug.log* + +node_modules +*.local +coverage diff --git a/assets/packages/config/.prettierrc.json b/assets/packages/config/.prettierrc.json new file mode 100644 index 0000000..57ebf08 --- /dev/null +++ b/assets/packages/config/.prettierrc.json @@ -0,0 +1,11 @@ +{ + "printWidth": 128, + "tabWidth": 2, + "useTabs": false, + "singleQuote": false, + "trailingComma": "none", + "bracketSpacing": true, + "semi": false, + "bracketSameLine": true, + "singleAttributePerLine": false +} diff --git a/assets/packages/config/README.md b/assets/packages/config/README.md new file mode 100644 index 0000000..e69de29 diff --git a/assets/packages/config/dist/config.json b/assets/packages/config/dist/config.json new file mode 100644 index 0000000..6d0f5d1 --- /dev/null +++ b/assets/packages/config/dist/config.json @@ -0,0 +1 @@ +{"title":"k6 dashboard","tabs":[{"id":"overview_snapshot","title":"Overview","event":"snapshot","panels":[{"id":"iterations","title":"Iteration Rate","metric":"iterations.rate","format":"rps"},{"id":"vus","title":"VUs","metric":"vus.value","format":"counter"},{"id":"http_reqs","title":"HTTP Request Rate","metric":"http_reqs.rate","format":"rps"},{"id":"http_req_duration","title":"HTTP Request Duration","metric":"http_req_duration.avg","format":"duration"},{"id":"data_received","title":"Received Rate","metric":"data_received.rate","format":"bps"},{"id":"data_sent","title":"Sent Rate","metric":"data_sent.rate","format":"bps"}],"charts":[{"id":"http_reqs","title":"VUs","series":{"vus.value":{"label":"VUs","width":2,"scale":"n","format":"counter"},"http_reqs.rate":{"label":"HTTP request rate","scale":"1/s","format":"rps"}},"axes":[{},{"scale":"n"},{"scale":"1/s","side":1,"format":"rps"}],"scales":[{},{},{}]},{"id":"data","title":"Transfer Rate","series":{"data_sent.rate":{"label":"data sent","rate":true,"scale":"sent","format":"bps"},"data_received.rate":{"label":"data received","rate":true,"width":2,"scale":"received","format":"bps"}},"axes":[{},{"scale":"sent","format":"bps"},{"scale":"received","side":1,"format":"bps"}]},{"id":"http_req_duration","title":"HTTP Request Duration","series":{"http_req_duration.avg":{"label":"avg","width":2,"format":"duration"},"http_req_duration.p(90)":{"label":"p(90)","format":"duration"},"http_req_duration.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}]},{"id":"iteration_duration","title":"Iteration Duration","series":{"iteration_duration.avg":{"label":"avg","width":2,"format":"duration"},"iteration_duration.p(90)":{"label":"p(90)","format":"duration"},"iteration_duration.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}]}],"description":"This section provides an overview of the most important metrics of the test run. Graphs plot the value of metrics over time."},{"id":"timings_snapshot","title":"Timings","event":"snapshot","charts":[{"id":"http_req_duration","title":"HTTP Request Duration","series":{"http_req_duration.avg":{"label":"avg","width":2,"format":"duration"},"http_req_duration.p(90)":{"label":"p(90)","format":"duration"},"http_req_duration.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_waiting","title":"HTTP Request Waiting","series":{"http_req_waiting.avg":{"label":"avg","width":2,"format":"duration"},"http_req_waiting.p(90)":{"label":"p(90)","format":"duration"},"http_req_waiting.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_tls_handshaking","title":"HTTP TLS handshaking","series":{"http_req_tls_handshaking.avg":{"label":"avg","width":2,"format":"duration"},"http_req_tls_handshaking.p(90)":{"label":"p(90)","format":"duration"},"http_req_tls_handshaking.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_sending","title":"HTTP Request Sending","series":{"http_req_sending.avg":{"label":"avg","width":2,"format":"duration"},"http_req_sending.p(90)":{"label":"p(90)","format":"duration"},"http_req_sending.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_connecting","title":"HTTP Request Connecting","series":{"http_req_connecting.avg":{"label":"avg","width":2,"format":"duration"},"http_req_connecting.p(90)":{"label":"p(90)","format":"duration"},"http_req_connecting.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_receiving","title":"HTTP Request Receiving","series":{"http_req_receiving.avg":{"label":"avg","width":2,"format":"duration"},"http_req_receiving.p(90)":{"label":"p(90)","format":"duration"},"http_req_receiving.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224}],"panels":[],"report":true,"description":"This section provides an overview of test run HTTP timing metrics. Graphs plot the value of metrics over time."}]} \ No newline at end of file diff --git a/assets/packages/config/main.js b/assets/packages/config/main.js new file mode 100644 index 0000000..3b6f530 --- /dev/null +++ b/assets/packages/config/main.js @@ -0,0 +1,16 @@ +import fs from "fs" +import path from "path" +import config from "./src/config.js" + +// eslint-disable-next-line no-undef +const file = process.argv[2] +console.log(file) + +const dir = path.dirname(file) +console.log(dir) + +if (!fs.existsSync(dir)) { + fs.mkdirSync(dir) +} + +fs.writeFileSync(file, JSON.stringify(config)) diff --git a/assets/packages/config/package.json b/assets/packages/config/package.json new file mode 100644 index 0000000..8b3eeca --- /dev/null +++ b/assets/packages/config/package.json @@ -0,0 +1,24 @@ +{ + "name": "@xk6-dashboard/config", + "private": true, + "version": "0.0.1", + "types": "./src/config.d.ts", + "files": [ + "dist/config.json", + "src/config.d.ts" + ], + "scripts": { + "build": "node main.js dist/config.json" + }, + "type": "module", + "devDependencies": { + "eslint": "^8.0.1", + "eslint-config-prettier": "^9.0.0", + "eslint-config-standard": "^17.1.0", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-promise": "^6.0.0", + "prettier": "3.0.2" + } +} diff --git a/assets/packages/config/src/config.d.ts b/assets/packages/config/src/config.d.ts new file mode 100644 index 0000000..7979905 --- /dev/null +++ b/assets/packages/config/src/config.d.ts @@ -0,0 +1,98 @@ +export module dashboard { + /** + * Dashboard configuration. + */ + export interface Config { + /** Dashboard title */ + title: string; + /** Tab definitions */ + tabs: Tab[]; + } + + /** + * Dashboard tab definition. + */ + export interface Tab { + /** tab id */ + id: string; + /** tab title */ + title: string; + /** short description */ + description?: string; + /** list of panel definitions */ + panels: Panel[]; + /** list of chart definitions */ + charts: Chart[]; + /** event name, "snapshot" or "cumulative" */ + event: string; + /** should the tab include in report or no */ + report?: boolean; + } + + /** + * Dashboard chart definition. + */ + export interface Chart { + /** chart id */ + id: string; + /** chart title */ + title: string; + /** series definitions */ + series: Record; // should be an array + /** axe definitions */ + axes?: Axe[]; + /** scale definitions */ + scales?: Scale[]; + /** chart hight, default 250 */ + height?: any; + } + + /** Chart data serie definition. */ + export interface Serie { + /** label used in legend */ + label: string; + /** scale reference */ + scale?: string; + /** format used in legend */ + format: string; + /** line width */ + width?: number; + /** is it a rate or not */ + rate?: boolean; + } + + /** Chart axis definition */ + export interface Axe { + /** format using in labels */ + format?: string; + /** side index (0=left, 1=right) */ + side?: number; + /** scale reference */ + scale?: string; + } + + export interface Scale {} + + /** Dashboard panel definition. */ + export interface Panel { + /** panel id */ + id: string; + /** panel title */ + title: string; + /** metric name to display */ + metric: string; + /** format */ + format?: string; + } +} + +declare global { + interface Array { + /** + * Search for an array element that has a given id property value. + * @param {string} id the id for the search + * @returns {T} the first element whose id property matches or is undefined if there are no results + */ + getById(id: string): T; + } +} diff --git a/assets/packages/config/src/config.js b/assets/packages/config/src/config.js new file mode 100644 index 0000000..cb46a69 --- /dev/null +++ b/assets/packages/config/src/config.js @@ -0,0 +1,217 @@ +//@ts-check +/** + * @typedef {import('./config').dashboard.Config} Config + * @typedef {import('./config').dashboard.Tab} Tab + * @typedef {import('./config').dashboard.Panel} Panel + * @typedef {import('./config').dashboard.Chart} Chart + * @typedef {import('./config').dashboard.Serie} Serie + */ + +/** + * Panel configurations for overview tab. + * @type {Panel[]} + */ +const overviewPanels = [ + { + id: "iterations", + title: "Iteration Rate", + metric: "iterations.rate", + format: "rps" + }, + { + id: "vus", + title: "VUs", + metric: "vus.value", + format: "counter" + }, + { + id: "http_reqs", + title: "HTTP Request Rate", + metric: "http_reqs.rate", + format: "rps" + }, + { + id: "http_req_duration", + title: "HTTP Request Duration", + metric: "http_req_duration.avg", + format: "duration" + }, + { + id: "data_received", + title: "Received Rate", + metric: "data_received.rate", + format: "bps" + }, + { + id: "data_sent", + title: "Sent Rate", + metric: "data_sent.rate", + format: "bps" + } +] + +/** + * Chart configurations for overview tab. + * @type {Chart[]} + */ +const overviewCharts = [ + { + id: "http_reqs", + title: "VUs", + series: { + "vus.value": { + label: "VUs", + width: 2, + scale: "n", + format: "counter" + }, + "http_reqs.rate": { + label: "HTTP request rate", + scale: "1/s", + format: "rps" + } + }, + axes: [{}, { scale: "n" }, { scale: "1/s", side: 1, format: "rps" }], + scales: [{}, {}, {}] + }, + { + id: "data", + title: "Transfer Rate", + series: { + "data_sent.rate": { + label: "data sent", + rate: true, + scale: "sent", + format: "bps" + }, + "data_received.rate": { + label: "data received", + rate: true, + width: 2, + scale: "received", + format: "bps" + } + }, + axes: [{}, { scale: "sent", format: "bps" }, { scale: "received", side: 1, format: "bps" }] + }, + { + id: "http_req_duration", + title: "HTTP Request Duration", + series: { + "http_req_duration.avg": { + label: "avg", + width: 2, + format: "duration" + }, + "http_req_duration.p(90)": { label: "p(90)", format: "duration" }, + "http_req_duration.p(95)": { label: "p(95)", format: "duration" } + }, + axes: [{}, { format: "duration" }, { side: 1, format: "duration" }] + }, + { + id: "iteration_duration", + title: "Iteration Duration", + series: { + "iteration_duration.avg": { + label: "avg", + width: 2, + format: "duration" + }, + "iteration_duration.p(90)": { label: "p(90)", format: "duration" }, + "iteration_duration.p(95)": { label: "p(95)", format: "duration" } + }, + axes: [{}, { format: "duration" }, { side: 1, format: "duration" }] + } +] + +/** + * Create optional suffix for cumulative tabs. + * @param {string} event event name ("snapshot" or "cumulative") + * @returns {string} empty on snapshot event otherwise " (cum)" for cumulative tabs. + */ +function suffix(event) { + return event == "snapshot" ? "" : " (cum)" +} + +/** + * Returns true if a given event should incluide in the report. + * True for "snapshot" otherwise false. + * @param {string} event event name ("snapshot" or "cumulative") + * @returns {boolean} should event included in report + */ +function reportable(event) { + return event == "snapshot" +} + +/** + * Generate overview tab configuration. + * @param {string} event event name ("snapshot" or "cumulative") + * @returns {Tab} overview tab configuration + */ +function tabOverview(event) { + return { + id: `overview_${event}`, + title: `Overview${suffix(event)}`, + event: event, + panels: overviewPanels, + charts: overviewCharts, + description: + "This section provides an overview of the most important metrics of the test run. Graphs plot the value of metrics over time." + } +} + +/** + * Generate timing chart configuration for a given metric. + * @param {string} metric metric name + * @param {string} title chart title + * @returns {Chart} chart configuration + */ +function chartTimings(metric, title) { + return { + id: metric, + title: title, + series: { + [`${metric}.avg`]: { label: "avg", width: 2, format: "duration" }, + [`${metric}.p(90)`]: { label: "p(90)", format: "duration" }, + [`${metric}.p(95)`]: { label: "p(95)", format: "duration" } + }, + axes: [{}, { format: "duration" }, { side: 1, format: "duration" }], + height: 224 + } +} + +/** + * Generate timing tab configuration. + * @param {string} event event name ("snapshot" or "cumulative") + * @returns {Tab} timing tasb configuration + */ +function tabTimings(event) { + return { + id: `timings_${event}`, + title: `Timings${suffix(event)}`, + event: event, + charts: [ + chartTimings("http_req_duration", "HTTP Request Duration"), + chartTimings("http_req_waiting", "HTTP Request Waiting"), + chartTimings("http_req_tls_handshaking", "HTTP TLS handshaking"), + chartTimings("http_req_sending", "HTTP Request Sending"), + chartTimings("http_req_connecting", "HTTP Request Connecting"), + chartTimings("http_req_receiving", "HTTP Request Receiving") + ], + panels: [], + report: reportable(event), + description: + "This section provides an overview of test run HTTP timing metrics. Graphs plot the value of metrics over time." + } +} + +/** + * Default dashboard configuration. + * @type {Config} + */ +const defaultConfig = { + title: "k6 dashboard", + tabs: [tabOverview("snapshot"), tabTimings("snapshot")] +} + +export default defaultConfig diff --git a/assets/packages/config/test/config.test.ts b/assets/packages/config/test/config.test.ts new file mode 100644 index 0000000..e69de29 diff --git a/assets/packages/model/.eslintrc.json b/assets/packages/model/.eslintrc.json new file mode 100644 index 0000000..0d660b0 --- /dev/null +++ b/assets/packages/model/.eslintrc.json @@ -0,0 +1,15 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": ["eslint:recommended", "prettier"], + "plugins": ["prettier"], + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "rules": { + "prettier/prettier": "error" + } +} diff --git a/assets/packages/model/.gitignore b/assets/packages/model/.gitignore new file mode 100644 index 0000000..783dced --- /dev/null +++ b/assets/packages/model/.gitignore @@ -0,0 +1,9 @@ +# Logs +logs +*.log +*-debug.log* + +node_modules +dist +*.local +coverage diff --git a/assets/packages/model/.prettierrc.json b/assets/packages/model/.prettierrc.json new file mode 100644 index 0000000..57ebf08 --- /dev/null +++ b/assets/packages/model/.prettierrc.json @@ -0,0 +1,11 @@ +{ + "printWidth": 128, + "tabWidth": 2, + "useTabs": false, + "singleQuote": false, + "trailingComma": "none", + "bracketSpacing": true, + "semi": false, + "bracketSameLine": true, + "singleAttributePerLine": false +} diff --git a/assets/packages/model/README.md b/assets/packages/model/README.md new file mode 100644 index 0000000..e69de29 diff --git a/assets/packages/model/package.json b/assets/packages/model/package.json new file mode 100644 index 0000000..965e727 --- /dev/null +++ b/assets/packages/model/package.json @@ -0,0 +1,23 @@ +{ + "name": "@xk6-dashboard/model", + "private": true, + "version": "0.0.1", + "type": "module", + "module": "./src/index.js", + "exports": { + ".": { + "import": "./src/index.js" + } + }, + "types": "./src/index.d.ts", + "devDependencies": { + "eslint": "^8.0.1", + "eslint-config-prettier": "^9.0.0", + "eslint-config-standard": "^17.1.0", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-promise": "^6.0.0", + "prettier": "3.0.2" + } +} diff --git a/assets/packages/model/src/index.d.ts b/assets/packages/model/src/index.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/assets/packages/model/src/index.js b/assets/packages/model/src/index.js new file mode 100644 index 0000000..52e3244 --- /dev/null +++ b/assets/packages/model/src/index.js @@ -0,0 +1,3 @@ +export * from "./samples" +export * from "./metrics" +export * from "./summary" diff --git a/assets/packages/model/src/metrics.js b/assets/packages/model/src/metrics.js new file mode 100644 index 0000000..e0af30b --- /dev/null +++ b/assets/packages/model/src/metrics.js @@ -0,0 +1,34 @@ +class Metrics { + constructor({ values = {} } = {}) { + this.values = values + } + + _pushOne(key, value, prop = undefined) { + let idx = prop ? key + "." + prop : key + if (!Object.prototype.hasOwnProperty.call(this.values, idx)) { + this.values[idx] = Array(this.length) + this.values[idx].meta = this.metas[key] + } else if (this.values[idx].length < this.length) { + this.values[idx][this.length - 1] = undefined + } + + this.values[idx].push(value) + + if (this.length == this.capacity) { + this.values[idx].shift() + } + } + + push(data) { + for (const key in data) { + if (!Object.prototype.hasOwnProperty.call(this.values, key)) { + this.values[key] = {} + } + + Object.assign(this.values[key], data[key]) + this.values[key].name = key + } + } +} + +export { Metrics } diff --git a/assets/packages/model/src/samples.js b/assets/packages/model/src/samples.js new file mode 100644 index 0000000..98b7db6 --- /dev/null +++ b/assets/packages/model/src/samples.js @@ -0,0 +1,82 @@ +const propTime = "time" + +class Samples { + constructor({ capacity = 10000, values = {}, metas = {} } = {}) { + this.capacity = capacity + this.values = values + this.metas = metas + this.length = values[propTime] ? values[propTime].length : 0 + } + + _pushOne(key, value, prop = undefined) { + let idx = prop ? key + "." + prop : key + if (!Object.prototype.hasOwnProperty.call(this.values, idx)) { + this.values[idx] = Array(this.length) + this.values[idx].meta = this.metas[key] + } else if (this.values[idx].length < this.length) { + this.values[idx][this.length - 1] = undefined + } + + this.values[idx].push(value) + + if (this.length == this.capacity) { + this.values[idx].shift() + } + } + + push(data) { + for (const key in data) { + if (!Object.prototype.hasOwnProperty.call(this.metas, key)) { + this.metas[key] = {} + } + + if (key == propTime) { + this._pushOne(key, Math.floor(data[key].value / 1000)) + continue + } + + for (const prop in data[key]) { + this._pushOne(key, data[key][prop], prop) + } + } + + if (this.length < this.capacity) { + this.length++ + } + } + + annotate(metas) { + for (const key in metas) { + this.metas[key] = Object.assign(this.metas[key] || {}, metas[key]) + this.metas[key].name = key + } + } + + select(keys) { + let data = [] + let time = this.values[propTime] + + if (!Array.isArray(time)) { + return data + } + + data.push(time) + + for (const key of keys) { + const [metric] = key.split(".", 2) + + if (!Array.isArray(this.values[key])) { + let empty = Array(time.length) + empty.meta = this.metas[metric] + data.push(empty) + continue + } + + data.push(this.values[key]) + } + + return data + } +} + +export { Samples } diff --git a/assets/packages/model/src/summary.js b/assets/packages/model/src/summary.js new file mode 100644 index 0000000..4131126 --- /dev/null +++ b/assets/packages/model/src/summary.js @@ -0,0 +1,104 @@ +// SPDX-FileCopyrightText: 2023 Iván Szkiba +// +// SPDX-License-Identifier: MIT + +import prettyMilliseconds from "pretty-ms" +import prettyBytes from "pretty-bytes" +import byteSize from "byte-size" +import { roundTo } from "round-to" + +const propTime = "time" + +class Summary { + constructor() { + this.values = {} + this.metas = {} + this.time = 0 + } + + update(data) { + let values = {} + let time = 0 + + for (const key in data) { + if (!Object.prototype.hasOwnProperty.call(this.metas, key)) { + this.metas[key] = {} + } + + if (key == propTime) { + time = Math.floor(data[key].value / 1000) + + continue + } + + values[key] = data[key] + + for (const prop in values[key]) { + let value = values[key][prop] + if (Number.isInteger(value)) { + continue + } + + values[key][prop] = parseFloat(value) + } + + values[key].meta = this.metas[key] + + values[key].format = format + } + + this.values = values + this.time = time + } + + annotate(metas) { + for (const key in metas) { + if (!Object.prototype.hasOwnProperty.call(this.metas, key)) { + this.metas[key] = {} + } + + this.metas[key] = Object.assign(this.metas[key], metas[key]) + this.metas[key].name = key + } + } +} + +const customUnits = { + simple: [ + { from: 0, to: 1e3, unit: " ", long: " " }, + { from: 1e3, to: 1e6, unit: "k", long: "kilo" }, + { from: 1e6, to: 1e9, unit: "M", long: "mega" }, + { from: 1e9, to: 1e12, unit: "G", long: "giga" }, + { from: 1e12, to: 1e15, unit: "T", long: "tera" }, + { from: 1e15, to: 1e18, unit: "P", long: "peta" }, + { from: 1e18, to: 1e21, unit: "E", long: "exa" }, + { from: 1e21, to: 1e24, unit: "Z", long: "zetta" }, + { from: 1e24, to: 1e27, unit: "Y", long: "yotta" } + ] +} + +function format(prop) { + if (this.meta.contains == "time") { + return prettyMilliseconds(this[prop], { + formatSubMilliseconds: true, + compact: true + }) + } + + if (this.meta.contains == "data") { + let str = prettyBytes(this[prop]) + + return prop == "rate" ? str + "/s" : str + } + + const { value, unit } = byteSize(this[prop], { + customUnits, + units: "simple" + }) + + let str = `${roundTo(parseFloat(value), 2)} ${unit}` + + return prop == "rate" ? str + "/s" : str +} + +export { Summary } diff --git a/assets/packages/model/test/index.test.ts b/assets/packages/model/test/index.test.ts new file mode 100644 index 0000000..e69de29 diff --git a/assets/packages/ui/.gitignore b/assets/packages/ui/.gitignore index f37afc4..a1d4229 100644 --- a/assets/packages/ui/.gitignore +++ b/assets/packages/ui/.gitignore @@ -2,8 +2,6 @@ # # SPDX-License-Identifier: MIT -dist - # Logs logs *.log diff --git a/assets/ui/assets/download-c92a3a1c.svg b/assets/packages/ui/dist/assets/download-c92a3a1c.svg similarity index 100% rename from assets/ui/assets/download-c92a3a1c.svg rename to assets/packages/ui/dist/assets/download-c92a3a1c.svg diff --git a/assets/ui/assets/index-8d0bd262.css b/assets/packages/ui/dist/assets/index-8d0bd262.css similarity index 100% rename from assets/ui/assets/index-8d0bd262.css rename to assets/packages/ui/dist/assets/index-8d0bd262.css diff --git a/assets/packages/ui/dist/assets/index-9ce98057.js b/assets/packages/ui/dist/assets/index-9ce98057.js new file mode 100644 index 0000000..5befce7 --- /dev/null +++ b/assets/packages/ui/dist/assets/index-9ce98057.js @@ -0,0 +1,158 @@ +function gx(e,t){for(var n=0;nr[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const i of l.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function r(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();var Vr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function zd(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function yx(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),n}var Ug={exports:{}},iu={},Vg={exports:{}},de={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var gs=Symbol.for("react.element"),vx=Symbol.for("react.portal"),wx=Symbol.for("react.fragment"),xx=Symbol.for("react.strict_mode"),Sx=Symbol.for("react.profiler"),bx=Symbol.for("react.provider"),kx=Symbol.for("react.context"),_x=Symbol.for("react.forward_ref"),Cx=Symbol.for("react.suspense"),Ex=Symbol.for("react.memo"),Tx=Symbol.for("react.lazy"),Gh=Symbol.iterator;function Mx(e){return e===null||typeof e!="object"?null:(e=Gh&&e[Gh]||e["@@iterator"],typeof e=="function"?e:null)}var Kg={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Gg=Object.assign,Yg={};function Gl(e,t,n){this.props=e,this.context=t,this.refs=Yg,this.updater=n||Kg}Gl.prototype.isReactComponent={};Gl.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Gl.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Qg(){}Qg.prototype=Gl.prototype;function Ad(e,t,n){this.props=e,this.context=t,this.refs=Yg,this.updater=n||Kg}var Ld=Ad.prototype=new Qg;Ld.constructor=Ad;Gg(Ld,Gl.prototype);Ld.isPureReactComponent=!0;var Yh=Array.isArray,Xg=Object.prototype.hasOwnProperty,Bd={current:null},Zg={key:!0,ref:!0,__self:!0,__source:!0};function qg(e,t,n){var r,o={},l=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(l=""+t.key),t)Xg.call(t,r)&&!Zg.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(s===1)o.children=n;else if(1>>1,V=D[J];if(0>>1;Jo(ae,H))Neo(wt,ae)?(D[J]=wt,D[Ne]=H,J=Ne):(D[J]=ae,D[q]=H,J=q);else if(Neo(wt,H))D[J]=wt,D[Ne]=H,J=Ne;else break e}}return X}function o(D,X){var H=D.sortIndex-X.sortIndex;return H!==0?H:D.id-X.id}if(typeof performance=="object"&&typeof performance.now=="function"){var l=performance;e.unstable_now=function(){return l.now()}}else{var i=Date,s=i.now();e.unstable_now=function(){return i.now()-s}}var u=[],a=[],f=1,p=null,c=3,h=!1,g=!1,m=!1,b=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,y=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function x(D){for(var X=n(a);X!==null;){if(X.callback===null)r(a);else if(X.startTime<=D)r(a),X.sortIndex=X.expirationTime,t(u,X);else break;X=n(a)}}function _(D){if(m=!1,x(D),!g)if(n(u)!==null)g=!0,le(C);else{var X=n(a);X!==null&&oe(_,X.startTime-D)}}function C(D,X){g=!1,m&&(m=!1,w(O),O=-1),h=!0;var H=c;try{for(x(X),p=n(u);p!==null&&(!(p.expirationTime>X)||D&&!L());){var J=p.callback;if(typeof J=="function"){p.callback=null,c=p.priorityLevel;var V=J(p.expirationTime<=X);X=e.unstable_now(),typeof V=="function"?p.callback=V:p===n(u)&&r(u),x(X)}else r(u);p=n(u)}if(p!==null)var ve=!0;else{var q=n(a);q!==null&&oe(_,q.startTime-X),ve=!1}return ve}finally{p=null,c=H,h=!1}}var M=!1,E=null,O=-1,z=5,P=-1;function L(){return!(e.unstable_now()-PD||125J?(D.sortIndex=H,t(a,D),n(u)===null&&D===n(a)&&(m?(w(O),O=-1):m=!0,oe(_,H-J))):(D.sortIndex=V,t(u,D),g||h||(g=!0,le(C))),D},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(D){var X=c;return function(){var H=c;c=X;try{return D.apply(this,arguments)}finally{c=H}}}})(n1);t1.exports=n1;var Dx=t1.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var r1=$,Mn=Dx;function j(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),_f=Object.prototype.hasOwnProperty,Fx=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Zh={},qh={};function Ix(e){return _f.call(qh,e)?!0:_f.call(Zh,e)?!1:Fx.test(e)?qh[e]=!0:(Zh[e]=!0,!1)}function Hx(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Wx(e,t,n,r){if(t===null||typeof t>"u"||Hx(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function an(e,t,n,r,o,l,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=l,this.removeEmptyString=i}var Vt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Vt[e]=new an(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Vt[t]=new an(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Vt[e]=new an(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Vt[e]=new an(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Vt[e]=new an(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Vt[e]=new an(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Vt[e]=new an(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Vt[e]=new an(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Vt[e]=new an(e,5,!1,e.toLowerCase(),null,!1,!1)});var Dd=/[\-:]([a-z])/g;function Fd(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Dd,Fd);Vt[t]=new an(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Dd,Fd);Vt[t]=new an(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Dd,Fd);Vt[t]=new an(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Vt[e]=new an(e,1,!1,e.toLowerCase(),null,!1,!1)});Vt.xlinkHref=new an("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Vt[e]=new an(e,1,!1,e.toLowerCase(),null,!0,!0)});function Id(e,t,n,r){var o=Vt.hasOwnProperty(t)?Vt[t]:null;(o!==null?o.type!==0:r||!(2s||o[i]!==l[s]){var u=` +`+o[i].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=i&&0<=s);break}}}finally{Bc=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Ti(e):""}function Ux(e){switch(e.tag){case 5:return Ti(e.type);case 16:return Ti("Lazy");case 13:return Ti("Suspense");case 19:return Ti("SuspenseList");case 0:case 2:case 15:return e=jc(e.type,!1),e;case 11:return e=jc(e.type.render,!1),e;case 1:return e=jc(e.type,!0),e;default:return""}}function Mf(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case sl:return"Fragment";case il:return"Portal";case Cf:return"Profiler";case Hd:return"StrictMode";case Ef:return"Suspense";case Tf:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case i1:return(e.displayName||"Context")+".Consumer";case l1:return(e._context.displayName||"Context")+".Provider";case Wd:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ud:return t=e.displayName||null,t!==null?t:Mf(e.type)||"Memo";case Fr:t=e._payload,e=e._init;try{return Mf(e(t))}catch{}}return null}function Vx(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Mf(t);case 8:return t===Hd?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ro(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function a1(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Kx(e){var t=a1(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,l=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){r=""+i,l.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function js(e){e._valueTracker||(e._valueTracker=Kx(e))}function u1(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=a1(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ca(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Pf(e,t){var n=t.checked;return qe({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function em(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=ro(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function c1(e,t){t=t.checked,t!=null&&Id(e,"checked",t,!1)}function Rf(e,t){c1(e,t);var n=ro(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?$f(e,t.type,n):t.hasOwnProperty("defaultValue")&&$f(e,t.type,ro(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function tm(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function $f(e,t,n){(t!=="number"||Ca(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Mi=Array.isArray;function vl(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=Ds.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Gi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var zi={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Gx=["Webkit","ms","Moz","O"];Object.keys(zi).forEach(function(e){Gx.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),zi[t]=zi[e]})});function h1(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||zi.hasOwnProperty(e)&&zi[e]?(""+t).trim():t+"px"}function m1(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=h1(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var Yx=qe({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function zf(e,t){if(t){if(Yx[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(j(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(j(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(j(61))}if(t.style!=null&&typeof t.style!="object")throw Error(j(62))}}function Af(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Lf=null;function Vd(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Bf=null,wl=null,xl=null;function om(e){if(e=ws(e)){if(typeof Bf!="function")throw Error(j(280));var t=e.stateNode;t&&(t=fu(t),Bf(e.stateNode,e.type,t))}}function g1(e){wl?xl?xl.push(e):xl=[e]:wl=e}function y1(){if(wl){var e=wl,t=xl;if(xl=wl=null,om(e),t)for(e=0;e>>=0,e===0?32:31-(lS(e)/iS|0)|0}var Fs=64,Is=4194304;function Pi(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Pa(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,l=e.pingedLanes,i=n&268435455;if(i!==0){var s=i&~o;s!==0?r=Pi(s):(l&=i,l!==0&&(r=Pi(l)))}else i=n&~o,i!==0?r=Pi(i):l!==0&&(r=Pi(l));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,l=t&-t,o>=l||o===16&&(l&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function ys(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-er(t),e[t]=n}function cS(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Li),pm=String.fromCharCode(32),hm=!1;function B1(e,t){switch(e){case"keyup":return jS.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function j1(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var al=!1;function FS(e,t){switch(e){case"compositionend":return j1(t);case"keypress":return t.which!==32?null:(hm=!0,pm);case"textInput":return e=t.data,e===pm&&hm?null:e;default:return null}}function IS(e,t){if(al)return e==="compositionend"||!Jd&&B1(e,t)?(e=A1(),ca=Xd=Kr=null,al=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=vm(n)}}function H1(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?H1(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function W1(){for(var e=window,t=Ca();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ca(e.document)}return t}function ep(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function XS(e){var t=W1(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&H1(n.ownerDocument.documentElement,n)){if(r!==null&&ep(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,l=Math.min(r.start,o);r=r.end===void 0?l:Math.min(r.end,o),!e.extend&&l>r&&(o=r,r=l,l=o),o=wm(n,l);var i=wm(n,r);o&&i&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),l>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,ul=null,Wf=null,ji=null,Uf=!1;function xm(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Uf||ul==null||ul!==Ca(r)||(r=ul,"selectionStart"in r&&ep(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ji&&Ji(ji,r)||(ji=r,r=Oa(Wf,"onSelect"),0dl||(e.current=Xf[dl],Xf[dl]=null,dl--)}function Be(e,t){dl++,Xf[dl]=e.current,e.current=t}var oo={},Zt=so(oo),mn=so(!1),Po=oo;function Pl(e,t){var n=e.type.contextTypes;if(!n)return oo;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},l;for(l in n)o[l]=t[l];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function gn(e){return e=e.childContextTypes,e!=null}function za(){We(mn),We(Zt)}function Tm(e,t,n){if(Zt.current!==oo)throw Error(j(168));Be(Zt,t),Be(mn,n)}function q1(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(j(108,Vx(e)||"Unknown",o));return qe({},n,r)}function Aa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||oo,Po=Zt.current,Be(Zt,e),Be(mn,mn.current),!0}function Mm(e,t,n){var r=e.stateNode;if(!r)throw Error(j(169));n?(e=q1(e,t,Po),r.__reactInternalMemoizedMergedChildContext=e,We(mn),We(Zt),Be(Zt,e)):We(mn),Be(mn,n)}var Sr=null,du=!1,qc=!1;function J1(e){Sr===null?Sr=[e]:Sr.push(e)}function a2(e){du=!0,J1(e)}function ao(){if(!qc&&Sr!==null){qc=!0;var e=0,t=$e;try{var n=Sr;for($e=1;e>=i,o-=i,br=1<<32-er(t)+o|n<O?(z=E,E=null):z=E.sibling;var P=c(w,E,x[O],_);if(P===null){E===null&&(E=z);break}e&&E&&P.alternate===null&&t(w,E),y=l(P,y,O),M===null?C=P:M.sibling=P,M=P,E=z}if(O===x.length)return n(w,E),Ge&&mo(w,O),C;if(E===null){for(;OO?(z=E,E=null):z=E.sibling;var L=c(w,E,P.value,_);if(L===null){E===null&&(E=z);break}e&&E&&L.alternate===null&&t(w,E),y=l(L,y,O),M===null?C=L:M.sibling=L,M=L,E=z}if(P.done)return n(w,E),Ge&&mo(w,O),C;if(E===null){for(;!P.done;O++,P=x.next())P=p(w,P.value,_),P!==null&&(y=l(P,y,O),M===null?C=P:M.sibling=P,M=P);return Ge&&mo(w,O),C}for(E=r(w,E);!P.done;O++,P=x.next())P=h(E,w,O,P.value,_),P!==null&&(e&&P.alternate!==null&&E.delete(P.key===null?O:P.key),y=l(P,y,O),M===null?C=P:M.sibling=P,M=P);return e&&E.forEach(function(U){return t(w,U)}),Ge&&mo(w,O),C}function b(w,y,x,_){if(typeof x=="object"&&x!==null&&x.type===sl&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case Bs:e:{for(var C=x.key,M=y;M!==null;){if(M.key===C){if(C=x.type,C===sl){if(M.tag===7){n(w,M.sibling),y=o(M,x.props.children),y.return=w,w=y;break e}}else if(M.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Fr&&Am(C)===M.type){n(w,M.sibling),y=o(M,x.props),y.ref=vi(w,M,x),y.return=w,w=y;break e}n(w,M);break}else t(w,M);M=M.sibling}x.type===sl?(y=Eo(x.props.children,w.mode,_,x.key),y.return=w,w=y):(_=va(x.type,x.key,x.props,null,w.mode,_),_.ref=vi(w,y,x),_.return=w,w=_)}return i(w);case il:e:{for(M=x.key;y!==null;){if(y.key===M)if(y.tag===4&&y.stateNode.containerInfo===x.containerInfo&&y.stateNode.implementation===x.implementation){n(w,y.sibling),y=o(y,x.children||[]),y.return=w,w=y;break e}else{n(w,y);break}else t(w,y);y=y.sibling}y=sf(x,w.mode,_),y.return=w,w=y}return i(w);case Fr:return M=x._init,b(w,y,M(x._payload),_)}if(Mi(x))return g(w,y,x,_);if(pi(x))return m(w,y,x,_);Ys(w,x)}return typeof x=="string"&&x!==""||typeof x=="number"?(x=""+x,y!==null&&y.tag===6?(n(w,y.sibling),y=o(y,x),y.return=w,w=y):(n(w,y),y=lf(x,w.mode,_),y.return=w,w=y),i(w)):n(w,y)}return b}var $l=sy(!0),ay=sy(!1),xs={},gr=so(xs),rs=so(xs),os=so(xs);function bo(e){if(e===xs)throw Error(j(174));return e}function up(e,t){switch(Be(os,t),Be(rs,e),Be(gr,xs),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Nf(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Nf(t,e)}We(gr),Be(gr,t)}function Ol(){We(gr),We(rs),We(os)}function uy(e){bo(os.current);var t=bo(gr.current),n=Nf(t,e.type);t!==n&&(Be(rs,e),Be(gr,n))}function cp(e){rs.current===e&&(We(gr),We(rs))}var Xe=so(0);function Ia(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Jc=[];function fp(){for(var e=0;en?n:4,e(!0);var r=ef.transition;ef.transition={};try{e(!1),t()}finally{$e=n,ef.transition=r}}function Cy(){return In().memoizedState}function d2(e,t,n){var r=to(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ey(e))Ty(t,n);else if(n=ry(e,t,n,r),n!==null){var o=ln();tr(n,e,r,o),My(n,t,r)}}function p2(e,t,n){var r=to(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ey(e))Ty(t,o);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null))try{var i=t.lastRenderedState,s=l(i,n);if(o.hasEagerState=!0,o.eagerState=s,nr(s,i)){var u=t.interleaved;u===null?(o.next=o,sp(t)):(o.next=u.next,u.next=o),t.interleaved=o;return}}catch{}finally{}n=ry(e,t,o,r),n!==null&&(o=ln(),tr(n,e,r,o),My(n,t,r))}}function Ey(e){var t=e.alternate;return e===Ze||t!==null&&t===Ze}function Ty(e,t){Di=Ha=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function My(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Gd(e,n)}}var Wa={readContext:Fn,useCallback:Gt,useContext:Gt,useEffect:Gt,useImperativeHandle:Gt,useInsertionEffect:Gt,useLayoutEffect:Gt,useMemo:Gt,useReducer:Gt,useRef:Gt,useState:Gt,useDebugValue:Gt,useDeferredValue:Gt,useTransition:Gt,useMutableSource:Gt,useSyncExternalStore:Gt,useId:Gt,unstable_isNewReconciler:!1},h2={readContext:Fn,useCallback:function(e,t){return cr().memoizedState=[e,t===void 0?null:t],e},useContext:Fn,useEffect:Bm,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ha(4194308,4,xy.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ha(4194308,4,e,t)},useInsertionEffect:function(e,t){return ha(4,2,e,t)},useMemo:function(e,t){var n=cr();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=cr();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=d2.bind(null,Ze,e),[r.memoizedState,e]},useRef:function(e){var t=cr();return e={current:e},t.memoizedState=e},useState:Lm,useDebugValue:gp,useDeferredValue:function(e){return cr().memoizedState=e},useTransition:function(){var e=Lm(!1),t=e[0];return e=f2.bind(null,e[1]),cr().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Ze,o=cr();if(Ge){if(n===void 0)throw Error(j(407));n=n()}else{if(n=t(),At===null)throw Error(j(349));$o&30||dy(r,t,n)}o.memoizedState=n;var l={value:n,getSnapshot:t};return o.queue=l,Bm(hy.bind(null,r,l,e),[e]),r.flags|=2048,ss(9,py.bind(null,r,l,n,t),void 0,null),n},useId:function(){var e=cr(),t=At.identifierPrefix;if(Ge){var n=kr,r=br;n=(r&~(1<<32-er(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ls++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[pr]=t,e[ns]=r,By(e,t,!1,!1),t.stateNode=e;e:{switch(i=Af(n,r),n){case"dialog":He("cancel",e),He("close",e),o=r;break;case"iframe":case"object":case"embed":He("load",e),o=r;break;case"video":case"audio":for(o=0;ozl&&(t.flags|=128,r=!0,wi(l,!1),t.lanes=4194304)}else{if(!r)if(e=Ia(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),wi(l,!0),l.tail===null&&l.tailMode==="hidden"&&!i.alternate&&!Ge)return Yt(t),null}else 2*it()-l.renderingStartTime>zl&&n!==1073741824&&(t.flags|=128,r=!0,wi(l,!1),t.lanes=4194304);l.isBackwards?(i.sibling=t.child,t.child=i):(n=l.last,n!==null?n.sibling=i:t.child=i,l.last=i)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=it(),t.sibling=null,n=Xe.current,Be(Xe,r?n&1|2:n&1),t):(Yt(t),null);case 22:case 23:return bp(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Sn&1073741824&&(Yt(t),t.subtreeFlags&6&&(t.flags|=8192)):Yt(t),null;case 24:return null;case 25:return null}throw Error(j(156,t.tag))}function b2(e,t){switch(np(t),t.tag){case 1:return gn(t.type)&&za(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ol(),We(mn),We(Zt),fp(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return cp(t),null;case 13:if(We(Xe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(j(340));Rl()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return We(Xe),null;case 4:return Ol(),null;case 10:return ip(t.type._context),null;case 22:case 23:return bp(),null;case 24:return null;default:return null}}var Xs=!1,Xt=!1,k2=typeof WeakSet=="function"?WeakSet:Set,Z=null;function gl(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){rt(e,t,r)}else n.current=null}function ad(e,t,n){try{n()}catch(r){rt(e,t,r)}}var Km=!1;function _2(e,t){if(Vf=Ra,e=W1(),ep(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,l=r.focusNode;r=r.focusOffset;try{n.nodeType,l.nodeType}catch{n=null;break e}var i=0,s=-1,u=-1,a=0,f=0,p=e,c=null;t:for(;;){for(var h;p!==n||o!==0&&p.nodeType!==3||(s=i+o),p!==l||r!==0&&p.nodeType!==3||(u=i+r),p.nodeType===3&&(i+=p.nodeValue.length),(h=p.firstChild)!==null;)c=p,p=h;for(;;){if(p===e)break t;if(c===n&&++a===o&&(s=i),c===l&&++f===r&&(u=i),(h=p.nextSibling)!==null)break;p=c,c=p.parentNode}p=h}n=s===-1||u===-1?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Kf={focusedElem:e,selectionRange:n},Ra=!1,Z=t;Z!==null;)if(t=Z,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Z=e;else for(;Z!==null;){t=Z;try{var g=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var m=g.memoizedProps,b=g.memoizedState,w=t.stateNode,y=w.getSnapshotBeforeUpdate(t.elementType===t.type?m:Xn(t.type,m),b);w.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var x=t.stateNode.containerInfo;x.nodeType===1?x.textContent="":x.nodeType===9&&x.documentElement&&x.removeChild(x.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(j(163))}}catch(_){rt(t,t.return,_)}if(e=t.sibling,e!==null){e.return=t.return,Z=e;break}Z=t.return}return g=Km,Km=!1,g}function Fi(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var l=o.destroy;o.destroy=void 0,l!==void 0&&ad(t,n,l)}o=o.next}while(o!==r)}}function mu(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function ud(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Fy(e){var t=e.alternate;t!==null&&(e.alternate=null,Fy(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[pr],delete t[ns],delete t[Qf],delete t[i2],delete t[s2])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Iy(e){return e.tag===5||e.tag===3||e.tag===4}function Gm(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Iy(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function cd(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Na));else if(r!==4&&(e=e.child,e!==null))for(cd(e,t,n),e=e.sibling;e!==null;)cd(e,t,n),e=e.sibling}function fd(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(fd(e,t,n),e=e.sibling;e!==null;)fd(e,t,n),e=e.sibling}var Ht=null,Zn=!1;function jr(e,t,n){for(n=n.child;n!==null;)Hy(e,t,n),n=n.sibling}function Hy(e,t,n){if(mr&&typeof mr.onCommitFiberUnmount=="function")try{mr.onCommitFiberUnmount(su,n)}catch{}switch(n.tag){case 5:Xt||gl(n,t);case 6:var r=Ht,o=Zn;Ht=null,jr(e,t,n),Ht=r,Zn=o,Ht!==null&&(Zn?(e=Ht,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ht.removeChild(n.stateNode));break;case 18:Ht!==null&&(Zn?(e=Ht,n=n.stateNode,e.nodeType===8?Zc(e.parentNode,n):e.nodeType===1&&Zc(e,n),Zi(e)):Zc(Ht,n.stateNode));break;case 4:r=Ht,o=Zn,Ht=n.stateNode.containerInfo,Zn=!0,jr(e,t,n),Ht=r,Zn=o;break;case 0:case 11:case 14:case 15:if(!Xt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var l=o,i=l.destroy;l=l.tag,i!==void 0&&(l&2||l&4)&&ad(n,t,i),o=o.next}while(o!==r)}jr(e,t,n);break;case 1:if(!Xt&&(gl(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){rt(n,t,s)}jr(e,t,n);break;case 21:jr(e,t,n);break;case 22:n.mode&1?(Xt=(r=Xt)||n.memoizedState!==null,jr(e,t,n),Xt=r):jr(e,t,n);break;default:jr(e,t,n)}}function Ym(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new k2),t.forEach(function(r){var o=N2.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function Yn(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=i),r&=~l}if(r=o,r=it()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*E2(r/1960))-r,10e?16:e,Gr===null)var r=!1;else{if(e=Gr,Gr=null,Ka=0,we&6)throw Error(j(331));var o=we;for(we|=4,Z=e.current;Z!==null;){var l=Z,i=l.child;if(Z.flags&16){var s=l.deletions;if(s!==null){for(var u=0;uit()-xp?Co(e,0):wp|=n),yn(e,t)}function Xy(e,t){t===0&&(e.mode&1?(t=Is,Is<<=1,!(Is&130023424)&&(Is=4194304)):t=1);var n=ln();e=Rr(e,t),e!==null&&(ys(e,t,n),yn(e,n))}function O2(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Xy(e,n)}function N2(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(j(314))}r!==null&&r.delete(t),Xy(e,n)}var Zy;Zy=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||mn.current)hn=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return hn=!1,x2(e,t,n);hn=!!(e.flags&131072)}else hn=!1,Ge&&t.flags&1048576&&ey(t,Ba,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;ma(e,t),e=t.pendingProps;var o=Pl(t,Zt.current);bl(t,n),o=pp(null,t,r,e,o,n);var l=hp();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gn(r)?(l=!0,Aa(t)):l=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,ap(t),o.updater=pu,t.stateNode=o,o._reactInternals=t,td(t,r,e,n),t=od(null,t,r,!0,l,n)):(t.tag=0,Ge&&l&&tp(t),on(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(ma(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=A2(r),e=Xn(r,e),o){case 0:t=rd(null,t,r,e,n);break e;case 1:t=Wm(null,t,r,e,n);break e;case 11:t=Im(null,t,r,e,n);break e;case 14:t=Hm(null,t,r,Xn(r.type,e),n);break e}throw Error(j(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xn(r,o),rd(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xn(r,o),Wm(e,t,r,o,n);case 3:e:{if(zy(t),e===null)throw Error(j(387));r=t.pendingProps,l=t.memoizedState,o=l.element,oy(e,t),Fa(t,r,null,n);var i=t.memoizedState;if(r=i.element,l.isDehydrated)if(l={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){o=Nl(Error(j(423)),t),t=Um(e,t,r,n,o);break e}else if(r!==o){o=Nl(Error(j(424)),t),t=Um(e,t,r,n,o);break e}else for(_n=qr(t.stateNode.containerInfo.firstChild),Cn=t,Ge=!0,qn=null,n=ay(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Rl(),r===o){t=$r(e,t,n);break e}on(e,t,r,n)}t=t.child}return t;case 5:return uy(t),e===null&&qf(t),r=t.type,o=t.pendingProps,l=e!==null?e.memoizedProps:null,i=o.children,Gf(r,o)?i=null:l!==null&&Gf(r,l)&&(t.flags|=32),Ny(e,t),on(e,t,i,n),t.child;case 6:return e===null&&qf(t),null;case 13:return Ay(e,t,n);case 4:return up(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=$l(t,null,r,n):on(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xn(r,o),Im(e,t,r,o,n);case 7:return on(e,t,t.pendingProps,n),t.child;case 8:return on(e,t,t.pendingProps.children,n),t.child;case 12:return on(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,l=t.memoizedProps,i=o.value,Be(ja,r._currentValue),r._currentValue=i,l!==null)if(nr(l.value,i)){if(l.children===o.children&&!mn.current){t=$r(e,t,n);break e}}else for(l=t.child,l!==null&&(l.return=t);l!==null;){var s=l.dependencies;if(s!==null){i=l.child;for(var u=s.firstContext;u!==null;){if(u.context===r){if(l.tag===1){u=_r(-1,n&-n),u.tag=2;var a=l.updateQueue;if(a!==null){a=a.shared;var f=a.pending;f===null?u.next=u:(u.next=f.next,f.next=u),a.pending=u}}l.lanes|=n,u=l.alternate,u!==null&&(u.lanes|=n),Jf(l.return,n,t),s.lanes|=n;break}u=u.next}}else if(l.tag===10)i=l.type===t.type?null:l.child;else if(l.tag===18){if(i=l.return,i===null)throw Error(j(341));i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),Jf(i,n,t),i=l.sibling}else i=l.child;if(i!==null)i.return=l;else for(i=l;i!==null;){if(i===t){i=null;break}if(l=i.sibling,l!==null){l.return=i.return,i=l;break}i=i.return}l=i}on(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,bl(t,n),o=Fn(o),r=r(o),t.flags|=1,on(e,t,r,n),t.child;case 14:return r=t.type,o=Xn(r,t.pendingProps),o=Xn(r.type,o),Hm(e,t,r,o,n);case 15:return $y(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xn(r,o),ma(e,t),t.tag=1,gn(r)?(e=!0,Aa(t)):e=!1,bl(t,n),iy(t,r,o),td(t,r,o,n),od(null,t,r,!0,e,n);case 19:return Ly(e,t,n);case 22:return Oy(e,t,n)}throw Error(j(156,t.tag))};function qy(e,t){return _1(e,t)}function z2(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function jn(e,t,n,r){return new z2(e,t,n,r)}function _p(e){return e=e.prototype,!(!e||!e.isReactComponent)}function A2(e){if(typeof e=="function")return _p(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Wd)return 11;if(e===Ud)return 14}return 2}function no(e,t){var n=e.alternate;return n===null?(n=jn(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function va(e,t,n,r,o,l){var i=2;if(r=e,typeof e=="function")_p(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case sl:return Eo(n.children,o,l,t);case Hd:i=8,o|=8;break;case Cf:return e=jn(12,n,t,o|2),e.elementType=Cf,e.lanes=l,e;case Ef:return e=jn(13,n,t,o),e.elementType=Ef,e.lanes=l,e;case Tf:return e=jn(19,n,t,o),e.elementType=Tf,e.lanes=l,e;case s1:return yu(n,o,l,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case l1:i=10;break e;case i1:i=9;break e;case Wd:i=11;break e;case Ud:i=14;break e;case Fr:i=16,r=null;break e}throw Error(j(130,e==null?e:typeof e,""))}return t=jn(i,n,t,o),t.elementType=e,t.type=r,t.lanes=l,t}function Eo(e,t,n,r){return e=jn(7,e,r,t),e.lanes=n,e}function yu(e,t,n,r){return e=jn(22,e,r,t),e.elementType=s1,e.lanes=n,e.stateNode={isHidden:!1},e}function lf(e,t,n){return e=jn(6,e,null,t),e.lanes=n,e}function sf(e,t,n){return t=jn(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function L2(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Fc(0),this.expirationTimes=Fc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Fc(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Cp(e,t,n,r,o,l,i,s,u){return e=new L2(e,t,n,s,u),t===1?(t=1,l===!0&&(t|=8)):t=0,l=jn(3,null,null,t),e.current=l,l.stateNode=e,l.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ap(l),e}function B2(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(nv)}catch(e){console.error(e)}}nv(),e1.exports=Pn;var H2=e1.exports,n0=H2;kf.createRoot=n0.createRoot,kf.hydrateRoot=n0.hydrateRoot;function W2(e){if(Array.isArray(e))return e}function U2(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,o,l,i,s=[],u=!0,a=!1;try{if(l=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=l.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(f){a=!0,o=f}finally{try{if(!u&&n.return!=null&&(i=n.return(),Object(i)!==i))return}finally{if(a)throw o}}return s}}function r0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&(n[o]=e[o]);return n}function G2(e,t){if(e==null)return{};var n=ye(e,t),r,o;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var Y2=function(t){var n={source:null,listenersByName:new Map};return{addEventListener:function(o,l){if(n.listenersByName.size||(n.source=t()),!n.source)throw new Error("The source doesn't exist");var i=n.listenersByName.get(o)||new Set;i.add(l),n.listenersByName.set(o,i),n.source.addEventListener(o,l)},removeEventListener:function(o,l){if(!n.source)throw new Error("The source doesn't exist");var i=n.listenersByName.get(o)||new Set;i.delete(l),i.size||n.listenersByName.delete(o),n.source.removeEventListener(o,l),n.listenersByName.size||(n.source.close(),n.source=null)}}},Q2=["children"],Pp=$.createContext(null);Pp.Consumer;var X2=function(t){return"source"in t},Z2=function(t){return function(){return new window.EventSource(t)}},q2=function(t){var n=t.children,r=G2(t,Q2),o=$.useState(function(){return Y2(X2(r)?r.source:Z2(r.endpoint))}),l=rv(o,1),i=l[0];return $.createElement(Pp.Provider,{value:i},n)};function bu(e,t,n){var r=n||{},o=r.stateReducer,l=o===void 0?function(m,b){return b.data}:o,i=r.parser,s=i===void 0?function(m){return JSON.parse(m)}:i,u=r.context,a=u===void 0?Pp:u,f=$.useContext(a),p=$.useReducer(l,t),c=rv(p,2),h=c[0],g=c[1];if(!f)throw new Error("Could not find an SSE context; You have to wrap useSSE() in a .");return $.useEffect(function(){var m=function(w){var y=s(w.data);g({event:w,data:y})};return f.addEventListener(e,m),function(){f.removeEventListener(e,m)}},[]),h}const J2={black:"#000",white:"#fff"},us=J2,eb={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},Zo=eb,tb={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},qo=tb,nb={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},Jo=nb,rb={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},el=rb,ob={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},tl=ob,lb={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},Si=lb,ib={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},sb=ib;function A(){return A=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t[n]=ov(e[n])}),t}function Cr(e,t,n={clone:!0}){const r=n.clone?A({},e):e;return vo(e)&&vo(t)&&Object.keys(t).forEach(o=>{o!=="__proto__"&&(vo(t[o])&&o in e&&vo(e[o])?r[o]=Cr(e[o],t[o],n):n.clone?r[o]=vo(t[o])?ov(t[o]):t[o]:r[o]=t[o])}),r}var lv={exports:{}},ab="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",ub=ab,cb=ub;function iv(){}function sv(){}sv.resetWarningCache=iv;var fb=function(){function e(r,o,l,i,s,u){if(u!==cb){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:sv,resetWarningCache:iv};return n.PropTypes=n,n};lv.exports=fb();var af=lv.exports;function Al(e){let t="https://mui.com/production-error/?code="+e;for(let n=1;n{e.apply(this,o)};clearTimeout(n),n=setTimeout(l,t)}return r.clear=()=>{clearTimeout(n)},r}function cv(e){return e&&e.ownerDocument||document}function fv(e){return cv(e).defaultView||window}function hb(e,t){typeof e=="function"?e(t):e&&(e.current=t)}const mb=typeof window<"u"?$.useLayoutEffect:$.useEffect,dv=mb;function ko(e){const t=$.useRef(e);return dv(()=>{t.current=e}),$.useCallback((...n)=>(0,t.current)(...n),[])}function gd(...e){return $.useMemo(()=>e.every(t=>t==null)?null:t=>{e.forEach(n=>{hb(n,t)})},e)}let Nu=!0,yd=!1,o0;const gb={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function yb(e){const{type:t,tagName:n}=e;return!!(n==="INPUT"&&gb[t]&&!e.readOnly||n==="TEXTAREA"&&!e.readOnly||e.isContentEditable)}function vb(e){e.metaKey||e.altKey||e.ctrlKey||(Nu=!0)}function uf(){Nu=!1}function wb(){this.visibilityState==="hidden"&&yd&&(Nu=!0)}function xb(e){e.addEventListener("keydown",vb,!0),e.addEventListener("mousedown",uf,!0),e.addEventListener("pointerdown",uf,!0),e.addEventListener("touchstart",uf,!0),e.addEventListener("visibilitychange",wb,!0)}function Sb(e){const{target:t}=e;try{return t.matches(":focus-visible")}catch{}return Nu||yb(t)}function bb(){const e=$.useCallback(o=>{o!=null&&xb(o.ownerDocument)},[]),t=$.useRef(!1);function n(){return t.current?(yd=!0,window.clearTimeout(o0),o0=window.setTimeout(()=>{yd=!1},100),t.current=!1,!0):!1}function r(o){return Sb(o)?(t.current=!0,!0):!1}return{isFocusVisibleRef:t,onFocus:r,onBlur:n,ref:e}}let nl;function pv(){if(nl)return nl;const e=document.createElement("div"),t=document.createElement("div");return t.style.width="10px",t.style.height="1px",e.appendChild(t),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),nl="reverse",e.scrollLeft>0?nl="default":(e.scrollLeft=1,e.scrollLeft===0&&(nl="negative")),document.body.removeChild(e),nl}function kb(e,t){const n=e.scrollLeft;if(t!=="rtl")return n;switch(pv()){case"negative":return e.scrollWidth-e.clientWidth+n;case"reverse":return e.scrollWidth-e.clientWidth-n;default:return n}}function hv(e,t){const n=A({},t);return Object.keys(e).forEach(r=>{if(r.toString().match(/^(components|slots)$/))n[r]=A({},e[r],n[r]);else if(r.toString().match(/^(componentsProps|slotProps)$/)){const o=e[r]||{},l=t[r];n[r]={},!l||!Object.keys(l)?n[r]=o:!o||!Object.keys(o)?n[r]=l:(n[r]=A({},l),Object.keys(o).forEach(i=>{n[r][i]=hv(o[i],l[i])}))}else n[r]===void 0&&(n[r]=e[r])}),n}function kt(e,t,n=void 0){const r={};return Object.keys(e).forEach(o=>{r[o]=e[o].reduce((l,i)=>{if(i){const s=t(i);s!==""&&l.push(s),n&&n[i]&&l.push(n[i])}return l},[]).join(" ")}),r}const l0=e=>e,_b=()=>{let e=l0;return{configure(t){e=t},generate(t){return e(t)},reset(){e=l0}}},Cb=_b(),mv=Cb,Eb={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function gt(e,t,n="Mui"){const r=Eb[t];return r?`${n}-${r}`:`${mv.generate(e)}-${t}`}function yt(e,t,n="Mui"){const r={};return t.forEach(o=>{r[o]=gt(e,o,n)}),r}const Ll="$$material";function gv(e){var t=Object.create(null);return function(n){return t[n]===void 0&&(t[n]=e(n)),t[n]}}var Tb=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,Mb=gv(function(e){return Tb.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91});function Pb(e){if(e.sheet)return e.sheet;for(var t=0;t0?Wt(Xl,--vn):0,Bl--,ht===10&&(Bl=1,Au--),ht}function En(){return ht=vn2||fs(ht)>3?"":" "}function Hb(e,t){for(;--t&&En()&&!(ht<48||ht>102||ht>57&&ht<65||ht>70&&ht<97););return Ss(e,wa()+(t<6&&yr()==32&&En()==32))}function wd(e){for(;En();)switch(ht){case e:return vn;case 34:case 39:e!==34&&e!==39&&wd(ht);break;case 40:e===41&&wd(e);break;case 92:En();break}return vn}function Wb(e,t){for(;En()&&e+ht!==47+10;)if(e+ht===42+42&&yr()===47)break;return"/*"+Ss(t,vn-1)+"*"+zu(e===47?e:En())}function Ub(e){for(;!fs(yr());)En();return Ss(e,vn)}function Vb(e){return bv(Sa("",null,null,null,[""],e=Sv(e),0,[0],e))}function Sa(e,t,n,r,o,l,i,s,u){for(var a=0,f=0,p=i,c=0,h=0,g=0,m=1,b=1,w=1,y=0,x="",_=o,C=l,M=r,E=x;b;)switch(g=y,y=En()){case 40:if(g!=108&&Wt(E,p-1)==58){vd(E+=Ce(xa(y),"&","&\f"),"&\f")!=-1&&(w=-1);break}case 34:case 39:case 91:E+=xa(y);break;case 9:case 10:case 13:case 32:E+=Ib(g);break;case 92:E+=Hb(wa()-1,7);continue;case 47:switch(yr()){case 42:case 47:Js(Kb(Wb(En(),wa()),t,n),u);break;default:E+="/"}break;case 123*m:s[a++]=fr(E)*w;case 125*m:case 59:case 0:switch(y){case 0:case 125:b=0;case 59+f:w==-1&&(E=Ce(E,/\f/g,"")),h>0&&fr(E)-p&&Js(h>32?s0(E+";",r,n,p-1):s0(Ce(E," ","")+";",r,n,p-2),u);break;case 59:E+=";";default:if(Js(M=i0(E,t,n,a,f,o,s,x,_=[],C=[],p),l),y===123)if(f===0)Sa(E,t,M,M,_,l,p,s,C);else switch(c===99&&Wt(E,3)===110?100:c){case 100:case 108:case 109:case 115:Sa(e,M,M,r&&Js(i0(e,M,M,0,0,o,s,x,o,_=[],p),C),o,C,p,s,r?_:C);break;default:Sa(E,M,M,M,[""],C,0,s,C)}}a=f=h=0,m=w=1,x=E="",p=i;break;case 58:p=1+fr(E),h=g;default:if(m<1){if(y==123)--m;else if(y==125&&m++==0&&Fb()==125)continue}switch(E+=zu(y),y*m){case 38:w=f>0?1:(E+="\f",-1);break;case 44:s[a++]=(fr(E)-1)*w,w=1;break;case 64:yr()===45&&(E+=xa(En())),c=yr(),f=p=fr(x=E+=Ub(wa())),y++;break;case 45:g===45&&fr(E)==2&&(m=0)}}return l}function i0(e,t,n,r,o,l,i,s,u,a,f){for(var p=o-1,c=o===0?l:[""],h=zp(c),g=0,m=0,b=0;g0?c[w]+" "+y:Ce(y,/&\f/g,c[w])))&&(u[b++]=x);return Lu(e,t,n,o===0?Op:s,u,a,f)}function Kb(e,t,n){return Lu(e,t,n,yv,zu(Db()),cs(e,2,-2),0)}function s0(e,t,n,r){return Lu(e,t,n,Np,cs(e,0,r),cs(e,r+1,-1),r)}function _l(e,t){for(var n="",r=zp(e),o=0;o6)switch(Wt(e,t+1)){case 109:if(Wt(e,t+4)!==45)break;case 102:return Ce(e,/(.+:)(.+)-([^]+)/,"$1"+_e+"$2-$3$1"+Qa+(Wt(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~vd(e,"stretch")?kv(Ce(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(Wt(e,t+1)!==115)break;case 6444:switch(Wt(e,fr(e)-3-(~vd(e,"!important")&&10))){case 107:return Ce(e,":",":"+_e)+e;case 101:return Ce(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+_e+(Wt(e,14)===45?"inline-":"")+"box$3$1"+_e+"$2$3$1"+Qt+"$2box$3")+e}break;case 5936:switch(Wt(e,t+11)){case 114:return _e+e+Qt+Ce(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return _e+e+Qt+Ce(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return _e+e+Qt+Ce(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return _e+e+Qt+e+e}return e}var tk=function(t,n,r,o){if(t.length>-1&&!t.return)switch(t.type){case Np:t.return=kv(t.value,t.length);break;case vv:return _l([bi(t,{value:Ce(t.value,"@","@"+_e)})],o);case Op:if(t.length)return jb(t.props,function(l){switch(Bb(l,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return _l([bi(t,{props:[Ce(l,/:(read-\w+)/,":"+Qa+"$1")]})],o);case"::placeholder":return _l([bi(t,{props:[Ce(l,/:(plac\w+)/,":"+_e+"input-$1")]}),bi(t,{props:[Ce(l,/:(plac\w+)/,":"+Qa+"$1")]}),bi(t,{props:[Ce(l,/:(plac\w+)/,Qt+"input-$1")]})],o)}return""})}},nk=[tk],rk=function(t){var n=t.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(m){var b=m.getAttribute("data-emotion");b.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var o=t.stylisPlugins||nk,l={},i,s=[];i=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var b=m.getAttribute("data-emotion").split(" "),w=1;w=4;++r,o-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(o){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var gk={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},yk=/[A-Z]|^ms/g,vk=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Pv=function(t){return t.charCodeAt(1)===45},u0=function(t){return t!=null&&typeof t!="boolean"},cf=gv(function(e){return Pv(e)?e:e.replace(yk,"-$&").toLowerCase()}),c0=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(vk,function(r,o,l){return dr={name:o,styles:l,next:dr},o})}return gk[t]!==1&&!Pv(t)&&typeof n=="number"&&n!==0?n+"px":n};function ds(e,t,n){if(n==null)return"";if(n.__emotion_styles!==void 0)return n;switch(typeof n){case"boolean":return"";case"object":{if(n.anim===1)return dr={name:n.name,styles:n.styles,next:dr},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)dr={name:r.name,styles:r.styles,next:dr},r=r.next;var o=n.styles+";";return o}return wk(e,t,n)}case"function":{if(e!==void 0){var l=dr,i=n(e);return dr=l,ds(e,t,i)}break}}if(t==null)return n;var s=t[n];return s!==void 0?s:n}function wk(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o96?Ck:Ek},p0=function(t,n,r){var o;if(n){var l=n.shouldForwardProp;o=t.__emotion_forwardProp&&l?function(i){return t.__emotion_forwardProp(i)&&l(i)}:l}return typeof o!="function"&&r&&(o=t.__emotion_forwardProp),o},Tk=function(t){var n=t.cache,r=t.serialized,o=t.isStringTag;return Mv(n,r,o),bk(function(){return hk(n,r,o)}),null},Mk=function e(t,n){var r=t.__emotion_real===t,o=r&&t.__emotion_base||t,l,i;n!==void 0&&(l=n.label,i=n.target);var s=p0(t,n,r),u=s||d0(o),a=!u("as");return function(){var f=arguments,p=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(l!==void 0&&p.push("label:"+l+";"),f[0]==null||f[0].raw===void 0)p.push.apply(p,f);else{p.push(f[0][0]);for(var c=f.length,h=1;h{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))},$k=["values","unit","step"],Ok=e=>{const t=Object.keys(e).map(n=>({key:n,val:e[n]}))||[];return t.sort((n,r)=>n.val-r.val),t.reduce((n,r)=>A({},n,{[r.key]:r.val}),{})};function Nk(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5}=e,o=ye(e,$k),l=Ok(t),i=Object.keys(l);function s(c){return`@media (min-width:${typeof t[c]=="number"?t[c]:c}${n})`}function u(c){return`@media (max-width:${(typeof t[c]=="number"?t[c]:c)-r/100}${n})`}function a(c,h){const g=i.indexOf(h);return`@media (min-width:${typeof t[c]=="number"?t[c]:c}${n}) and (max-width:${(g!==-1&&typeof t[i[g]]=="number"?t[i[g]]:h)-r/100}${n})`}function f(c){return i.indexOf(c)+1`@media (min-width:${Fp[e]}px)`};function Hn(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const l=r.breakpoints||h0;return t.reduce((i,s,u)=>(i[l.up(l.keys[u])]=n(t[u]),i),{})}if(typeof t=="object"){const l=r.breakpoints||h0;return Object.keys(t).reduce((i,s)=>{if(Object.keys(l.values||Fp).indexOf(s)!==-1){const u=l.up(s);i[u]=n(t[s],s)}else{const u=s;i[u]=t[u]}return i},{})}return n(t)}function Lk(e={}){var t;return((t=e.keys)==null?void 0:t.reduce((r,o)=>{const l=e.up(o);return r[l]={},r},{}))||{}}function Bk(e,t){return e.reduce((n,r)=>{const o=n[r];return(!o||Object.keys(o).length===0)&&delete n[r],n},t)}function jk(e,t){if(typeof e!="object")return{};const n={},r=Object.keys(t);return Array.isArray(e)?r.forEach((o,l)=>{l{e[o]!=null&&(n[o]=!0)}),n}function Gu({values:e,breakpoints:t,base:n}){const r=n||jk(e,t),o=Object.keys(r);if(o.length===0)return e;let l;return o.reduce((i,s,u)=>(Array.isArray(e)?(i[s]=e[u]!=null?e[u]:e[l],l=u):typeof e=="object"?(i[s]=e[s]!=null?e[s]:e[l],l=s):i[s]=e,i),{})}function Yu(e,t,n=!0){if(!t||typeof t!="string")return null;if(e&&e.vars&&n){const r=`vars.${t}`.split(".").reduce((o,l)=>o&&o[l]?o[l]:null,e);if(r!=null)return r}return t.split(".").reduce((r,o)=>r&&r[o]!=null?r[o]:null,e)}function Xa(e,t,n,r=n){let o;return typeof e=="function"?o=e(n):Array.isArray(e)?o=e[n]||r:o=Yu(e,n)||r,t&&(o=t(o,r,e)),o}function Pe(e){const{prop:t,cssProperty:n=e.prop,themeKey:r,transform:o}=e,l=i=>{if(i[t]==null)return null;const s=i[t],u=i.theme,a=Yu(u,r)||{};return Hn(i,s,p=>{let c=Xa(a,o,p);return p===c&&typeof p=="string"&&(c=Xa(a,o,`${t}${p==="default"?"":je(p)}`,p)),n===!1?c:{[n]:c}})};return l.propTypes={},l.filterProps=[t],l}function Dk(e){const t={};return n=>(t[n]===void 0&&(t[n]=e(n)),t[n])}const Fk={m:"margin",p:"padding"},Ik={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},m0={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},Hk=Dk(e=>{if(e.length>2)if(m0[e])e=m0[e];else return[e];const[t,n]=e.split(""),r=Fk[t],o=Ik[n]||"";return Array.isArray(o)?o.map(l=>r+l):[r+o]}),Ip=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],Hp=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"];[...Ip,...Hp];function bs(e,t,n,r){var o;const l=(o=Yu(e,t,!1))!=null?o:n;return typeof l=="number"?i=>typeof i=="string"?i:l*i:Array.isArray(l)?i=>typeof i=="string"?i:l[i]:typeof l=="function"?l:()=>{}}function Nv(e){return bs(e,"spacing",8)}function ks(e,t){if(typeof t=="string"||t==null)return t;const n=Math.abs(t),r=e(n);return t>=0?r:typeof r=="number"?-r:`-${r}`}function Wk(e,t){return n=>e.reduce((r,o)=>(r[o]=ks(t,n),r),{})}function Uk(e,t,n,r){if(t.indexOf(n)===-1)return null;const o=Hk(n),l=Wk(o,r),i=e[n];return Hn(e,i,l)}function zv(e,t){const n=Nv(e.theme);return Object.keys(e).map(r=>Uk(e,t,r,n)).reduce(Wi,{})}function tt(e){return zv(e,Ip)}tt.propTypes={};tt.filterProps=Ip;function nt(e){return zv(e,Hp)}nt.propTypes={};nt.filterProps=Hp;function Vk(e=8){if(e.mui)return e;const t=Nv({spacing:e}),n=(...r)=>(r.length===0?[1]:r).map(l=>{const i=t(l);return typeof i=="number"?`${i}px`:i}).join(" ");return n.mui=!0,n}function Qu(...e){const t=e.reduce((r,o)=>(o.filterProps.forEach(l=>{r[l]=o}),r),{}),n=r=>Object.keys(r).reduce((o,l)=>t[l]?Wi(o,t[l](r)):o,{});return n.propTypes={},n.filterProps=e.reduce((r,o)=>r.concat(o.filterProps),[]),n}function hr(e){return typeof e!="number"?e:`${e}px solid`}const Kk=Pe({prop:"border",themeKey:"borders",transform:hr}),Gk=Pe({prop:"borderTop",themeKey:"borders",transform:hr}),Yk=Pe({prop:"borderRight",themeKey:"borders",transform:hr}),Qk=Pe({prop:"borderBottom",themeKey:"borders",transform:hr}),Xk=Pe({prop:"borderLeft",themeKey:"borders",transform:hr}),Zk=Pe({prop:"borderColor",themeKey:"palette"}),qk=Pe({prop:"borderTopColor",themeKey:"palette"}),Jk=Pe({prop:"borderRightColor",themeKey:"palette"}),e_=Pe({prop:"borderBottomColor",themeKey:"palette"}),t_=Pe({prop:"borderLeftColor",themeKey:"palette"}),Xu=e=>{if(e.borderRadius!==void 0&&e.borderRadius!==null){const t=bs(e.theme,"shape.borderRadius",4),n=r=>({borderRadius:ks(t,r)});return Hn(e,e.borderRadius,n)}return null};Xu.propTypes={};Xu.filterProps=["borderRadius"];Qu(Kk,Gk,Yk,Qk,Xk,Zk,qk,Jk,e_,t_,Xu);const Zu=e=>{if(e.gap!==void 0&&e.gap!==null){const t=bs(e.theme,"spacing",8),n=r=>({gap:ks(t,r)});return Hn(e,e.gap,n)}return null};Zu.propTypes={};Zu.filterProps=["gap"];const qu=e=>{if(e.columnGap!==void 0&&e.columnGap!==null){const t=bs(e.theme,"spacing",8),n=r=>({columnGap:ks(t,r)});return Hn(e,e.columnGap,n)}return null};qu.propTypes={};qu.filterProps=["columnGap"];const Ju=e=>{if(e.rowGap!==void 0&&e.rowGap!==null){const t=bs(e.theme,"spacing",8),n=r=>({rowGap:ks(t,r)});return Hn(e,e.rowGap,n)}return null};Ju.propTypes={};Ju.filterProps=["rowGap"];const n_=Pe({prop:"gridColumn"}),r_=Pe({prop:"gridRow"}),o_=Pe({prop:"gridAutoFlow"}),l_=Pe({prop:"gridAutoColumns"}),i_=Pe({prop:"gridAutoRows"}),s_=Pe({prop:"gridTemplateColumns"}),a_=Pe({prop:"gridTemplateRows"}),u_=Pe({prop:"gridTemplateAreas"}),c_=Pe({prop:"gridArea"});Qu(Zu,qu,Ju,n_,r_,o_,l_,i_,s_,a_,u_,c_);function Cl(e,t){return t==="grey"?t:e}const f_=Pe({prop:"color",themeKey:"palette",transform:Cl}),d_=Pe({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:Cl}),p_=Pe({prop:"backgroundColor",themeKey:"palette",transform:Cl});Qu(f_,d_,p_);function bn(e){return e<=1&&e!==0?`${e*100}%`:e}const h_=Pe({prop:"width",transform:bn}),Wp=e=>{if(e.maxWidth!==void 0&&e.maxWidth!==null){const t=n=>{var r;return{maxWidth:((r=e.theme)==null||(r=r.breakpoints)==null||(r=r.values)==null?void 0:r[n])||Fp[n]||bn(n)}};return Hn(e,e.maxWidth,t)}return null};Wp.filterProps=["maxWidth"];const m_=Pe({prop:"minWidth",transform:bn}),g_=Pe({prop:"height",transform:bn}),y_=Pe({prop:"maxHeight",transform:bn}),v_=Pe({prop:"minHeight",transform:bn});Pe({prop:"size",cssProperty:"width",transform:bn});Pe({prop:"size",cssProperty:"height",transform:bn});const w_=Pe({prop:"boxSizing"});Qu(h_,Wp,m_,g_,y_,v_,w_);const x_={border:{themeKey:"borders",transform:hr},borderTop:{themeKey:"borders",transform:hr},borderRight:{themeKey:"borders",transform:hr},borderBottom:{themeKey:"borders",transform:hr},borderLeft:{themeKey:"borders",transform:hr},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:Xu},color:{themeKey:"palette",transform:Cl},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:Cl},backgroundColor:{themeKey:"palette",transform:Cl},p:{style:nt},pt:{style:nt},pr:{style:nt},pb:{style:nt},pl:{style:nt},px:{style:nt},py:{style:nt},padding:{style:nt},paddingTop:{style:nt},paddingRight:{style:nt},paddingBottom:{style:nt},paddingLeft:{style:nt},paddingX:{style:nt},paddingY:{style:nt},paddingInline:{style:nt},paddingInlineStart:{style:nt},paddingInlineEnd:{style:nt},paddingBlock:{style:nt},paddingBlockStart:{style:nt},paddingBlockEnd:{style:nt},m:{style:tt},mt:{style:tt},mr:{style:tt},mb:{style:tt},ml:{style:tt},mx:{style:tt},my:{style:tt},margin:{style:tt},marginTop:{style:tt},marginRight:{style:tt},marginBottom:{style:tt},marginLeft:{style:tt},marginX:{style:tt},marginY:{style:tt},marginInline:{style:tt},marginInlineStart:{style:tt},marginInlineEnd:{style:tt},marginBlock:{style:tt},marginBlockStart:{style:tt},marginBlockEnd:{style:tt},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:Zu},rowGap:{style:Ju},columnGap:{style:qu},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:bn},maxWidth:{style:Wp},minWidth:{transform:bn},height:{transform:bn},maxHeight:{transform:bn},minHeight:{transform:bn},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}},ec=x_;function S_(...e){const t=e.reduce((r,o)=>r.concat(Object.keys(o)),[]),n=new Set(t);return e.every(r=>n.size===Object.keys(r).length)}function b_(e,t){return typeof e=="function"?e(t):e}function k_(){function e(n,r,o,l){const i={[n]:r,theme:o},s=l[n];if(!s)return{[n]:r};const{cssProperty:u=n,themeKey:a,transform:f,style:p}=s;if(r==null)return null;if(a==="typography"&&r==="inherit")return{[n]:r};const c=Yu(o,a)||{};return p?p(i):Hn(i,r,g=>{let m=Xa(c,f,g);return g===m&&typeof g=="string"&&(m=Xa(c,f,`${n}${g==="default"?"":je(g)}`,g)),u===!1?m:{[u]:m}})}function t(n){var r;const{sx:o,theme:l={}}=n||{};if(!o)return null;const i=(r=l.unstable_sxConfig)!=null?r:ec;function s(u){let a=u;if(typeof u=="function")a=u(l);else if(typeof u!="object")return u;if(!a)return null;const f=Lk(l.breakpoints),p=Object.keys(f);let c=f;return Object.keys(a).forEach(h=>{const g=b_(a[h],l);if(g!=null)if(typeof g=="object")if(i[h])c=Wi(c,e(h,g,l,i));else{const m=Hn({theme:l},g,b=>({[h]:b}));S_(m,g)?c[h]=t({sx:g,theme:l}):c=Wi(c,m)}else c=Wi(c,e(h,g,l,i))}),Bk(p,c)}return Array.isArray(o)?o.map(s):s(o)}return t}const Av=k_();Av.filterProps=["sx"];const tc=Av,__=["breakpoints","palette","spacing","shape"];function Up(e={},...t){const{breakpoints:n={},palette:r={},spacing:o,shape:l={}}=e,i=ye(e,__),s=Nk(n),u=Vk(o);let a=Cr({breakpoints:s,direction:"ltr",components:{},palette:A({mode:"light"},r),spacing:u,shape:A({},Ak,l)},i);return a=t.reduce((f,p)=>Cr(f,p),a),a.unstable_sxConfig=A({},ec,i==null?void 0:i.unstable_sxConfig),a.unstable_sx=function(p){return tc({sx:p,theme:this})},a}function C_(e){return Object.keys(e).length===0}function Lv(e=null){const t=$.useContext(jp);return!t||C_(t)?e:t}const E_=Up();function Vp(e=E_){return Lv(e)}const T_=["sx"],M_=e=>{var t,n;const r={systemProps:{},otherProps:{}},o=(t=e==null||(n=e.theme)==null?void 0:n.unstable_sxConfig)!=null?t:ec;return Object.keys(e).forEach(l=>{o[l]?r.systemProps[l]=e[l]:r.otherProps[l]=e[l]}),r};function Kp(e){const{sx:t}=e,n=ye(e,T_),{systemProps:r,otherProps:o}=M_(n);let l;return Array.isArray(t)?l=[r,...t]:typeof t=="function"?l=(...i)=>{const s=t(...i);return vo(s)?A({},r,s):r}:l=A({},r,t),A({},o,{sx:l})}function Bv(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;ts!=="theme"&&s!=="sx"&&s!=="as"})(tc);return $.forwardRef(function(u,a){const f=Vp(n),p=Kp(u),{className:c,component:h="div"}=p,g=ye(p,P_);return R.jsx(l,A({as:h,ref:a,className:fe(c,o?o(r):r),theme:t&&f[t]||f},g))})}const $_=["variant"];function g0(e){return e.length===0}function jv(e){const{variant:t}=e,n=ye(e,$_);let r=t||"";return Object.keys(n).sort().forEach(o=>{o==="color"?r+=g0(r)?e[o]:je(e[o]):r+=`${g0(r)?o:je(o)}${je(e[o].toString())}`}),r}const O_=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function N_(e){return Object.keys(e).length===0}function z_(e){return typeof e=="string"&&e.charCodeAt(0)>96}const A_=(e,t)=>t.components&&t.components[e]&&t.components[e].styleOverrides?t.components[e].styleOverrides:null,L_=(e,t)=>{let n=[];t&&t.components&&t.components[e]&&t.components[e].variants&&(n=t.components[e].variants);const r={};return n.forEach(o=>{const l=jv(o.props);r[l]=o.style}),r},B_=(e,t,n,r)=>{var o;const{ownerState:l={}}=e,i=[],s=n==null||(o=n.components)==null||(o=o[r])==null?void 0:o.variants;return s&&s.forEach(u=>{let a=!0;Object.keys(u.props).forEach(f=>{l[f]!==u.props[f]&&e[f]!==u.props[f]&&(a=!1)}),a&&i.push(t[jv(u.props)])}),i};function ba(e){return e!=="ownerState"&&e!=="theme"&&e!=="sx"&&e!=="as"}const j_=Up(),D_=e=>e&&e.charAt(0).toLowerCase()+e.slice(1);function ki({defaultTheme:e,theme:t,themeId:n}){return N_(t)?e:t[n]||t}function F_(e){return e?(t,n)=>n[e]:null}function I_(e={}){const{themeId:t,defaultTheme:n=j_,rootShouldForwardProp:r=ba,slotShouldForwardProp:o=ba}=e,l=i=>tc(A({},i,{theme:ki(A({},i,{defaultTheme:n,themeId:t}))}));return l.__mui_systemSx=!0,(i,s={})=>{Rk(i,_=>_.filter(C=>!(C!=null&&C.__mui_systemSx)));const{name:u,slot:a,skipVariantsResolver:f,skipSx:p,overridesResolver:c=F_(D_(a))}=s,h=ye(s,O_),g=f!==void 0?f:a&&a!=="Root"&&a!=="root"||!1,m=p||!1;let b,w=ba;a==="Root"||a==="root"?w=r:a?w=o:z_(i)&&(w=void 0);const y=Ov(i,A({shouldForwardProp:w,label:b},h)),x=(_,...C)=>{const M=C?C.map(P=>typeof P=="function"&&P.__emotion_real!==P?L=>P(A({},L,{theme:ki(A({},L,{defaultTheme:n,themeId:t}))})):P):[];let E=_;u&&c&&M.push(P=>{const L=ki(A({},P,{defaultTheme:n,themeId:t})),U=A_(u,L);if(U){const W={};return Object.entries(U).forEach(([G,Y])=>{W[G]=typeof Y=="function"?Y(A({},P,{theme:L})):Y}),c(P,W)}return null}),u&&!g&&M.push(P=>{const L=ki(A({},P,{defaultTheme:n,themeId:t}));return B_(P,L_(u,L),L,u)}),m||M.push(l);const O=M.length-C.length;if(Array.isArray(_)&&O>0){const P=new Array(O).fill("");E=[..._,...P],E.raw=[..._.raw,...P]}else typeof _=="function"&&_.__emotion_real!==_&&(E=P=>_(A({},P,{theme:ki(A({},P,{defaultTheme:n,themeId:t}))})));const z=y(E,...M);return i.muiName&&(z.muiName=i.muiName),z};return y.withConfig&&(x.withConfig=y.withConfig),x}}function H_(e){const{theme:t,name:n,props:r}=e;return!t||!t.components||!t.components[n]||!t.components[n].defaultProps?r:hv(t.components[n].defaultProps,r)}function W_({props:e,name:t,defaultTheme:n,themeId:r}){let o=Vp(n);return r&&(o=o[r]||o),H_({theme:o,name:t,props:e})}function Gp(e,t=0,n=1){return Math.min(Math.max(t,e),n)}function U_(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&n[0].length===1&&(n=n.map(r=>r+r)),n?`rgb${n.length===4?"a":""}(${n.map((r,o)=>o<3?parseInt(r,16):Math.round(parseInt(r,16)/255*1e3)/1e3).join(", ")})`:""}function zo(e){if(e.type)return e;if(e.charAt(0)==="#")return zo(U_(e));const t=e.indexOf("("),n=e.substring(0,t);if(["rgb","rgba","hsl","hsla","color"].indexOf(n)===-1)throw new Error(Al(9,e));let r=e.substring(t+1,e.length-1),o;if(n==="color"){if(r=r.split(" "),o=r.shift(),r.length===4&&r[3].charAt(0)==="/"&&(r[3]=r[3].slice(1)),["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(o)===-1)throw new Error(Al(10,o))}else r=r.split(",");return r=r.map(l=>parseFloat(l)),{type:n,values:r,colorSpace:o}}function nc(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return t.indexOf("rgb")!==-1?r=r.map((o,l)=>l<3?parseInt(o,10):o):t.indexOf("hsl")!==-1&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),t.indexOf("color")!==-1?r=`${n} ${r.join(" ")}`:r=`${r.join(", ")}`,`${t}(${r})`}function V_(e){e=zo(e);const{values:t}=e,n=t[0],r=t[1]/100,o=t[2]/100,l=r*Math.min(o,1-o),i=(a,f=(a+n/30)%12)=>o-l*Math.max(Math.min(f-3,9-f,1),-1);let s="rgb";const u=[Math.round(i(0)*255),Math.round(i(8)*255),Math.round(i(4)*255)];return e.type==="hsla"&&(s+="a",u.push(t[3])),nc({type:s,values:u})}function y0(e){e=zo(e);let t=e.type==="hsl"||e.type==="hsla"?zo(V_(e)).values:e.values;return t=t.map(n=>(e.type!=="color"&&(n/=255),n<=.03928?n/12.92:((n+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function K_(e,t){const n=y0(e),r=y0(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function jl(e,t){return e=zo(e),t=Gp(t),(e.type==="rgb"||e.type==="hsl")&&(e.type+="a"),e.type==="color"?e.values[3]=`/${t}`:e.values[3]=t,nc(e)}function Dv(e,t){if(e=zo(e),t=Gp(t),e.type.indexOf("hsl")!==-1)e.values[2]*=1-t;else if(e.type.indexOf("rgb")!==-1||e.type.indexOf("color")!==-1)for(let n=0;n<3;n+=1)e.values[n]*=1-t;return nc(e)}function Fv(e,t){if(e=zo(e),t=Gp(t),e.type.indexOf("hsl")!==-1)e.values[2]+=(100-e.values[2])*t;else if(e.type.indexOf("rgb")!==-1)for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.indexOf("color")!==-1)for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return nc(e)}const G_=$.createContext(null),Iv=G_;function Hv(){return $.useContext(Iv)}const Y_=typeof Symbol=="function"&&Symbol.for,Q_=Y_?Symbol.for("mui.nested"):"__THEME_NESTED__";function X_(e,t){return typeof t=="function"?t(e):A({},e,t)}function Z_(e){const{children:t,theme:n}=e,r=Hv(),o=$.useMemo(()=>{const l=r===null?n:X_(r,n);return l!=null&&(l[Q_]=r!==null),l},[n,r]);return R.jsx(Iv.Provider,{value:o,children:t})}const v0={};function w0(e,t,n,r=!1){return $.useMemo(()=>{const o=e&&t[e]||t;if(typeof n=="function"){const l=n(o),i=e?A({},t,{[e]:l}):l;return r?()=>i:i}return e?A({},t,{[e]:n}):A({},t,n)},[e,t,n,r])}function q_(e){const{children:t,theme:n,themeId:r}=e,o=Lv(v0),l=Hv()||v0,i=w0(r,o,n),s=w0(r,l,n,!0);return R.jsx(Z_,{theme:s,children:R.jsx(jp.Provider,{value:i,children:t})})}function J_(e,t){return A({toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}}},t)}const eC=["mode","contrastThreshold","tonalOffset"],x0={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:us.white,default:us.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},ff={text:{primary:us.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:us.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function S0(e,t,n,r){const o=r.light||r,l=r.dark||r*1.5;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:t==="light"?e.light=Fv(e.main,o):t==="dark"&&(e.dark=Dv(e.main,l)))}function tC(e="light"){return e==="dark"?{main:Jo[200],light:Jo[50],dark:Jo[400]}:{main:Jo[700],light:Jo[400],dark:Jo[800]}}function nC(e="light"){return e==="dark"?{main:qo[200],light:qo[50],dark:qo[400]}:{main:qo[500],light:qo[300],dark:qo[700]}}function rC(e="light"){return e==="dark"?{main:Zo[500],light:Zo[300],dark:Zo[700]}:{main:Zo[700],light:Zo[400],dark:Zo[800]}}function oC(e="light"){return e==="dark"?{main:el[400],light:el[300],dark:el[700]}:{main:el[700],light:el[500],dark:el[900]}}function lC(e="light"){return e==="dark"?{main:tl[400],light:tl[300],dark:tl[700]}:{main:tl[800],light:tl[500],dark:tl[900]}}function iC(e="light"){return e==="dark"?{main:Si[400],light:Si[300],dark:Si[700]}:{main:"#ed6c02",light:Si[500],dark:Si[900]}}function sC(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:r=.2}=e,o=ye(e,eC),l=e.primary||tC(t),i=e.secondary||nC(t),s=e.error||rC(t),u=e.info||oC(t),a=e.success||lC(t),f=e.warning||iC(t);function p(m){return K_(m,ff.text.primary)>=n?ff.text.primary:x0.text.primary}const c=({color:m,name:b,mainShade:w=500,lightShade:y=300,darkShade:x=700})=>{if(m=A({},m),!m.main&&m[w]&&(m.main=m[w]),!m.hasOwnProperty("main"))throw new Error(Al(11,b?` (${b})`:"",w));if(typeof m.main!="string")throw new Error(Al(12,b?` (${b})`:"",JSON.stringify(m.main)));return S0(m,"light",y,r),S0(m,"dark",x,r),m.contrastText||(m.contrastText=p(m.main)),m},h={dark:ff,light:x0};return Cr(A({common:A({},us),mode:t,primary:c({color:l,name:"primary"}),secondary:c({color:i,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:c({color:s,name:"error"}),warning:c({color:f,name:"warning"}),info:c({color:u,name:"info"}),success:c({color:a,name:"success"}),grey:sb,contrastThreshold:n,getContrastText:p,augmentColor:c,tonalOffset:r},h[t]),o)}const aC=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];function uC(e){return Math.round(e*1e5)/1e5}const b0={textTransform:"uppercase"},k0='"Roboto", "Helvetica", "Arial", sans-serif';function cC(e,t){const n=typeof t=="function"?t(e):t,{fontFamily:r=k0,fontSize:o=14,fontWeightLight:l=300,fontWeightRegular:i=400,fontWeightMedium:s=500,fontWeightBold:u=700,htmlFontSize:a=16,allVariants:f,pxToRem:p}=n,c=ye(n,aC),h=o/14,g=p||(w=>`${w/a*h}rem`),m=(w,y,x,_,C)=>A({fontFamily:r,fontWeight:w,fontSize:g(y),lineHeight:x},r===k0?{letterSpacing:`${uC(_/y)}em`}:{},C,f),b={h1:m(l,96,1.167,-1.5),h2:m(l,60,1.2,-.5),h3:m(i,48,1.167,0),h4:m(i,34,1.235,.25),h5:m(i,24,1.334,0),h6:m(s,20,1.6,.15),subtitle1:m(i,16,1.75,.15),subtitle2:m(s,14,1.57,.1),body1:m(i,16,1.5,.15),body2:m(i,14,1.43,.15),button:m(s,14,1.75,.4,b0),caption:m(i,12,1.66,.4),overline:m(i,12,2.66,1,b0),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return Cr(A({htmlFontSize:a,pxToRem:g,fontFamily:r,fontSize:o,fontWeightLight:l,fontWeightRegular:i,fontWeightMedium:s,fontWeightBold:u},b),c,{clone:!1})}const fC=.2,dC=.14,pC=.12;function Ve(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,${fC})`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,${dC})`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,${pC})`].join(",")}const hC=["none",Ve(0,2,1,-1,0,1,1,0,0,1,3,0),Ve(0,3,1,-2,0,2,2,0,0,1,5,0),Ve(0,3,3,-2,0,3,4,0,0,1,8,0),Ve(0,2,4,-1,0,4,5,0,0,1,10,0),Ve(0,3,5,-1,0,5,8,0,0,1,14,0),Ve(0,3,5,-1,0,6,10,0,0,1,18,0),Ve(0,4,5,-2,0,7,10,1,0,2,16,1),Ve(0,5,5,-3,0,8,10,1,0,3,14,2),Ve(0,5,6,-3,0,9,12,1,0,3,16,2),Ve(0,6,6,-3,0,10,14,1,0,4,18,3),Ve(0,6,7,-4,0,11,15,1,0,4,20,3),Ve(0,7,8,-4,0,12,17,2,0,5,22,4),Ve(0,7,8,-4,0,13,19,2,0,5,24,4),Ve(0,7,9,-4,0,14,21,2,0,5,26,4),Ve(0,8,9,-5,0,15,22,2,0,6,28,5),Ve(0,8,10,-5,0,16,24,2,0,6,30,5),Ve(0,8,11,-5,0,17,26,2,0,6,32,5),Ve(0,9,11,-5,0,18,28,2,0,7,34,6),Ve(0,9,12,-6,0,19,29,2,0,7,36,6),Ve(0,10,13,-6,0,20,31,3,0,8,38,7),Ve(0,10,13,-6,0,21,33,3,0,8,40,7),Ve(0,10,14,-6,0,22,35,3,0,8,42,7),Ve(0,11,14,-7,0,23,36,3,0,9,44,8),Ve(0,11,15,-7,0,24,38,3,0,9,46,8)],mC=hC,gC=["duration","easing","delay"],yC={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},vC={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function _0(e){return`${Math.round(e)}ms`}function wC(e){if(!e)return 0;const t=e/36;return Math.round((4+15*t**.25+t/5)*10)}function xC(e){const t=A({},yC,e.easing),n=A({},vC,e.duration);return A({getAutoHeightDuration:wC,create:(o=["all"],l={})=>{const{duration:i=n.standard,easing:s=t.easeInOut,delay:u=0}=l;return ye(l,gC),(Array.isArray(o)?o:[o]).map(a=>`${a} ${typeof i=="string"?i:_0(i)} ${s} ${typeof u=="string"?u:_0(u)}`).join(",")}},e,{easing:t,duration:n})}const SC={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},bC=SC,kC=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function Yp(e={},...t){const{mixins:n={},palette:r={},transitions:o={},typography:l={}}=e,i=ye(e,kC);if(e.vars)throw new Error(Al(18));const s=sC(r),u=Up(e);let a=Cr(u,{mixins:J_(u.breakpoints,n),palette:s,shadows:mC.slice(),typography:cC(s,l),transitions:xC(o),zIndex:A({},bC)});return a=Cr(a,i),a=t.reduce((f,p)=>Cr(f,p),a),a.unstable_sxConfig=A({},ec,i==null?void 0:i.unstable_sxConfig),a.unstable_sx=function(p){return tc({sx:p,theme:this})},a}const _C=Yp(),Qp=_C;function rc(){const e=Vp(Qp);return e[Ll]||e}function vt({props:e,name:t}){return W_({props:e,name:t,defaultTheme:Qp,themeId:Ll})}const Wv=e=>ba(e)&&e!=="classes",CC=I_({themeId:Ll,defaultTheme:Qp,rootShouldForwardProp:Wv}),Ue=CC,EC=["theme"];function TC(e){let{theme:t}=e,n=ye(e,EC);const r=t[Ll];return R.jsx(q_,A({},n,{themeId:r?Ll:void 0,theme:r||t}))}const MC=e=>{let t;return e<1?t=5.11916*e**2:t=4.5*Math.log(e+1)+2,(t/100).toFixed(2)},C0=MC;function PC(e){return gt("MuiSvgIcon",e)}yt("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const RC=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],$C=e=>{const{color:t,fontSize:n,classes:r}=e,o={root:["root",t!=="inherit"&&`color${je(t)}`,`fontSize${je(n)}`]};return kt(o,PC,r)},OC=Ue("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.color!=="inherit"&&t[`color${je(n.color)}`],t[`fontSize${je(n.fontSize)}`]]}})(({theme:e,ownerState:t})=>{var n,r,o,l,i,s,u,a,f,p,c,h,g;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:(n=e.transitions)==null||(r=n.create)==null?void 0:r.call(n,"fill",{duration:(o=e.transitions)==null||(o=o.duration)==null?void 0:o.shorter}),fontSize:{inherit:"inherit",small:((l=e.typography)==null||(i=l.pxToRem)==null?void 0:i.call(l,20))||"1.25rem",medium:((s=e.typography)==null||(u=s.pxToRem)==null?void 0:u.call(s,24))||"1.5rem",large:((a=e.typography)==null||(f=a.pxToRem)==null?void 0:f.call(a,35))||"2.1875rem"}[t.fontSize],color:(p=(c=(e.vars||e).palette)==null||(c=c[t.color])==null?void 0:c.main)!=null?p:{action:(h=(e.vars||e).palette)==null||(h=h.action)==null?void 0:h.active,disabled:(g=(e.vars||e).palette)==null||(g=g.action)==null?void 0:g.disabled,inherit:void 0}[t.color]}}),Uv=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiSvgIcon"}),{children:o,className:l,color:i="inherit",component:s="svg",fontSize:u="medium",htmlColor:a,inheritViewBox:f=!1,titleAccess:p,viewBox:c="0 0 24 24"}=r,h=ye(r,RC),g=$.isValidElement(o)&&o.type==="svg",m=A({},r,{color:i,component:s,fontSize:u,instanceFontSize:t.fontSize,inheritViewBox:f,viewBox:c,hasSvgAsChild:g}),b={};f||(b.viewBox=c);const w=$C(m);return R.jsxs(OC,A({as:s,className:fe(w.root,l),focusable:"false",color:a,"aria-hidden":p?void 0:!0,role:p?"img":void 0,ref:n},b,h,g&&o.props,{ownerState:m,children:[g?o.props.children:o,p?R.jsx("title",{children:p}):null]}))});Uv.muiName="SvgIcon";const E0=Uv;function Vv(e,t){function n(r,o){return R.jsx(E0,A({"data-testid":`${t}Icon`,ref:o},r,{children:e}))}return n.muiName=E0.muiName,$.memo($.forwardRef(n))}function Sd(e,t){return Sd=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},Sd(e,t)}function NC(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Sd(e,t)}const T0=Jn.createContext(null);function zC(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Xp(e,t){var n=function(l){return t&&$.isValidElement(l)?t(l):l},r=Object.create(null);return e&&$.Children.map(e,function(o){return o}).forEach(function(o){r[o.key]=n(o)}),r}function AC(e,t){e=e||{},t=t||{};function n(f){return f in t?t[f]:e[f]}var r=Object.create(null),o=[];for(var l in e)l in t?o.length&&(r[l]=o,o=[]):o.push(l);var i,s={};for(var u in t){if(r[u])for(i=0;i{const{square:t,elevation:n,variant:r,classes:o}=e,l={root:["root",r,!t&&"rounded",r==="elevation"&&`elevation${n}`]};return kt(l,IC,o)},UC=Ue("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,n.variant==="elevation"&&t[`elevation${n.elevation}`]]}})(({theme:e,ownerState:t})=>{var n;return A({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow")},!t.square&&{borderRadius:e.shape.borderRadius},t.variant==="outlined"&&{border:`1px solid ${(e.vars||e).palette.divider}`},t.variant==="elevation"&&A({boxShadow:(e.vars||e).shadows[t.elevation]},!e.vars&&e.palette.mode==="dark"&&{backgroundImage:`linear-gradient(${jl("#fff",C0(t.elevation))}, ${jl("#fff",C0(t.elevation))})`},e.vars&&{backgroundImage:(n=e.vars.overlays)==null?void 0:n[t.elevation]}))}),VC=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiPaper"}),{className:o,component:l="div",elevation:i=1,square:s=!1,variant:u="elevation"}=r,a=ye(r,HC),f=A({},r,{component:l,elevation:i,square:s,variant:u}),p=WC(f);return R.jsx(UC,A({as:l,ownerState:f,className:fe(p.root,o),ref:n},a))}),qp=VC;function KC(e){const{className:t,classes:n,pulsate:r=!1,rippleX:o,rippleY:l,rippleSize:i,in:s,onExited:u,timeout:a}=e,[f,p]=$.useState(!1),c=fe(t,n.ripple,n.rippleVisible,r&&n.ripplePulsate),h={width:i,height:i,top:-(i/2)+l,left:-(i/2)+o},g=fe(n.child,f&&n.childLeaving,r&&n.childPulsate);return!s&&!f&&p(!0),$.useEffect(()=>{if(!s&&u!=null){const m=setTimeout(u,a);return()=>{clearTimeout(m)}}},[u,s,a]),R.jsx("span",{className:c,style:h,children:R.jsx("span",{className:g})})}const GC=yt("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),An=GC,YC=["center","classes","className"];let oc=e=>e,M0,P0,R0,$0;const bd=550,QC=80,XC=Dp(M0||(M0=oc` + 0% { + transform: scale(0); + opacity: 0.1; + } + + 100% { + transform: scale(1); + opacity: 0.3; + } +`)),ZC=Dp(P0||(P0=oc` + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +`)),qC=Dp(R0||(R0=oc` + 0% { + transform: scale(1); + } + + 50% { + transform: scale(0.92); + } + + 100% { + transform: scale(1); + } +`)),JC=Ue("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),eE=Ue(KC,{name:"MuiTouchRipple",slot:"Ripple"})($0||($0=oc` + opacity: 0; + position: absolute; + + &.${0} { + opacity: 0.3; + transform: scale(1); + animation-name: ${0}; + animation-duration: ${0}ms; + animation-timing-function: ${0}; + } + + &.${0} { + animation-duration: ${0}ms; + } + + & .${0} { + opacity: 1; + display: block; + width: 100%; + height: 100%; + border-radius: 50%; + background-color: currentColor; + } + + & .${0} { + opacity: 0; + animation-name: ${0}; + animation-duration: ${0}ms; + animation-timing-function: ${0}; + } + + & .${0} { + position: absolute; + /* @noflip */ + left: 0px; + top: 0; + animation-name: ${0}; + animation-duration: 2500ms; + animation-timing-function: ${0}; + animation-iteration-count: infinite; + animation-delay: 200ms; + } +`),An.rippleVisible,XC,bd,({theme:e})=>e.transitions.easing.easeInOut,An.ripplePulsate,({theme:e})=>e.transitions.duration.shorter,An.child,An.childLeaving,ZC,bd,({theme:e})=>e.transitions.easing.easeInOut,An.childPulsate,qC,({theme:e})=>e.transitions.easing.easeInOut),tE=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTouchRipple"}),{center:o=!1,classes:l={},className:i}=r,s=ye(r,YC),[u,a]=$.useState([]),f=$.useRef(0),p=$.useRef(null);$.useEffect(()=>{p.current&&(p.current(),p.current=null)},[u]);const c=$.useRef(!1),h=$.useRef(0),g=$.useRef(null),m=$.useRef(null);$.useEffect(()=>()=>{h.current&&clearTimeout(h.current)},[]);const b=$.useCallback(_=>{const{pulsate:C,rippleX:M,rippleY:E,rippleSize:O,cb:z}=_;a(P=>[...P,R.jsx(eE,{classes:{ripple:fe(l.ripple,An.ripple),rippleVisible:fe(l.rippleVisible,An.rippleVisible),ripplePulsate:fe(l.ripplePulsate,An.ripplePulsate),child:fe(l.child,An.child),childLeaving:fe(l.childLeaving,An.childLeaving),childPulsate:fe(l.childPulsate,An.childPulsate)},timeout:bd,pulsate:C,rippleX:M,rippleY:E,rippleSize:O},f.current)]),f.current+=1,p.current=z},[l]),w=$.useCallback((_={},C={},M=()=>{})=>{const{pulsate:E=!1,center:O=o||C.pulsate,fakeElement:z=!1}=C;if((_==null?void 0:_.type)==="mousedown"&&c.current){c.current=!1;return}(_==null?void 0:_.type)==="touchstart"&&(c.current=!0);const P=z?null:m.current,L=P?P.getBoundingClientRect():{width:0,height:0,left:0,top:0};let U,W,G;if(O||_===void 0||_.clientX===0&&_.clientY===0||!_.clientX&&!_.touches)U=Math.round(L.width/2),W=Math.round(L.height/2);else{const{clientX:Y,clientY:le}=_.touches&&_.touches.length>0?_.touches[0]:_;U=Math.round(Y-L.left),W=Math.round(le-L.top)}if(O)G=Math.sqrt((2*L.width**2+L.height**2)/3),G%2===0&&(G+=1);else{const Y=Math.max(Math.abs((P?P.clientWidth:0)-U),U)*2+2,le=Math.max(Math.abs((P?P.clientHeight:0)-W),W)*2+2;G=Math.sqrt(Y**2+le**2)}_!=null&&_.touches?g.current===null&&(g.current=()=>{b({pulsate:E,rippleX:U,rippleY:W,rippleSize:G,cb:M})},h.current=setTimeout(()=>{g.current&&(g.current(),g.current=null)},QC)):b({pulsate:E,rippleX:U,rippleY:W,rippleSize:G,cb:M})},[o,b]),y=$.useCallback(()=>{w({},{pulsate:!0})},[w]),x=$.useCallback((_,C)=>{if(clearTimeout(h.current),(_==null?void 0:_.type)==="touchend"&&g.current){g.current(),g.current=null,h.current=setTimeout(()=>{x(_,C)});return}g.current=null,a(M=>M.length>0?M.slice(1):M),p.current=C},[]);return $.useImperativeHandle(n,()=>({pulsate:y,start:w,stop:x}),[y,w,x]),R.jsx(JC,A({className:fe(An.root,l.root,i),ref:m},s,{children:R.jsx(FC,{component:null,exit:!0,children:u})}))}),nE=tE;function rE(e){return gt("MuiButtonBase",e)}const oE=yt("MuiButtonBase",["root","disabled","focusVisible"]),lE=oE,iE=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],sE=e=>{const{disabled:t,focusVisible:n,focusVisibleClassName:r,classes:o}=e,i=kt({root:["root",t&&"disabled",n&&"focusVisible"]},rE,o);return n&&r&&(i.root+=` ${r}`),i},aE=Ue("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${lE.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),uE=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiButtonBase"}),{action:o,centerRipple:l=!1,children:i,className:s,component:u="button",disabled:a=!1,disableRipple:f=!1,disableTouchRipple:p=!1,focusRipple:c=!1,LinkComponent:h="a",onBlur:g,onClick:m,onContextMenu:b,onDragLeave:w,onFocus:y,onFocusVisible:x,onKeyDown:_,onKeyUp:C,onMouseDown:M,onMouseLeave:E,onMouseUp:O,onTouchEnd:z,onTouchMove:P,onTouchStart:L,tabIndex:U=0,TouchRippleProps:W,touchRippleRef:G,type:Y}=r,le=ye(r,iE),oe=$.useRef(null),D=$.useRef(null),X=gd(D,G),{isFocusVisibleRef:H,onFocus:J,onBlur:V,ref:ve}=bb(),[q,ae]=$.useState(!1);a&&q&&ae(!1),$.useImperativeHandle(o,()=>({focusVisible:()=>{ae(!0),oe.current.focus()}}),[]);const[Ne,wt]=$.useState(!1);$.useEffect(()=>{wt(!0)},[]);const qt=Ne&&!f&&!a;$.useEffect(()=>{q&&c&&!f&&Ne&&D.current.pulsate()},[f,c,q,Ne]);function st(te,ut,Et=p){return ko(tn=>(ut&&ut(tn),!Et&&D.current&&D.current[te](tn),!0))}const un=st("start",M),Jt=st("stop",b),Nn=st("stop",w),Nr=st("stop",O),wn=st("stop",te=>{q&&te.preventDefault(),E&&E(te)}),vr=st("start",L),rr=st("stop",z),xt=st("stop",P),ot=st("stop",te=>{V(te),H.current===!1&&ae(!1),g&&g(te)},!1),or=ko(te=>{oe.current||(oe.current=te.currentTarget),J(te),H.current===!0&&(ae(!0),x&&x(te)),y&&y(te)}),Ct=()=>{const te=oe.current;return u&&u!=="button"&&!(te.tagName==="A"&&te.href)},en=$.useRef(!1),ce=ko(te=>{c&&!en.current&&q&&D.current&&te.key===" "&&(en.current=!0,D.current.stop(te,()=>{D.current.start(te)})),te.target===te.currentTarget&&Ct()&&te.key===" "&&te.preventDefault(),_&&_(te),te.target===te.currentTarget&&Ct()&&te.key==="Enter"&&!a&&(te.preventDefault(),m&&m(te))}),ee=ko(te=>{c&&te.key===" "&&D.current&&q&&!te.defaultPrevented&&(en.current=!1,D.current.stop(te,()=>{D.current.pulsate(te)})),C&&C(te),m&&te.target===te.currentTarget&&Ct()&&te.key===" "&&!te.defaultPrevented&&m(te)});let be=u;be==="button"&&(le.href||le.to)&&(be=h);const Le={};be==="button"?(Le.type=Y===void 0?"button":Y,Le.disabled=a):(!le.href&&!le.to&&(Le.role="button"),a&&(Le["aria-disabled"]=a));const Je=gd(n,ve,oe),at=A({},r,{centerRipple:l,component:u,disabled:a,disableRipple:f,disableTouchRipple:p,focusRipple:c,tabIndex:U,focusVisible:q}),Ye=sE(at);return R.jsxs(aE,A({as:be,className:fe(Ye.root,s),ownerState:at,onBlur:ot,onClick:m,onContextMenu:Jt,onFocus:or,onKeyDown:ce,onKeyUp:ee,onMouseDown:un,onMouseLeave:wn,onMouseUp:Nr,onDragLeave:Nn,onTouchEnd:rr,onTouchMove:xt,onTouchStart:vr,ref:Je,tabIndex:a?-1:U,type:Y},Le,le,{children:[i,qt?R.jsx(nE,A({ref:X,center:l},W)):null]}))}),Jp=uE;function cE(e){return gt("MuiTypography",e)}yt("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const fE=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],dE=e=>{const{align:t,gutterBottom:n,noWrap:r,paragraph:o,variant:l,classes:i}=e,s={root:["root",l,e.align!=="inherit"&&`align${je(t)}`,n&&"gutterBottom",r&&"noWrap",o&&"paragraph"]};return kt(s,cE,i)},pE=Ue("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],n.align!=="inherit"&&t[`align${je(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})(({theme:e,ownerState:t})=>A({margin:0},t.variant==="inherit"&&{font:"inherit"},t.variant!=="inherit"&&e.typography[t.variant],t.align!=="inherit"&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16})),O0={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},hE={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},mE=e=>hE[e]||e,gE=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTypography"}),o=mE(r.color),l=Kp(A({},r,{color:o})),{align:i="inherit",className:s,component:u,gutterBottom:a=!1,noWrap:f=!1,paragraph:p=!1,variant:c="body1",variantMapping:h=O0}=l,g=ye(l,fE),m=A({},l,{align:i,color:o,className:s,component:u,gutterBottom:a,noWrap:f,paragraph:p,variant:c,variantMapping:h}),b=u||(p?"p":h[c]||O0[c])||"span",w=dE(m);return R.jsx(pE,A({as:b,ref:n,ownerState:m,className:fe(w.root,s)},g))}),lo=gE;function yE(e){return gt("MuiAppBar",e)}yt("MuiAppBar",["root","positionFixed","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorPrimary","colorSecondary","colorInherit","colorTransparent"]);const vE=["className","color","enableColorOnDark","position"],wE=e=>{const{color:t,position:n,classes:r}=e,o={root:["root",`color${je(t)}`,`position${je(n)}`]};return kt(o,yE,r)},ea=(e,t)=>e?`${e==null?void 0:e.replace(")","")}, ${t})`:t,xE=Ue(qp,{name:"MuiAppBar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[`position${je(n.position)}`],t[`color${je(n.color)}`]]}})(({theme:e,ownerState:t})=>{const n=e.palette.mode==="light"?e.palette.grey[100]:e.palette.grey[900];return A({display:"flex",flexDirection:"column",width:"100%",boxSizing:"border-box",flexShrink:0},t.position==="fixed"&&{position:"fixed",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0,"@media print":{position:"absolute"}},t.position==="absolute"&&{position:"absolute",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0},t.position==="sticky"&&{position:"sticky",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0},t.position==="static"&&{position:"static"},t.position==="relative"&&{position:"relative"},!e.vars&&A({},t.color==="default"&&{backgroundColor:n,color:e.palette.getContrastText(n)},t.color&&t.color!=="default"&&t.color!=="inherit"&&t.color!=="transparent"&&{backgroundColor:e.palette[t.color].main,color:e.palette[t.color].contrastText},t.color==="inherit"&&{color:"inherit"},e.palette.mode==="dark"&&!t.enableColorOnDark&&{backgroundColor:null,color:null},t.color==="transparent"&&A({backgroundColor:"transparent",color:"inherit"},e.palette.mode==="dark"&&{backgroundImage:"none"})),e.vars&&A({},t.color==="default"&&{"--AppBar-background":t.enableColorOnDark?e.vars.palette.AppBar.defaultBg:ea(e.vars.palette.AppBar.darkBg,e.vars.palette.AppBar.defaultBg),"--AppBar-color":t.enableColorOnDark?e.vars.palette.text.primary:ea(e.vars.palette.AppBar.darkColor,e.vars.palette.text.primary)},t.color&&!t.color.match(/^(default|inherit|transparent)$/)&&{"--AppBar-background":t.enableColorOnDark?e.vars.palette[t.color].main:ea(e.vars.palette.AppBar.darkBg,e.vars.palette[t.color].main),"--AppBar-color":t.enableColorOnDark?e.vars.palette[t.color].contrastText:ea(e.vars.palette.AppBar.darkColor,e.vars.palette[t.color].contrastText)},{backgroundColor:"var(--AppBar-background)",color:t.color==="inherit"?"inherit":"var(--AppBar-color)"},t.color==="transparent"&&{backgroundImage:"none",backgroundColor:"transparent",color:"inherit"}))}),SE=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiAppBar"}),{className:o,color:l="primary",enableColorOnDark:i=!1,position:s="fixed"}=r,u=ye(r,vE),a=A({},r,{color:l,position:s,enableColorOnDark:i}),f=wE(a);return R.jsx(xE,A({square:!0,component:"header",ownerState:a,elevation:4,className:fe(f.root,o,s==="fixed"&&"mui-fixed"),ref:n},u))}),bE=SE;function kE(e){return typeof e=="string"}function _E(e,t,n){return e===void 0||kE(e)?t:A({},t,{ownerState:A({},t.ownerState,n)})}function CE(e,t=[]){if(e===void 0)return{};const n={};return Object.keys(e).filter(r=>r.match(/^on[A-Z]/)&&typeof e[r]=="function"&&!t.includes(r)).forEach(r=>{n[r]=e[r]}),n}function EE(e,t,n){return typeof e=="function"?e(t,n):e}function N0(e){if(e===void 0)return{};const t={};return Object.keys(e).filter(n=>!(n.match(/^on[A-Z]/)&&typeof e[n]=="function")).forEach(n=>{t[n]=e[n]}),t}function TE(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:o,className:l}=e;if(!t){const h=fe(o==null?void 0:o.className,r==null?void 0:r.className,l,n==null?void 0:n.className),g=A({},n==null?void 0:n.style,o==null?void 0:o.style,r==null?void 0:r.style),m=A({},n,o,r);return h.length>0&&(m.className=h),Object.keys(g).length>0&&(m.style=g),{props:m,internalRef:void 0}}const i=CE(A({},o,r)),s=N0(r),u=N0(o),a=t(i),f=fe(a==null?void 0:a.className,n==null?void 0:n.className,l,o==null?void 0:o.className,r==null?void 0:r.className),p=A({},a==null?void 0:a.style,n==null?void 0:n.style,o==null?void 0:o.style,r==null?void 0:r.style),c=A({},a,n,u,s);return f.length>0&&(c.className=f),Object.keys(p).length>0&&(c.style=p),{props:c,internalRef:a.ref}}const ME=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function Za(e){var t;const{elementType:n,externalSlotProps:r,ownerState:o,skipResolvingSlotProps:l=!1}=e,i=ye(e,ME),s=l?{}:EE(r,o),{props:u,internalRef:a}=TE(A({},i,{externalSlotProps:s})),f=gd(a,s==null?void 0:s.ref,(t=e.additionalProps)==null?void 0:t.ref);return _E(n,A({},u,{ref:f}),o)}const PE=Yp(),RE=R_({themeId:Ll,defaultTheme:PE,defaultClassName:"MuiBox-root",generateClassName:mv.generate}),_s=RE;function $E(e){return gt("MuiCard",e)}yt("MuiCard",["root"]);const OE=["className","raised"],NE=e=>{const{classes:t}=e;return kt({root:["root"]},$E,t)},zE=Ue(qp,{name:"MuiCard",slot:"Root",overridesResolver:(e,t)=>t.root})(()=>({overflow:"hidden"})),AE=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiCard"}),{className:o,raised:l=!1}=r,i=ye(r,OE),s=A({},r,{raised:l}),u=NE(s);return R.jsx(zE,A({className:fe(u.root,o),elevation:l?8:void 0,ref:n,ownerState:s},i))}),Kv=AE;function LE(e){return gt("MuiCardContent",e)}yt("MuiCardContent",["root"]);const BE=["className","component"],jE=e=>{const{classes:t}=e;return kt({root:["root"]},LE,t)},DE=Ue("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}})),FE=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiCardContent"}),{className:o,component:l="div"}=r,i=ye(r,BE),s=A({},r,{component:l}),u=jE(s);return R.jsx(DE,A({as:l,className:fe(u.root,o),ownerState:s,ref:n},i))}),IE=FE;function HE(e){return gt("MuiFab",e)}const WE=yt("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"]),z0=WE,UE=["children","className","color","component","disabled","disableFocusRipple","focusVisibleClassName","size","variant"],VE=e=>{const{color:t,variant:n,classes:r,size:o}=e,l={root:["root",n,`size${je(o)}`,t==="inherit"?"colorInherit":t]},i=kt(l,HE,r);return A({},r,i)},KE=Ue(Jp,{name:"MuiFab",slot:"Root",shouldForwardProp:e=>Wv(e)||e==="classes",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`size${je(n.size)}`],n.color==="inherit"&&t.colorInherit,t[je(n.size)],t[n.color]]}})(({theme:e,ownerState:t})=>{var n,r;return A({},e.typography.button,{minHeight:36,transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.text.primary:(n=(r=e.palette).getContrastText)==null?void 0:n.call(r,e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:"none"},[`&.${z0.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]}},t.size==="small"&&{width:40,height:40},t.size==="medium"&&{width:48,height:48},t.variant==="extended"&&{borderRadius:48/2,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48},t.variant==="extended"&&t.size==="small"&&{width:"auto",padding:"0 8px",borderRadius:34/2,minWidth:34,height:34},t.variant==="extended"&&t.size==="medium"&&{width:"auto",padding:"0 16px",borderRadius:40/2,minWidth:40,height:40},t.color==="inherit"&&{color:"inherit"})},({theme:e,ownerState:t})=>A({},t.color!=="inherit"&&t.color!=="default"&&(e.vars||e).palette[t.color]!=null&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main,"&:hover":{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}}),({theme:e})=>({[`&.${z0.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}})),GE=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiFab"}),{children:o,className:l,color:i="default",component:s="button",disabled:u=!1,disableFocusRipple:a=!1,focusVisibleClassName:f,size:p="large",variant:c="circular"}=r,h=ye(r,UE),g=A({},r,{color:i,component:s,disabled:u,disableFocusRipple:a,size:p,variant:c}),m=VE(g);return R.jsx(KE,A({className:fe(m.root,l),component:s,disabled:u,focusRipple:!a,focusVisibleClassName:fe(m.focusVisible,f),ownerState:g,ref:n},h,{classes:m,children:o}))}),df=GE,YE=$.createContext(),A0=YE;function QE(e){return gt("MuiGrid",e)}const XE=[0,1,2,3,4,5,6,7,8,9,10],ZE=["column-reverse","column","row-reverse","row"],qE=["nowrap","wrap-reverse","wrap"],_i=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],JE=yt("MuiGrid",["root","container","item","zeroMinWidth",...XE.map(e=>`spacing-xs-${e}`),...ZE.map(e=>`direction-xs-${e}`),...qE.map(e=>`wrap-xs-${e}`),..._i.map(e=>`grid-xs-${e}`),..._i.map(e=>`grid-sm-${e}`),..._i.map(e=>`grid-md-${e}`),..._i.map(e=>`grid-lg-${e}`),..._i.map(e=>`grid-xl-${e}`)]),ps=JE,eT=["className","columns","columnSpacing","component","container","direction","item","rowSpacing","spacing","wrap","zeroMinWidth"];function El(e){const t=parseFloat(e);return`${t}${String(e).replace(String(t),"")||"px"}`}function tT({theme:e,ownerState:t}){let n;return e.breakpoints.keys.reduce((r,o)=>{let l={};if(t[o]&&(n=t[o]),!n)return r;if(n===!0)l={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if(n==="auto")l={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{const i=Gu({values:t.columns,breakpoints:e.breakpoints.values}),s=typeof i=="object"?i[o]:i;if(s==null)return r;const u=`${Math.round(n/s*1e8)/1e6}%`;let a={};if(t.container&&t.item&&t.columnSpacing!==0){const f=e.spacing(t.columnSpacing);if(f!=="0px"){const p=`calc(${u} + ${El(f)})`;a={flexBasis:p,maxWidth:p}}}l=A({flexBasis:u,flexGrow:0,maxWidth:u},a)}return e.breakpoints.values[o]===0?Object.assign(r,l):r[e.breakpoints.up(o)]=l,r},{})}function nT({theme:e,ownerState:t}){const n=Gu({values:t.direction,breakpoints:e.breakpoints.values});return Hn({theme:e},n,r=>{const o={flexDirection:r};return r.indexOf("column")===0&&(o[`& > .${ps.item}`]={maxWidth:"none"}),o})}function Gv({breakpoints:e,values:t}){let n="";Object.keys(t).forEach(o=>{n===""&&t[o]!==0&&(n=o)});const r=Object.keys(e).sort((o,l)=>e[o]-e[l]);return r.slice(0,r.indexOf(n))}function rT({theme:e,ownerState:t}){const{container:n,rowSpacing:r}=t;let o={};if(n&&r!==0){const l=Gu({values:r,breakpoints:e.breakpoints.values});let i;typeof l=="object"&&(i=Gv({breakpoints:e.breakpoints.values,values:l})),o=Hn({theme:e},l,(s,u)=>{var a;const f=e.spacing(s);return f!=="0px"?{marginTop:`-${El(f)}`,[`& > .${ps.item}`]:{paddingTop:El(f)}}:(a=i)!=null&&a.includes(u)?{}:{marginTop:0,[`& > .${ps.item}`]:{paddingTop:0}}})}return o}function oT({theme:e,ownerState:t}){const{container:n,columnSpacing:r}=t;let o={};if(n&&r!==0){const l=Gu({values:r,breakpoints:e.breakpoints.values});let i;typeof l=="object"&&(i=Gv({breakpoints:e.breakpoints.values,values:l})),o=Hn({theme:e},l,(s,u)=>{var a;const f=e.spacing(s);return f!=="0px"?{width:`calc(100% + ${El(f)})`,marginLeft:`-${El(f)}`,[`& > .${ps.item}`]:{paddingLeft:El(f)}}:(a=i)!=null&&a.includes(u)?{}:{width:"100%",marginLeft:0,[`& > .${ps.item}`]:{paddingLeft:0}}})}return o}function lT(e,t,n={}){if(!e||e<=0)return[];if(typeof e=="string"&&!Number.isNaN(Number(e))||typeof e=="number")return[n[`spacing-xs-${String(e)}`]];const r=[];return t.forEach(o=>{const l=e[o];Number(l)>0&&r.push(n[`spacing-${o}-${String(l)}`])}),r}const iT=Ue("div",{name:"MuiGrid",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e,{container:r,direction:o,item:l,spacing:i,wrap:s,zeroMinWidth:u,breakpoints:a}=n;let f=[];r&&(f=lT(i,a,t));const p=[];return a.forEach(c=>{const h=n[c];h&&p.push(t[`grid-${c}-${String(h)}`])}),[t.root,r&&t.container,l&&t.item,u&&t.zeroMinWidth,...f,o!=="row"&&t[`direction-xs-${String(o)}`],s!=="wrap"&&t[`wrap-xs-${String(s)}`],...p]}})(({ownerState:e})=>A({boxSizing:"border-box"},e.container&&{display:"flex",flexWrap:"wrap",width:"100%"},e.item&&{margin:0},e.zeroMinWidth&&{minWidth:0},e.wrap!=="wrap"&&{flexWrap:e.wrap}),nT,rT,oT,tT);function sT(e,t){if(!e||e<=0)return[];if(typeof e=="string"&&!Number.isNaN(Number(e))||typeof e=="number")return[`spacing-xs-${String(e)}`];const n=[];return t.forEach(r=>{const o=e[r];if(Number(o)>0){const l=`spacing-${r}-${String(o)}`;n.push(l)}}),n}const aT=e=>{const{classes:t,container:n,direction:r,item:o,spacing:l,wrap:i,zeroMinWidth:s,breakpoints:u}=e;let a=[];n&&(a=sT(l,u));const f=[];u.forEach(c=>{const h=e[c];h&&f.push(`grid-${c}-${String(h)}`)});const p={root:["root",n&&"container",o&&"item",s&&"zeroMinWidth",...a,r!=="row"&&`direction-xs-${String(r)}`,i!=="wrap"&&`wrap-xs-${String(i)}`,...f]};return kt(p,QE,t)},uT=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiGrid"}),{breakpoints:o}=rc(),l=Kp(r),{className:i,columns:s,columnSpacing:u,component:a="div",container:f=!1,direction:p="row",item:c=!1,rowSpacing:h,spacing:g=0,wrap:m="wrap",zeroMinWidth:b=!1}=l,w=ye(l,eT),y=h||g,x=u||g,_=$.useContext(A0),C=f?s||12:_,M={},E=A({},w);o.keys.forEach(P=>{w[P]!=null&&(M[P]=w[P],delete E[P])});const O=A({},l,{columns:C,container:f,direction:p,item:c,rowSpacing:y,columnSpacing:x,wrap:m,zeroMinWidth:b,spacing:g},M,{breakpoints:o.keys}),z=aT(O);return R.jsx(A0.Provider,{value:C,children:R.jsx(iT,A({ownerState:O,className:fe(z.root,i),as:a,ref:n},E))})}),pt=uT;function cT(e){return gt("MuiTab",e)}const fT=yt("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper"]),ho=fT,dT=["className","disabled","disableFocusRipple","fullWidth","icon","iconPosition","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"],pT=e=>{const{classes:t,textColor:n,fullWidth:r,wrapped:o,icon:l,label:i,selected:s,disabled:u}=e,a={root:["root",l&&i&&"labelIcon",`textColor${je(n)}`,r&&"fullWidth",o&&"wrapped",s&&"selected",u&&"disabled"],iconWrapper:["iconWrapper"]};return kt(a,cT,t)},hT=Ue(Jp,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.label&&n.icon&&t.labelIcon,t[`textColor${je(n.textColor)}`],n.fullWidth&&t.fullWidth,n.wrapped&&t.wrapped]}})(({theme:e,ownerState:t})=>A({},e.typography.button,{maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center"},t.label&&{flexDirection:t.iconPosition==="top"||t.iconPosition==="bottom"?"column":"row"},{lineHeight:1.25},t.icon&&t.label&&{minHeight:72,paddingTop:9,paddingBottom:9,[`& > .${ho.iconWrapper}`]:A({},t.iconPosition==="top"&&{marginBottom:6},t.iconPosition==="bottom"&&{marginTop:6},t.iconPosition==="start"&&{marginRight:e.spacing(1)},t.iconPosition==="end"&&{marginLeft:e.spacing(1)})},t.textColor==="inherit"&&{color:"inherit",opacity:.6,[`&.${ho.selected}`]:{opacity:1},[`&.${ho.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}},t.textColor==="primary"&&{color:(e.vars||e).palette.text.secondary,[`&.${ho.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${ho.disabled}`]:{color:(e.vars||e).palette.text.disabled}},t.textColor==="secondary"&&{color:(e.vars||e).palette.text.secondary,[`&.${ho.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${ho.disabled}`]:{color:(e.vars||e).palette.text.disabled}},t.fullWidth&&{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},t.wrapped&&{fontSize:e.typography.pxToRem(12)})),mT=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTab"}),{className:o,disabled:l=!1,disableFocusRipple:i=!1,fullWidth:s,icon:u,iconPosition:a="top",indicator:f,label:p,onChange:c,onClick:h,onFocus:g,selected:m,selectionFollowsFocus:b,textColor:w="inherit",value:y,wrapped:x=!1}=r,_=ye(r,dT),C=A({},r,{disabled:l,disableFocusRipple:i,selected:m,icon:!!u,iconPosition:a,label:!!p,fullWidth:s,textColor:w,wrapped:x}),M=pT(C),E=u&&p&&$.isValidElement(u)?$.cloneElement(u,{className:fe(M.iconWrapper,u.props.className)}):u,O=P=>{!m&&c&&c(P,y),h&&h(P)},z=P=>{b&&!m&&c&&c(P,y),g&&g(P)};return R.jsxs(hT,A({focusRipple:!i,className:fe(M.root,o),ref:n,role:"tab","aria-selected":m,disabled:l,onClick:O,onFocus:z,ownerState:C,tabIndex:m?0:-1},_,{children:[a==="top"||a==="start"?R.jsxs($.Fragment,{children:[E,p]}):R.jsxs($.Fragment,{children:[p,E]}),f]}))}),pf=mT,gT=$.createContext(),Yv=gT;function yT(e){return gt("MuiTable",e)}yt("MuiTable",["root","stickyHeader"]);const vT=["className","component","padding","size","stickyHeader"],wT=e=>{const{classes:t,stickyHeader:n}=e;return kt({root:["root",n&&"stickyHeader"]},yT,t)},xT=Ue("table",{name:"MuiTable",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.stickyHeader&&t.stickyHeader]}})(({theme:e,ownerState:t})=>A({display:"table",width:"100%",borderCollapse:"collapse",borderSpacing:0,"& caption":A({},e.typography.body2,{padding:e.spacing(2),color:(e.vars||e).palette.text.secondary,textAlign:"left",captionSide:"bottom"})},t.stickyHeader&&{borderCollapse:"separate"})),L0="table",ST=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTable"}),{className:o,component:l=L0,padding:i="normal",size:s="medium",stickyHeader:u=!1}=r,a=ye(r,vT),f=A({},r,{component:l,padding:i,size:s,stickyHeader:u}),p=wT(f),c=$.useMemo(()=>({padding:i,size:s,stickyHeader:u}),[i,s,u]);return R.jsx(Yv.Provider,{value:c,children:R.jsx(xT,A({as:l,role:l===L0?null:"table",ref:n,className:fe(p.root,o),ownerState:f},a))})}),bT=ST,kT=$.createContext(),lc=kT;function _T(e){return gt("MuiTableBody",e)}yt("MuiTableBody",["root"]);const CT=["className","component"],ET=e=>{const{classes:t}=e;return kt({root:["root"]},_T,t)},TT=Ue("tbody",{name:"MuiTableBody",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"table-row-group"}),MT={variant:"body"},B0="tbody",PT=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTableBody"}),{className:o,component:l=B0}=r,i=ye(r,CT),s=A({},r,{component:l}),u=ET(s);return R.jsx(lc.Provider,{value:MT,children:R.jsx(TT,A({className:fe(u.root,o),as:l,ref:n,role:l===B0?null:"rowgroup",ownerState:s},i))})}),RT=PT;function $T(e){return gt("MuiTableCell",e)}const OT=yt("MuiTableCell",["root","head","body","footer","sizeSmall","sizeMedium","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","alignJustify","stickyHeader"]),NT=OT,zT=["align","className","component","padding","scope","size","sortDirection","variant"],AT=e=>{const{classes:t,variant:n,align:r,padding:o,size:l,stickyHeader:i}=e,s={root:["root",n,i&&"stickyHeader",r!=="inherit"&&`align${je(r)}`,o!=="normal"&&`padding${je(o)}`,`size${je(l)}`]};return kt(s,$T,t)},LT=Ue("td",{name:"MuiTableCell",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`size${je(n.size)}`],n.padding!=="normal"&&t[`padding${je(n.padding)}`],n.align!=="inherit"&&t[`align${je(n.align)}`],n.stickyHeader&&t.stickyHeader]}})(({theme:e,ownerState:t})=>A({},e.typography.body2,{display:"table-cell",verticalAlign:"inherit",borderBottom:e.vars?`1px solid ${e.vars.palette.TableCell.border}`:`1px solid + ${e.palette.mode==="light"?Fv(jl(e.palette.divider,1),.88):Dv(jl(e.palette.divider,1),.68)}`,textAlign:"left",padding:16},t.variant==="head"&&{color:(e.vars||e).palette.text.primary,lineHeight:e.typography.pxToRem(24),fontWeight:e.typography.fontWeightMedium},t.variant==="body"&&{color:(e.vars||e).palette.text.primary},t.variant==="footer"&&{color:(e.vars||e).palette.text.secondary,lineHeight:e.typography.pxToRem(21),fontSize:e.typography.pxToRem(12)},t.size==="small"&&{padding:"6px 16px",[`&.${NT.paddingCheckbox}`]:{width:24,padding:"0 12px 0 16px","& > *":{padding:0}}},t.padding==="checkbox"&&{width:48,padding:"0 0 0 4px"},t.padding==="none"&&{padding:0},t.align==="left"&&{textAlign:"left"},t.align==="center"&&{textAlign:"center"},t.align==="right"&&{textAlign:"right",flexDirection:"row-reverse"},t.align==="justify"&&{textAlign:"justify"},t.stickyHeader&&{position:"sticky",top:0,zIndex:2,backgroundColor:(e.vars||e).palette.background.default})),BT=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTableCell"}),{align:o="inherit",className:l,component:i,padding:s,scope:u,size:a,sortDirection:f,variant:p}=r,c=ye(r,zT),h=$.useContext(Yv),g=$.useContext(lc),m=g&&g.variant==="head";let b;i?b=i:b=m?"th":"td";let w=u;b==="td"?w=void 0:!w&&m&&(w="col");const y=p||g&&g.variant,x=A({},r,{align:o,component:b,padding:s||(h&&h.padding?h.padding:"normal"),size:a||(h&&h.size?h.size:"medium"),sortDirection:f,stickyHeader:y==="head"&&h&&h.stickyHeader,variant:y}),_=AT(x);let C=null;return f&&(C=f==="asc"?"ascending":"descending"),R.jsx(LT,A({as:b,ref:n,className:fe(_.root,l),"aria-sort":C,scope:w,ownerState:x},c))}),ta=BT;function jT(e){return gt("MuiTableContainer",e)}yt("MuiTableContainer",["root"]);const DT=["className","component"],FT=e=>{const{classes:t}=e;return kt({root:["root"]},jT,t)},IT=Ue("div",{name:"MuiTableContainer",slot:"Root",overridesResolver:(e,t)=>t.root})({width:"100%",overflowX:"auto"}),HT=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTableContainer"}),{className:o,component:l="div"}=r,i=ye(r,DT),s=A({},r,{component:l}),u=FT(s);return R.jsx(IT,A({ref:n,as:l,className:fe(u.root,o),ownerState:s},i))}),WT=HT;function UT(e){return gt("MuiTableHead",e)}yt("MuiTableHead",["root"]);const VT=["className","component"],KT=e=>{const{classes:t}=e;return kt({root:["root"]},UT,t)},GT=Ue("thead",{name:"MuiTableHead",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"table-header-group"}),YT={variant:"head"},j0="thead",QT=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTableHead"}),{className:o,component:l=j0}=r,i=ye(r,VT),s=A({},r,{component:l}),u=KT(s);return R.jsx(lc.Provider,{value:YT,children:R.jsx(GT,A({as:l,className:fe(u.root,o),ref:n,role:l===j0?null:"rowgroup",ownerState:s},i))})}),XT=QT;function ZT(e){return gt("MuiToolbar",e)}yt("MuiToolbar",["root","gutters","regular","dense"]);const qT=["className","component","disableGutters","variant"],JT=e=>{const{classes:t,disableGutters:n,variant:r}=e;return kt({root:["root",!n&&"gutters",r]},ZT,t)},eM=Ue("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(({theme:e,ownerState:t})=>A({position:"relative",display:"flex",alignItems:"center"},!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}},t.variant==="dense"&&{minHeight:48}),({theme:e,ownerState:t})=>t.variant==="regular"&&e.mixins.toolbar),tM=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiToolbar"}),{className:o,component:l="div",disableGutters:i=!1,variant:s="regular"}=r,u=ye(r,qT),a=A({},r,{component:l,disableGutters:i,variant:s}),f=JT(a);return R.jsx(eM,A({as:l,className:fe(f.root,o),ref:n,ownerState:a},u))}),nM=tM,rM=Vv(R.jsx("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),oM=Vv(R.jsx("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");function lM(e){return gt("MuiTableRow",e)}const iM=yt("MuiTableRow",["root","selected","hover","head","footer"]),D0=iM,sM=["className","component","hover","selected"],aM=e=>{const{classes:t,selected:n,hover:r,head:o,footer:l}=e;return kt({root:["root",n&&"selected",r&&"hover",o&&"head",l&&"footer"]},lM,t)},uM=Ue("tr",{name:"MuiTableRow",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.head&&t.head,n.footer&&t.footer]}})(({theme:e})=>({color:"inherit",display:"table-row",verticalAlign:"middle",outline:0,[`&.${D0.hover}:hover`]:{backgroundColor:(e.vars||e).palette.action.hover},[`&.${D0.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:jl(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:jl(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity)}}})),F0="tr",cM=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTableRow"}),{className:o,component:l=F0,hover:i=!1,selected:s=!1}=r,u=ye(r,sM),a=$.useContext(lc),f=A({},r,{component:l,hover:i,selected:s,head:a&&a.variant==="head",footer:a&&a.variant==="footer"}),p=aM(f);return R.jsx(uM,A({as:l,ref:n,className:fe(p.root,o),role:l===F0?null:"row",ownerState:f},u))}),I0=cM;function fM(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function dM(e,t,n,r={},o=()=>{}){const{ease:l=fM,duration:i=300}=r;let s=null;const u=t[e];let a=!1;const f=()=>{a=!0},p=c=>{if(a){o(new Error("Animation cancelled"));return}s===null&&(s=c);const h=Math.min(1,(c-s)/i);if(t[e]=l(h)*(n-u)+u,h>=1){requestAnimationFrame(()=>{o(null)});return}requestAnimationFrame(p)};return u===n?(o(new Error("Element already at target position")),f):(requestAnimationFrame(p),f)}const pM=["onChange"],hM={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function mM(e){const{onChange:t}=e,n=ye(e,pM),r=$.useRef(),o=$.useRef(null),l=()=>{r.current=o.current.offsetHeight-o.current.clientHeight};return dv(()=>{const i=uv(()=>{const u=r.current;l(),u!==r.current&&t(r.current)}),s=fv(o.current);return s.addEventListener("resize",i),()=>{i.clear(),s.removeEventListener("resize",i)}},[t]),$.useEffect(()=>{l(),t(r.current)},[t]),R.jsx("div",A({style:hM,ref:o},n))}function gM(e){return gt("MuiTabScrollButton",e)}const yM=yt("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),vM=yM,wM=["className","slots","slotProps","direction","orientation","disabled"],xM=e=>{const{classes:t,orientation:n,disabled:r}=e;return kt({root:["root",n,r&&"disabled"]},gM,t)},SM=Ue(Jp,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.orientation&&t[n.orientation]]}})(({ownerState:e})=>A({width:40,flexShrink:0,opacity:.8,[`&.${vM.disabled}`]:{opacity:0}},e.orientation==="vertical"&&{width:"100%",height:40,"& svg":{transform:`rotate(${e.isRtl?-90:90}deg)`}})),bM=$.forwardRef(function(t,n){var r,o;const l=vt({props:t,name:"MuiTabScrollButton"}),{className:i,slots:s={},slotProps:u={},direction:a}=l,f=ye(l,wM),c=rc().direction==="rtl",h=A({isRtl:c},l),g=xM(h),m=(r=s.StartScrollButtonIcon)!=null?r:rM,b=(o=s.EndScrollButtonIcon)!=null?o:oM,w=Za({elementType:m,externalSlotProps:u.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:h}),y=Za({elementType:b,externalSlotProps:u.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:h});return R.jsx(SM,A({component:"div",className:fe(g.root,i),ref:n,role:null,ownerState:h,tabIndex:null},f,{children:a==="left"?R.jsx(m,A({},w)):R.jsx(b,A({},y))}))}),kM=bM;function _M(e){return gt("MuiTabs",e)}const CM=yt("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),hf=CM,EM=["aria-label","aria-labelledby","action","centered","children","className","component","allowScrollButtonsMobile","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","slots","slotProps","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar"],H0=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,W0=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,na=(e,t,n)=>{let r=!1,o=n(e,t);for(;o;){if(o===e.firstChild){if(r)return;r=!0}const l=o.disabled||o.getAttribute("aria-disabled")==="true";if(!o.hasAttribute("tabindex")||l)o=n(e,o);else{o.focus();return}}},TM=e=>{const{vertical:t,fixed:n,hideScrollbar:r,scrollableX:o,scrollableY:l,centered:i,scrollButtonsHideMobile:s,classes:u}=e;return kt({root:["root",t&&"vertical"],scroller:["scroller",n&&"fixed",r&&"hideScrollbar",o&&"scrollableX",l&&"scrollableY"],flexContainer:["flexContainer",t&&"flexContainerVertical",i&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",s&&"scrollButtonsHideMobile"],scrollableX:[o&&"scrollableX"],hideScrollbar:[r&&"hideScrollbar"]},_M,u)},MM=Ue("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${hf.scrollButtons}`]:t.scrollButtons},{[`& .${hf.scrollButtons}`]:n.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,n.vertical&&t.vertical]}})(({ownerState:e,theme:t})=>A({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},e.vertical&&{flexDirection:"column"},e.scrollButtonsHideMobile&&{[`& .${hf.scrollButtons}`]:{[t.breakpoints.down("sm")]:{display:"none"}}})),PM=Ue("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.scroller,n.fixed&&t.fixed,n.hideScrollbar&&t.hideScrollbar,n.scrollableX&&t.scrollableX,n.scrollableY&&t.scrollableY]}})(({ownerState:e})=>A({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},e.fixed&&{overflowX:"hidden",width:"100%"},e.hideScrollbar&&{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},e.scrollableX&&{overflowX:"auto",overflowY:"hidden"},e.scrollableY&&{overflowY:"auto",overflowX:"hidden"})),RM=Ue("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.flexContainer,n.vertical&&t.flexContainerVertical,n.centered&&t.centered]}})(({ownerState:e})=>A({display:"flex"},e.vertical&&{flexDirection:"column"},e.centered&&{justifyContent:"center"})),$M=Ue("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(e,t)=>t.indicator})(({ownerState:e,theme:t})=>A({position:"absolute",height:2,bottom:0,width:"100%",transition:t.transitions.create()},e.indicatorColor==="primary"&&{backgroundColor:(t.vars||t).palette.primary.main},e.indicatorColor==="secondary"&&{backgroundColor:(t.vars||t).palette.secondary.main},e.vertical&&{height:"100%",width:2,right:0})),OM=Ue(mM,{name:"MuiTabs",slot:"ScrollbarSize"})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),U0={},NM=$.forwardRef(function(t,n){const r=vt({props:t,name:"MuiTabs"}),o=rc(),l=o.direction==="rtl",{"aria-label":i,"aria-labelledby":s,action:u,centered:a=!1,children:f,className:p,component:c="div",allowScrollButtonsMobile:h=!1,indicatorColor:g="primary",onChange:m,orientation:b="horizontal",ScrollButtonComponent:w=kM,scrollButtons:y="auto",selectionFollowsFocus:x,slots:_={},slotProps:C={},TabIndicatorProps:M={},TabScrollButtonProps:E={},textColor:O="primary",value:z,variant:P="standard",visibleScrollbar:L=!1}=r,U=ye(r,EM),W=P==="scrollable",G=b==="vertical",Y=G?"scrollTop":"scrollLeft",le=G?"top":"left",oe=G?"bottom":"right",D=G?"clientHeight":"clientWidth",X=G?"height":"width",H=A({},r,{component:c,allowScrollButtonsMobile:h,indicatorColor:g,orientation:b,vertical:G,scrollButtons:y,textColor:O,variant:P,visibleScrollbar:L,fixed:!W,hideScrollbar:W&&!L,scrollableX:W&&!G,scrollableY:W&&G,centered:a&&!W,scrollButtonsHideMobile:!h}),J=TM(H),V=Za({elementType:_.StartScrollButtonIcon,externalSlotProps:C.startScrollButtonIcon,ownerState:H}),ve=Za({elementType:_.EndScrollButtonIcon,externalSlotProps:C.endScrollButtonIcon,ownerState:H}),[q,ae]=$.useState(!1),[Ne,wt]=$.useState(U0),[qt,st]=$.useState(!1),[un,Jt]=$.useState(!1),[Nn,Nr]=$.useState(!1),[wn,vr]=$.useState({overflow:"hidden",scrollbarWidth:0}),rr=new Map,xt=$.useRef(null),ot=$.useRef(null),or=()=>{const Q=xt.current;let ie;if(Q){const xe=Q.getBoundingClientRect();ie={clientWidth:Q.clientWidth,scrollLeft:Q.scrollLeft,scrollTop:Q.scrollTop,scrollLeftNormalized:kb(Q,o.direction),scrollWidth:Q.scrollWidth,top:xe.top,bottom:xe.bottom,left:xe.left,right:xe.right}}let pe;if(Q&&z!==!1){const xe=ot.current.children;if(xe.length>0){const Tt=xe[rr.get(z)];pe=Tt?Tt.getBoundingClientRect():null}}return{tabsMeta:ie,tabMeta:pe}},Ct=ko(()=>{const{tabsMeta:Q,tabMeta:ie}=or();let pe=0,xe;if(G)xe="top",ie&&Q&&(pe=ie.top-Q.top+Q.scrollTop);else if(xe=l?"right":"left",ie&&Q){const lr=l?Q.scrollLeftNormalized+Q.clientWidth-Q.scrollWidth:Q.scrollLeft;pe=(l?-1:1)*(ie[xe]-Q[xe]+lr)}const Tt={[xe]:pe,[X]:ie?ie[X]:0};if(isNaN(Ne[xe])||isNaN(Ne[X]))wt(Tt);else{const lr=Math.abs(Ne[xe]-Tt[xe]),Io=Math.abs(Ne[X]-Tt[X]);(lr>=1||Io>=1)&&wt(Tt)}}),en=(Q,{animation:ie=!0}={})=>{ie?dM(Y,xt.current,Q,{duration:o.transitions.duration.standard}):xt.current[Y]=Q},ce=Q=>{let ie=xt.current[Y];G?ie+=Q:(ie+=Q*(l?-1:1),ie*=l&&pv()==="reverse"?-1:1),en(ie)},ee=()=>{const Q=xt.current[D];let ie=0;const pe=Array.from(ot.current.children);for(let xe=0;xeQ){xe===0&&(ie=Q);break}ie+=Tt[D]}return ie},be=()=>{ce(-1*ee())},Le=()=>{ce(ee())},Je=$.useCallback(Q=>{vr({overflow:null,scrollbarWidth:Q})},[]),at=()=>{const Q={};Q.scrollbarSizeListener=W?R.jsx(OM,{onChange:Je,className:fe(J.scrollableX,J.hideScrollbar)}):null;const pe=W&&(y==="auto"&&(qt||un)||y===!0);return Q.scrollButtonStart=pe?R.jsx(w,A({slots:{StartScrollButtonIcon:_.StartScrollButtonIcon},slotProps:{startScrollButtonIcon:V},orientation:b,direction:l?"right":"left",onClick:be,disabled:!qt},E,{className:fe(J.scrollButtons,E.className)})):null,Q.scrollButtonEnd=pe?R.jsx(w,A({slots:{EndScrollButtonIcon:_.EndScrollButtonIcon},slotProps:{endScrollButtonIcon:ve},orientation:b,direction:l?"left":"right",onClick:Le,disabled:!un},E,{className:fe(J.scrollButtons,E.className)})):null,Q},Ye=ko(Q=>{const{tabsMeta:ie,tabMeta:pe}=or();if(!(!pe||!ie)){if(pe[le]ie[oe]){const xe=ie[Y]+(pe[oe]-ie[oe]);en(xe,{animation:Q})}}}),te=ko(()=>{W&&y!==!1&&Nr(!Nn)});$.useEffect(()=>{const Q=uv(()=>{xt.current&&Ct()}),ie=fv(xt.current);ie.addEventListener("resize",Q);let pe;return typeof ResizeObserver<"u"&&(pe=new ResizeObserver(Q),Array.from(ot.current.children).forEach(xe=>{pe.observe(xe)})),()=>{Q.clear(),ie.removeEventListener("resize",Q),pe&&pe.disconnect()}},[Ct]),$.useEffect(()=>{const Q=Array.from(ot.current.children),ie=Q.length;if(typeof IntersectionObserver<"u"&&ie>0&&W&&y!==!1){const pe=Q[0],xe=Q[ie-1],Tt={root:xt.current,threshold:.99},lr=Un=>{st(!Un[0].isIntersecting)},Io=new IntersectionObserver(lr,Tt);Io.observe(pe);const mc=Un=>{Jt(!Un[0].isIntersecting)},se=new IntersectionObserver(mc,Tt);return se.observe(xe),()=>{Io.disconnect(),se.disconnect()}}},[W,y,Nn,f==null?void 0:f.length]),$.useEffect(()=>{ae(!0)},[]),$.useEffect(()=>{Ct()}),$.useEffect(()=>{Ye(U0!==Ne)},[Ye,Ne]),$.useImperativeHandle(u,()=>({updateIndicator:Ct,updateScrollButtons:te}),[Ct,te]);const ut=R.jsx($M,A({},M,{className:fe(J.indicator,M.className),ownerState:H,style:A({},Ne,M.style)}));let Et=0;const tn=$.Children.map(f,Q=>{if(!$.isValidElement(Q))return null;const ie=Q.props.value===void 0?Et:Q.props.value;rr.set(ie,Et);const pe=ie===z;return Et+=1,$.cloneElement(Q,A({fullWidth:P==="fullWidth",indicator:pe&&!q&&ut,selected:pe,selectionFollowsFocus:x,onChange:m,textColor:O,value:ie},Et===1&&z===!1&&!Q.props.tabIndex?{tabIndex:0}:{}))}),cn=Q=>{const ie=ot.current,pe=cv(ie).activeElement;if(pe.getAttribute("role")!=="tab")return;let Tt=b==="horizontal"?"ArrowLeft":"ArrowUp",lr=b==="horizontal"?"ArrowRight":"ArrowDown";switch(b==="horizontal"&&l&&(Tt="ArrowRight",lr="ArrowLeft"),Q.key){case Tt:Q.preventDefault(),na(ie,pe,W0);break;case lr:Q.preventDefault(),na(ie,pe,H0);break;case"Home":Q.preventDefault(),na(ie,null,H0);break;case"End":Q.preventDefault(),na(ie,null,W0);break}},uo=at();return R.jsxs(MM,A({className:fe(J.root,p),ownerState:H,ref:n,as:c},U,{children:[uo.scrollButtonStart,uo.scrollbarSizeListener,R.jsxs(PM,{className:J.scroller,ownerState:H,style:{overflow:wn.overflow,[G?`margin${l?"Left":"Right"}`:"marginBottom"]:L?void 0:-wn.scrollbarWidth},ref:xt,children:[R.jsx(RM,{"aria-label":i,"aria-labelledby":s,"aria-orientation":b==="vertical"?"vertical":null,className:J.flexContainer,ownerState:H,onKeyDown:cn,ref:ot,role:"tablist",children:tn}),q&&ut]}),uo.scrollButtonEnd]}))}),zM=NM;const ra="time";class qa{constructor({capacity:t=1e4,values:n={},metas:r={}}={}){this.capacity=t,this.values=n,this.metas=r,this.length=n[ra]?n[ra].length:0}_pushOne(t,n,r=void 0){let o=r?t+"."+r:t;Object.prototype.hasOwnProperty.call(this.values,o)?this.values[o].length0?Math.floor:Math.ceil;return{days:t(e/864e5),hours:t(e/36e5)%24,minutes:t(e/6e4)%60,seconds:t(e/1e3)%60,milliseconds:t(e)%1e3,microseconds:t(e*1e3)%1e3,nanoseconds:t(e*1e6)%1e3}}const LM=(e,t)=>t===1?e:`${e}s`,BM=1e-7;function Qv(e,t={}){if(!Number.isFinite(e))throw new TypeError("Expected a finite number");t.colonNotation&&(t.compact=!1,t.formatSubMilliseconds=!1,t.separateMilliseconds=!1,t.verbose=!1),t.compact&&(t.secondsDecimalDigits=0,t.millisecondsDecimalDigits=0);const n=[],r=(i,s)=>{const u=Math.floor(i*10**s+BM);return(Math.round(u)/10**s).toFixed(s)},o=(i,s,u,a)=>{if((n.length===0||!t.colonNotation)&&i===0&&!(t.colonNotation&&u==="m"))return;a=(a||i||"0").toString();let f,p;if(t.colonNotation){f=n.length>0?":":"",p="";const c=a.includes(".")?a.split(".")[0].length:a.length,h=n.length>0?2:1;a="0".repeat(Math.max(0,h-c))+a}else f="",p=t.verbose?" "+LM(s,i):u;n.push(f+a+p)},l=AM(e);if(o(Math.trunc(l.days/365),"year","y"),o(l.days%365,"day","d"),o(l.hours,"hour","h"),o(l.minutes,"minute","m"),t.separateMilliseconds||t.formatSubMilliseconds||!t.colonNotation&&e<1e3)if(o(l.seconds,"second","s"),t.formatSubMilliseconds)o(l.milliseconds,"millisecond","ms"),o(l.microseconds,"microsecond","µs"),o(l.nanoseconds,"nanosecond","ns");else{const i=l.milliseconds+l.microseconds/1e3+l.nanoseconds/1e6,s=typeof t.millisecondsDecimalDigits=="number"?t.millisecondsDecimalDigits:0,u=i>=1?Math.round(i):Math.ceil(i),a=s?i.toFixed(s):u;o(Number.parseFloat(a),"millisecond","ms",a)}else{const i=e/1e3%60,s=typeof t.secondsDecimalDigits=="number"?t.secondsDecimalDigits:1,u=r(i,s),a=t.keepDecimalsOnWholeSeconds?u:u.replace(/\.0+$/,"");o(Number.parseFloat(a),"second","s",a)}if(n.length===0)return"0"+(t.verbose?" milliseconds":"ms");if(t.compact)return n[0];if(typeof t.unitCount=="number"){const i=t.colonNotation?"":" ";return n.slice(0,Math.max(t.unitCount,1)).join(i)}return t.colonNotation?n.join(""):n.join(" ")}const jM=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],DM=["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],FM=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],IM=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],V0=(e,t,n)=>{let r=e;return typeof t=="string"||Array.isArray(t)?r=e.toLocaleString(t,n):(t===!0||n!==void 0)&&(r=e.toLocaleString(void 0,n)),r};function Xv(e,t){if(!Number.isFinite(e))throw new TypeError(`Expected a finite number, got ${typeof e}: ${e}`);t={bits:!1,binary:!1,space:!0,...t};const n=t.bits?t.binary?IM:FM:t.binary?DM:jM,r=t.space?" ":"";if(t.signed&&e===0)return` 0${r}${n[0]}`;const o=e<0,l=o?"-":t.signed?"+":"";o&&(e=-e);let i;if(t.minimumFractionDigits!==void 0&&(i={minimumFractionDigits:t.minimumFractionDigits}),t.maximumFractionDigits!==void 0&&(i={maximumFractionDigits:t.maximumFractionDigits,...i}),e<1){const f=V0(e,t.locale,i);return l+f+r+n[0]}const s=Math.min(Math.floor(t.binary?Math.log(e)/Math.log(1024):Math.log10(e)/3),n.length-1);e/=(t.binary?1024:1e3)**s,i||(e=e.toPrecision(3));const u=V0(Number(e),t.locale,i),a=n[s];return l+u+r+a}let Zv={};const K0=new WeakMap,G0={metric:[{from:0,to:1e3,unit:"B",long:"bytes"},{from:1e3,to:1e6,unit:"kB",long:"kilobytes"},{from:1e6,to:1e9,unit:"MB",long:"megabytes"},{from:1e9,to:1e12,unit:"GB",long:"gigabytes"},{from:1e12,to:1e15,unit:"TB",long:"terabytes"},{from:1e15,to:1e18,unit:"PB",long:"petabytes"},{from:1e18,to:1e21,unit:"EB",long:"exabytes"},{from:1e21,to:1e24,unit:"ZB",long:"zettabytes"},{from:1e24,to:1e27,unit:"YB",long:"yottabytes"}],metric_octet:[{from:0,to:1e3,unit:"o",long:"octets"},{from:1e3,to:1e6,unit:"ko",long:"kilooctets"},{from:1e6,to:1e9,unit:"Mo",long:"megaoctets"},{from:1e9,to:1e12,unit:"Go",long:"gigaoctets"},{from:1e12,to:1e15,unit:"To",long:"teraoctets"},{from:1e15,to:1e18,unit:"Po",long:"petaoctets"},{from:1e18,to:1e21,unit:"Eo",long:"exaoctets"},{from:1e21,to:1e24,unit:"Zo",long:"zettaoctets"},{from:1e24,to:1e27,unit:"Yo",long:"yottaoctets"}],iec:[{from:0,to:Math.pow(1024,1),unit:"B",long:"bytes"},{from:Math.pow(1024,1),to:Math.pow(1024,2),unit:"KiB",long:"kibibytes"},{from:Math.pow(1024,2),to:Math.pow(1024,3),unit:"MiB",long:"mebibytes"},{from:Math.pow(1024,3),to:Math.pow(1024,4),unit:"GiB",long:"gibibytes"},{from:Math.pow(1024,4),to:Math.pow(1024,5),unit:"TiB",long:"tebibytes"},{from:Math.pow(1024,5),to:Math.pow(1024,6),unit:"PiB",long:"pebibytes"},{from:Math.pow(1024,6),to:Math.pow(1024,7),unit:"EiB",long:"exbibytes"},{from:Math.pow(1024,7),to:Math.pow(1024,8),unit:"ZiB",long:"zebibytes"},{from:Math.pow(1024,8),to:Math.pow(1024,9),unit:"YiB",long:"yobibytes"}],iec_octet:[{from:0,to:Math.pow(1024,1),unit:"o",long:"octets"},{from:Math.pow(1024,1),to:Math.pow(1024,2),unit:"Kio",long:"kibioctets"},{from:Math.pow(1024,2),to:Math.pow(1024,3),unit:"Mio",long:"mebioctets"},{from:Math.pow(1024,3),to:Math.pow(1024,4),unit:"Gio",long:"gibioctets"},{from:Math.pow(1024,4),to:Math.pow(1024,5),unit:"Tio",long:"tebioctets"},{from:Math.pow(1024,5),to:Math.pow(1024,6),unit:"Pio",long:"pebioctets"},{from:Math.pow(1024,6),to:Math.pow(1024,7),unit:"Eio",long:"exbioctets"},{from:Math.pow(1024,7),to:Math.pow(1024,8),unit:"Zio",long:"zebioctets"},{from:Math.pow(1024,8),to:Math.pow(1024,9),unit:"Yio",long:"yobioctets"}]};class HM{constructor(t,n){n=Object.assign({units:"metric",precision:1,locale:void 0},Zv,n),K0.set(this,n),Object.assign(G0,n.customUnits);const r=t<0?"-":"";t=Math.abs(t);const o=G0[n.units];if(o){const l=o.find(i=>t>=i.from&&tr?n=new qa:n=new qa(e),n.push(t.data),n.lastEventId=r,n}function Y0(e,t){return bu(e,new qa,{parser:JSON.parse,stateReducer:function(n,r){let o=XM(n,r);return o.annotate(t().values),o}})}const hs=Jn.createContext(new qa);hs.displayName="Samples";function ZM(){return bu("config",new qM,{parser:JSON.parse})}class qM{constructor(){this.tabs=[],this.title="k6 report"}}function JM(e,t){const n=new nh(e);return n.update(t.data),n}function Q0(e){return bu("cumulative",new nh,{parser:JSON.parse,stateReducer:function(t,n){let r=JM(t,n);return r.annotate(e().values),r}})}const Ja=Jn.createContext(new nh);Ja.displayName="Summary";function eP(e){return R.jsx("div",{className:"Header",children:R.jsx(bE,{position:"sticky",children:R.jsx(nM,{variant:"dense",children:R.jsx(lo,{variant:"h6",component:"div",align:"center",sx:{flexGrow:1},children:e.conf().title})})})})}const tP=e=>$.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",height:24,viewBox:"0 0 24 24",width:24,fill:"white",...e},$.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),$.createElement("path",{d:"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"})),nP=e=>$.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"white",...e},$.createElement("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"}),$.createElement("path",{d:"M0 0h24v24H0z",fill:"none"})),rP=e=>$.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"white",...e},$.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),$.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}));function Do(e){return e==null?!1:typeof e[Symbol.iterator]=="function"}const X0={trend:["avg","min","med","max","p(90)","p(95)","p(99)"],counter:["rate","count"],rate:["rate"],gauge:["value"]};function Yr(e){const{type:t,series:n}=e,r=$.useContext(Ja),o=i=>(!Do(n)||n.includes(i))&&r.values[i].meta.type==t,l=e.plain?"div":qp;return R.jsx(WT,{component:l,children:R.jsxs(bT,{children:[R.jsx("caption",{children:e.caption}),R.jsx(XT,{children:R.jsxs(I0,{children:[R.jsx(ta,{children:"metric"}),X0[t].map(i=>R.jsx(ta,{align:"right",children:i},"digest_"+t+"_"+i))]})}),R.jsx(RT,{children:Object.keys(r.values).filter(o).map(i=>R.jsxs(I0,{hover:!0,sx:{"&:last-child td, &:last-child th":{border:0}},children:[R.jsx(ta,{component:"th",scope:"row",children:i}),X0[t].map(s=>R.jsx(ta,{align:"right",children:r.values[i].format(s)},"digest_"+t+"_value_"+s))]},i))})]})},"digest_"+t)}var Jv={exports:{}};/*! @preserve + * numeral.js + * version : 2.0.6 + * author : Adam Draper + * license : MIT + * http://adamwdraper.github.com/Numeral-js/ + */(function(e){(function(t,n){e.exports?e.exports=n():t.numeral=n()})(Vr,function(){var t,n,r="2.0.6",o={},l={},i={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},s={currentLocale:i.currentLocale,zeroFormat:i.zeroFormat,nullFormat:i.nullFormat,defaultFormat:i.defaultFormat,scalePercentBy100:i.scalePercentBy100};function u(a,f){this._input=a,this._value=f}return t=function(a){var f,p,c,h;if(t.isNumeral(a))f=a.value();else if(a===0||typeof a>"u")f=0;else if(a===null||n.isNaN(a))f=null;else if(typeof a=="string")if(s.zeroFormat&&a===s.zeroFormat)f=0;else if(s.nullFormat&&a===s.nullFormat||!a.replace(/[^0-9]+/g,"").length)f=null;else{for(p in o)if(h=typeof o[p].regexps.unformat=="function"?o[p].regexps.unformat():o[p].regexps.unformat,h&&a.match(h)){c=o[p].unformat;break}c=c||t._.stringToNumber,f=c(a)}else f=Number(a)||null;return new u(a,f)},t.version=r,t.isNumeral=function(a){return a instanceof u},t._=n={numberToFormat:function(a,f,p){var c=l[t.options.currentLocale],h=!1,g=!1,m=0,b="",w=1e12,y=1e9,x=1e6,_=1e3,C="",M=!1,E,O,z,P,L,U,W;if(a=a||0,O=Math.abs(a),t._.includes(f,"(")?(h=!0,f=f.replace(/[\(|\)]/g,"")):(t._.includes(f,"+")||t._.includes(f,"-"))&&(L=t._.includes(f,"+")?f.indexOf("+"):a<0?f.indexOf("-"):-1,f=f.replace(/[\+|\-]/g,"")),t._.includes(f,"a")&&(E=f.match(/a(k|m|b|t)?/),E=E?E[1]:!1,t._.includes(f," a")&&(b=" "),f=f.replace(new RegExp(b+"a[kmbt]?"),""),O>=w&&!E||E==="t"?(b+=c.abbreviations.trillion,a=a/w):O=y&&!E||E==="b"?(b+=c.abbreviations.billion,a=a/y):O=x&&!E||E==="m"?(b+=c.abbreviations.million,a=a/x):(O=_&&!E||E==="k")&&(b+=c.abbreviations.thousand,a=a/_)),t._.includes(f,"[.]")&&(g=!0,f=f.replace("[.]",".")),z=a.toString().split(".")[0],P=f.split(".")[1],U=f.indexOf(","),m=(f.split(".")[0].split(",")[0].match(/0/g)||[]).length,P?(t._.includes(P,"[")?(P=P.replace("]",""),P=P.split("["),C=t._.toFixed(a,P[0].length+P[1].length,p,P[1].length)):C=t._.toFixed(a,P.length,p),z=C.split(".")[0],t._.includes(C,".")?C=c.delimiters.decimal+C.split(".")[1]:C="",g&&Number(C.slice(1))===0&&(C="")):z=t._.toFixed(a,0,p),b&&!E&&Number(z)>=1e3&&b!==c.abbreviations.trillion)switch(z=String(Number(z)/1e3),b){case c.abbreviations.thousand:b=c.abbreviations.million;break;case c.abbreviations.million:b=c.abbreviations.billion;break;case c.abbreviations.billion:b=c.abbreviations.trillion;break}if(t._.includes(z,"-")&&(z=z.slice(1),M=!0),z.length0;G--)z="0"+z;return U>-1&&(z=z.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+c.delimiters.thousands)),f.indexOf(".")===0&&(z=""),W=z+C+(b||""),h?W=(h&&M?"(":"")+W+(h&&M?")":""):L>=0?W=L===0?(M?"-":"+")+W:W+(M?"-":"+"):M&&(W="-"+W),W},stringToNumber:function(a){var f=l[s.currentLocale],p=a,c={thousand:3,million:6,billion:9,trillion:12},h,g,m;if(s.zeroFormat&&a===s.zeroFormat)g=0;else if(s.nullFormat&&a===s.nullFormat||!a.replace(/[^0-9]+/g,"").length)g=null;else{g=1,f.delimiters.decimal!=="."&&(a=a.replace(/\./g,"").replace(f.delimiters.decimal,"."));for(h in c)if(m=new RegExp("[^a-zA-Z]"+f.abbreviations[h]+"(?:\\)|(\\"+f.currency.symbol+")?(?:\\))?)?$"),p.match(m)){g*=Math.pow(10,c[h]);break}g*=(a.split("-").length+Math.min(a.split("(").length-1,a.split(")").length-1))%2?1:-1,a=a.replace(/[^0-9\.]+/g,""),g*=Number(a)}return g},isNaN:function(a){return typeof a=="number"&&isNaN(a)},includes:function(a,f){return a.indexOf(f)!==-1},insert:function(a,f,p){return a.slice(0,p)+f+a.slice(p)},reduce:function(a,f){if(this===null)throw new TypeError("Array.prototype.reduce called on null or undefined");if(typeof f!="function")throw new TypeError(f+" is not a function");var p=Object(a),c=p.length>>>0,h=0,g;if(arguments.length===3)g=arguments[2];else{for(;h=c)throw new TypeError("Reduce of empty array with no initial value");g=p[h++]}for(;hc?f:c},1)},toFixed:function(a,f,p,c){var h=a.toString().split("."),g=f-(c||0),m,b,w,y;return h.length===2?m=Math.min(Math.max(h[1].length,g),f):m=g,w=Math.pow(10,m),y=(p(a+"e+"+m)/w).toFixed(m),c>f-m&&(b=new RegExp("\\.?0{1,"+(c-(f-m))+"}$"),y=y.replace(b,"")),y}},t.options=s,t.formats=o,t.locales=l,t.locale=function(a){return a&&(s.currentLocale=a.toLowerCase()),s.currentLocale},t.localeData=function(a){if(!a)return l[s.currentLocale];if(a=a.toLowerCase(),!l[a])throw new Error("Unknown locale : "+a);return l[a]},t.reset=function(){for(var a in i)s[a]=i[a]},t.zeroFormat=function(a){s.zeroFormat=typeof a=="string"?a:null},t.nullFormat=function(a){s.nullFormat=typeof a=="string"?a:null},t.defaultFormat=function(a){s.defaultFormat=typeof a=="string"?a:"0.0"},t.register=function(a,f,p){if(f=f.toLowerCase(),this[a+"s"][f])throw new TypeError(f+" "+a+" already registered.");return this[a+"s"][f]=p,p},t.validate=function(a,f){var p,c,h,g,m,b,w,y;if(typeof a!="string"&&(a+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",a)),a=a.trim(),a.match(/^\d+$/))return!0;if(a==="")return!1;try{w=t.localeData(f)}catch{w=t.localeData(t.locale())}return h=w.currency.symbol,m=w.abbreviations,p=w.delimiters.decimal,w.delimiters.thousands==="."?c="\\.":c=w.delimiters.thousands,y=a.match(/^[^\d]+/),y!==null&&(a=a.substr(1),y[0]!==h)||(y=a.match(/[^\d]+$/),y!==null&&(a=a.slice(0,-1),y[0]!==m.thousand&&y[0]!==m.million&&y[0]!==m.billion&&y[0]!==m.trillion))?!1:(b=new RegExp(c+"{2}"),a.match(/[^\d.,]/g)?!1:(g=a.split(p),g.length>2?!1:g.length<2?!!g[0].match(/^\d+.*\d$/)&&!g[0].match(b):g[0].length===1?!!g[0].match(/^\d+$/)&&!g[0].match(b)&&!!g[1].match(/^\d+$/):!!g[0].match(/^\d+.*\d$/)&&!g[0].match(b)&&!!g[1].match(/^\d+$/)))},t.fn=u.prototype={clone:function(){return t(this)},format:function(a,f){var p=this._value,c=a||s.defaultFormat,h,g,m;if(f=f||Math.round,p===0&&s.zeroFormat!==null)g=s.zeroFormat;else if(p===null&&s.nullFormat!==null)g=s.nullFormat;else{for(h in o)if(c.match(o[h].regexps.format)){m=o[h].format;break}m=m||t._.numberToFormat,g=m(p,c,f)}return g},value:function(){return this._value},input:function(){return this._input},set:function(a){return this._value=Number(a),this},add:function(a){var f=n.correctionFactor.call(null,this._value,a);function p(c,h,g,m){return c+Math.round(f*h)}return this._value=n.reduce([this._value,a],p,0)/f,this},subtract:function(a){var f=n.correctionFactor.call(null,this._value,a);function p(c,h,g,m){return c-Math.round(f*h)}return this._value=n.reduce([a],p,Math.round(this._value*f))/f,this},multiply:function(a){function f(p,c,h,g){var m=n.correctionFactor(p,c);return Math.round(p*m)*Math.round(c*m)/Math.round(m*m)}return this._value=n.reduce([this._value,a],f,1),this},divide:function(a){function f(p,c,h,g){var m=n.correctionFactor(p,c);return Math.round(p*m)/Math.round(c*m)}return this._value=n.reduce([this._value,a],f),this},difference:function(a){return Math.abs(t(this._value).subtract(a).value())}},t.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(a){var f=a%10;return~~(a%100/10)===1?"th":f===1?"st":f===2?"nd":f===3?"rd":"th"},currency:{symbol:"$"}}),function(){t.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(a,f,p){var c=t._.includes(f," BPS")?" ":"",h;return a=a*1e4,f=f.replace(/\s?BPS/,""),h=t._.numberToFormat(a,f,p),t._.includes(h,")")?(h=h.split(""),h.splice(-1,0,c+"BPS"),h=h.join("")):h=h+c+"BPS",h},unformat:function(a){return+(t._.stringToNumber(a)*1e-4).toFixed(15)}})}(),function(){var a={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},f={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},p=a.suffixes.concat(f.suffixes.filter(function(h){return a.suffixes.indexOf(h)<0})),c=p.join("|");c="("+c.replace("B","B(?!PS)")+")",t.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(c)},format:function(h,g,m){var b,w=t._.includes(g,"ib")?f:a,y=t._.includes(g," b")||t._.includes(g," ib")?" ":"",x,_,C;for(g=g.replace(/\s?i?b/,""),x=0;x<=w.suffixes.length;x++)if(_=Math.pow(w.base,x),C=Math.pow(w.base,x+1),h===null||h===0||h>=_&&h0&&(h=h/_);break}return b=t._.numberToFormat(h,g,m),b+y},unformat:function(h){var g=t._.stringToNumber(h),m,b;if(g){for(m=a.suffixes.length-1;m>=0;m--){if(t._.includes(h,a.suffixes[m])){b=Math.pow(a.base,m);break}if(t._.includes(h,f.suffixes[m])){b=Math.pow(f.base,m);break}}g*=b||1}return g}})}(),function(){t.register("format","currency",{regexps:{format:/(\$)/},format:function(a,f,p){var c=t.locales[t.options.currentLocale],h={before:f.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:f.match(/([\+|\-|\)|\s|\$]*)$/)[0]},g,m,b;for(f=f.replace(/\s?\$\s?/,""),g=t._.numberToFormat(a,f,p),a>=0?(h.before=h.before.replace(/[\-\(]/,""),h.after=h.after.replace(/[\-\)]/,"")):a<0&&!t._.includes(h.before,"-")&&!t._.includes(h.before,"(")&&(h.before="-"+h.before),b=0;b=0;b--)switch(m=h.after[b],m){case"$":g=b===h.after.length-1?g+c.currency.symbol:t._.insert(g,c.currency.symbol,-(h.after.length-(1+b)));break;case" ":g=b===h.after.length-1?g+" ":t._.insert(g," ",-(h.after.length-(1+b)+c.currency.symbol.length-1));break}return g}})}(),function(){t.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(a,f,p){var c,h=typeof a=="number"&&!t._.isNaN(a)?a.toExponential():"0e+0",g=h.split("e");return f=f.replace(/e[\+|\-]{1}0/,""),c=t._.numberToFormat(Number(g[0]),f,p),c+"e"+g[1]},unformat:function(a){var f=t._.includes(a,"e+")?a.split("e+"):a.split("e-"),p=Number(f[0]),c=Number(f[1]);c=t._.includes(a,"e-")?c*=-1:c;function h(g,m,b,w){var y=t._.correctionFactor(g,m),x=g*y*(m*y)/(y*y);return x}return t._.reduce([p,Math.pow(10,c)],h,1)}})}(),function(){t.register("format","ordinal",{regexps:{format:/(o)/},format:function(a,f,p){var c=t.locales[t.options.currentLocale],h,g=t._.includes(f," o")?" ":"";return f=f.replace(/\s?o/,""),g+=c.ordinal(a),h=t._.numberToFormat(a,f,p),h+g}})}(),function(){t.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(a,f,p){var c=t._.includes(f," %")?" ":"",h;return t.options.scalePercentBy100&&(a=a*100),f=f.replace(/\s?\%/,""),h=t._.numberToFormat(a,f,p),t._.includes(h,")")?(h=h.split(""),h.splice(-1,0,c+"%"),h=h.join("")):h=h+c+"%",h},unformat:function(a){var f=t._.stringToNumber(a);return t.options.scalePercentBy100?f*.01:f}})}(),function(){t.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(a,f,p){var c=Math.floor(a/60/60),h=Math.floor((a-c*60*60)/60),g=Math.round(a-c*60*60-h*60);return c+":"+(h<10?"0"+h:h)+":"+(g<10?"0"+g:g)},unformat:function(a){var f=a.split(":"),p=0;return f.length===3?(p=p+Number(f[0])*60*60,p=p+Number(f[1])*60,p=p+Number(f[2])):f.length===2&&(p=p+Number(f[0])*60,p=p+Number(f[1])),Number(p)}})}(),t})})(Jv);var oP=Jv.exports;const Z0=zd(oP),lP=!0,_t="u-",iP="uplot",sP=_t+"hz",aP=_t+"vt",uP=_t+"title",cP=_t+"wrap",fP=_t+"under",dP=_t+"over",pP=_t+"axis",wo=_t+"off",hP=_t+"select",mP=_t+"cursor-x",gP=_t+"cursor-y",yP=_t+"cursor-pt",vP=_t+"legend",wP=_t+"live",xP=_t+"inline",SP=_t+"series",bP=_t+"marker",q0=_t+"label",kP=_t+"value",$i="width",Oi="height",Ci="top",J0="bottom",rl="left",mf="right",rh="#000",eg=rh+"0",tg="mousemove",ng="mousedown",gf="mouseup",rg="mouseenter",og="mouseleave",lg="dblclick",_P="resize",CP="scroll",ig="change",eu="dppxchange",oh="--",Zl=typeof window<"u",kd=Zl?document:null,Tl=Zl?window:null,EP=Zl?navigator:null;let Ee,oa;function _d(){let e=devicePixelRatio;Ee!=e&&(Ee=e,oa&&Ed(ig,oa,_d),oa=matchMedia(`(min-resolution: ${Ee-.001}dppx) and (max-resolution: ${Ee+.001}dppx)`),To(ig,oa,_d),Tl.dispatchEvent(new CustomEvent(eu)))}function xn(e,t){if(t!=null){let n=e.classList;!n.contains(t)&&n.add(t)}}function Cd(e,t){let n=e.classList;n.contains(t)&&n.remove(t)}function Ke(e,t,n){e.style[t]=n+"px"}function Qn(e,t,n,r){let o=kd.createElement(e);return t!=null&&xn(o,t),n!=null&&n.insertBefore(o,r),o}function zn(e,t){return Qn("div",e,t)}const sg=new WeakMap;function ol(e,t,n,r,o){let l="translate("+t+"px,"+n+"px)",i=sg.get(e);l!=i&&(e.style.transform=l,sg.set(e,l),t<0||n<0||t>r||n>o?xn(e,wo):Cd(e,wo))}const ag=new WeakMap;function TP(e,t,n){let r=t+n,o=ag.get(e);r!=o&&(ag.set(e,r),e.style.background=t,e.style.borderColor=n)}const ug=new WeakMap;function MP(e,t,n,r){let o=t+""+n,l=ug.get(e);o!=l&&(ug.set(e,o),e.style.height=n+"px",e.style.width=t+"px",e.style.marginLeft=r?-t/2+"px":0,e.style.marginTop=r?-n/2+"px":0)}const lh={passive:!0},ew={...lh,capture:!0};function To(e,t,n,r){t.addEventListener(e,n,r?ew:lh)}function Ed(e,t,n,r){t.removeEventListener(e,n,r?ew:lh)}Zl&&_d();function Dr(e,t,n,r){let o;n=n||0,r=r||t.length-1;let l=r<=2147483647;for(;r-n>1;)o=l?n+r>>1:Tn((n+r)/2),t[o]=t&&o<=n;o+=r)if(e[o]!=null)return o;return-1}function PP(e,t,n,r){let o=ge,l=-ge;if(r==1)o=e[t],l=e[n];else if(r==-1)o=e[n],l=e[t];else for(let i=t;i<=n;i++){let s=e[i];s!=null&&(sl&&(l=s))}return[o,l]}function RP(e,t,n){let r=ge,o=-ge;for(let l=t;l<=n;l++){let i=e[l];i!=null&&i>0&&(io&&(o=i))}return[r==ge?1:r,o==-ge?10:o]}function ic(e,t,n,r){let o=dg(e),l=dg(t),i=n==10?Er:tw;e==t&&(o==-1?(e*=n,t/=n):(e/=n,t*=n));let s=o==1?Tn:Fl,u=l==1?Fl:Tn,a=s(i(Nt(e))),f=u(i(Nt(t))),p=Il(n,a),c=Il(n,f);return n==10&&(a<0&&(p=ze(p,-a)),f<0&&(c=ze(c,-f))),r||n==2?(e=p*o,t=c*l):(e=rw(e,p),t=Wl(t,c)),[e,t]}function ih(e,t,n,r){let o=ic(e,t,n,r);return e==0&&(o[0]=0),t==0&&(o[1]=0),o}const sh=.1,cg={mode:3,pad:sh},Ui={pad:0,soft:null,mode:0},$P={min:Ui,max:Ui};function tu(e,t,n,r){return sc(n)?fg(e,t,n):(Ui.pad=n,Ui.soft=r?0:null,Ui.mode=r?3:0,fg(e,t,$P))}function Te(e,t){return e??t}function OP(e,t,n){for(t=Te(t,0),n=Te(n,e.length-1);t<=n;){if(e[t]!=null)return!0;t++}return!1}function fg(e,t,n){let r=n.min,o=n.max,l=Te(r.pad,0),i=Te(o.pad,0),s=Te(r.hard,-ge),u=Te(o.hard,ge),a=Te(r.soft,ge),f=Te(o.soft,-ge),p=Te(r.mode,0),c=Te(o.mode,0),h=t-e,g=Er(h),m=zt(Nt(e),Nt(t)),b=Er(m),w=Nt(b-g);(h<1e-9||w>10)&&(h=0,(e==0||t==0)&&(h=1e-9,p==2&&a!=ge&&(l=0),c==2&&f!=-ge&&(i=0)));let y=h||m||1e3,x=Er(y),_=Il(10,Tn(x)),C=y*(h==0?e==0?.1:1:l),M=ze(rw(e-C,_/10),9),E=e>=a&&(p==1||p==3&&M<=a||p==2&&M>=a)?a:ge,O=zt(s,M=E?E:kn(E,M)),z=y*(h==0?t==0?.1:1:i),P=ze(Wl(t+z,_/10),9),L=t<=f&&(c==1||c==3&&P>=f||c==2&&P<=f)?f:-ge,U=kn(u,P>L&&t<=L?L:zt(L,P));return O==U&&O==0&&(U=100),[O,U]}const NP=new Intl.NumberFormat(Zl?EP.language:"en-US"),ah=e=>NP.format(e),On=Math,ka=On.PI,Nt=On.abs,Tn=On.floor,It=On.round,Fl=On.ceil,kn=On.min,zt=On.max,Il=On.pow,dg=On.sign,Er=On.log10,tw=On.log2,zP=(e,t=1)=>On.sinh(e)*t,yf=(e,t=1)=>On.asinh(e/t),ge=1/0;function pg(e){return(Er((e^e>>31)-(e>>31))|0)+1}function hg(e,t,n){return kn(zt(e,t),n)}function me(e){return typeof e=="function"?e:()=>e}const AP=()=>{},LP=e=>e,nw=(e,t)=>t,BP=e=>null,mg=e=>!0,gg=(e,t)=>e==t,Hl=e=>ze(e,14);function yo(e,t){return Hl(ze(Hl(e/t))*t)}function Wl(e,t){return Hl(Fl(Hl(e/t))*t)}function rw(e,t){return Hl(Tn(Hl(e/t))*t)}function ze(e,t=0){if(jP(e))return e;let n=10**t,r=e*n*(1+Number.EPSILON);return It(r)/n}const Ul=new Map;function ow(e){return((""+e).split(".")[1]||"").length}function ms(e,t,n,r){let o=[],l=r.map(ow);for(let i=t;i=0&&i>=0?0:s)+(i>=l[a]?0:l[a]),c=ze(f,p);o.push(c),Ul.set(c,p)}}return o}const Vi={},lw=[],Vl=[null,null],Hr=Array.isArray,jP=Number.isInteger,DP=e=>e===void 0;function yg(e){return typeof e=="string"}function sc(e){let t=!1;if(e!=null){let n=e.constructor;t=n==null||n==Object}return t}function vg(e){return e!=null&&typeof e=="object"}const FP=Object.getPrototypeOf(Uint8Array);function Mo(e,t=sc){let n;if(Hr(e)){let r=e.find(o=>o!=null);if(Hr(r)||t(r)){n=Array(e.length);for(let o=0;ol){for(o=i-1;o>=0&&e[o]==null;)e[o--]=null;for(o=i+1;oi-s)],o=r[0].length,l=new Map;for(let i=0;i"u"?e=>Promise.resolve().then(e):queueMicrotask;function GP(e){let t=e[0],n=t.length,r=Array(n);for(let l=0;lt[l]-t[i]);let o=[];for(let l=0;l=r&&e[o]==null;)o--;if(o<=r)return!0;const l=zt(1,Tn((o-r+1)/t));for(let i=e[r],s=r+l;s<=o;s+=l){const u=e[s];if(u!=null){if(u<=i)return!1;i=u}}return!0}const iw=["January","February","March","April","May","June","July","August","September","October","November","December"],sw=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function aw(e){return e.slice(0,3)}const XP=sw.map(aw),ZP=iw.map(aw),qP={MMMM:iw,MMM:ZP,WWWW:sw,WWW:XP};function Ei(e){return(e<10?"0":"")+e}function JP(e){return(e<10?"00":e<100?"0":"")+e}const e3={YYYY:e=>e.getFullYear(),YY:e=>(e.getFullYear()+"").slice(2),MMMM:(e,t)=>t.MMMM[e.getMonth()],MMM:(e,t)=>t.MMM[e.getMonth()],MM:e=>Ei(e.getMonth()+1),M:e=>e.getMonth()+1,DD:e=>Ei(e.getDate()),D:e=>e.getDate(),WWWW:(e,t)=>t.WWWW[e.getDay()],WWW:(e,t)=>t.WWW[e.getDay()],HH:e=>Ei(e.getHours()),H:e=>e.getHours(),h:e=>{let t=e.getHours();return t==0?12:t>12?t-12:t},AA:e=>e.getHours()>=12?"PM":"AM",aa:e=>e.getHours()>=12?"pm":"am",a:e=>e.getHours()>=12?"p":"a",mm:e=>Ei(e.getMinutes()),m:e=>e.getMinutes(),ss:e=>Ei(e.getSeconds()),s:e=>e.getSeconds(),fff:e=>JP(e.getMilliseconds())};function uh(e,t){t=t||qP;let n=[],r=/\{([a-z]+)\}|[^{]+/gi,o;for(;o=r.exec(e);)n.push(o[0][0]=="{"?e3[o[1]]:o[0]);return l=>{let i="";for(let s=0;se%1==0,nu=[1,2,2.5,5],r3=ms(10,-16,0,nu),cw=ms(10,0,16,nu),o3=cw.filter(uw),l3=r3.concat(cw),ch=` +`,fw="{YYYY}",wg=ch+fw,dw="{M}/{D}",Ni=ch+dw,la=Ni+"/{YY}",pw="{aa}",i3="{h}:{mm}",ll=i3+pw,xg=ch+ll,Sg=":{ss}",Me=null;function hw(e){let t=e*1e3,n=t*60,r=n*60,o=r*24,l=o*30,i=o*365,u=(e==1?ms(10,0,3,nu).filter(uw):ms(10,-3,0,nu)).concat([t,t*5,t*10,t*15,t*30,n,n*5,n*10,n*15,n*30,r,r*2,r*3,r*4,r*6,r*8,r*12,o,o*2,o*3,o*4,o*5,o*6,o*7,o*8,o*9,o*10,o*15,l,l*2,l*3,l*4,l*6,i,i*2,i*5,i*10,i*25,i*50,i*100]);const a=[[i,fw,Me,Me,Me,Me,Me,Me,1],[o*28,"{MMM}",wg,Me,Me,Me,Me,Me,1],[o,dw,wg,Me,Me,Me,Me,Me,1],[r,"{h}"+pw,la,Me,Ni,Me,Me,Me,1],[n,ll,la,Me,Ni,Me,Me,Me,1],[t,Sg,la+" "+ll,Me,Ni+" "+ll,Me,xg,Me,1],[e,Sg+".{fff}",la+" "+ll,Me,Ni+" "+ll,Me,xg,Me,1]];function f(p){return(c,h,g,m,b,w)=>{let y=[],x=b>=i,_=b>=l&&b=o?o:b,P=Tn(g)-Tn(M),L=O+P+Wl(M-O,z);y.push(L);let U=p(L),W=U.getHours()+U.getMinutes()/n+U.getSeconds()/r,G=b/r,Y=c.axes[h]._space,le=w/Y;for(;L=ze(L+b,e==1?0:3),!(L>m);)if(G>1){let oe=Tn(ze(W+G,6))%24,H=p(L).getHours()-oe;H>1&&(H=-1),L-=H*r,W=(W+G)%24;let J=y[y.length-1];ze((L-J)/b,3)*le>=.7&&y.push(L)}else y.push(L)}return y}}return[u,a,f]}const[s3,a3,u3]=hw(1),[c3,f3,d3]=hw(.001);ms(2,-53,53,[1]);function bg(e,t){return e.map(n=>n.map((r,o)=>o==0||o==8||r==null?r:t(o==1||n[8]==0?r:n[1]+r)))}function kg(e,t){return(n,r,o,l,i)=>{let s=t.find(g=>i>=g[0])||t[t.length-1],u,a,f,p,c,h;return r.map(g=>{let m=e(g),b=m.getFullYear(),w=m.getMonth(),y=m.getDate(),x=m.getHours(),_=m.getMinutes(),C=m.getSeconds(),M=b!=u&&s[2]||w!=a&&s[3]||y!=f&&s[4]||x!=p&&s[5]||_!=c&&s[6]||C!=h&&s[7]||s[1];return u=b,a=w,f=y,p=x,c=_,h=C,M(m)})}}function p3(e,t){let n=uh(t);return(r,o,l,i,s)=>o.map(u=>n(e(u)))}function vf(e,t,n){return new Date(e,t,n)}function _g(e,t){return t(e)}const h3="{YYYY}-{MM}-{DD} {h}:{mm}{aa}";function Cg(e,t){return(n,r,o,l)=>l==null?oh:t(e(r))}function m3(e,t){let n=e.series[t];return n.width?n.stroke(e,t):n.points.width?n.points.stroke(e,t):null}function g3(e,t){return e.series[t].fill(e,t)}const y3={show:!0,live:!0,isolate:!1,mount:AP,markers:{show:!0,width:2,stroke:m3,fill:g3,dash:"solid"},idx:null,idxs:null,values:[]};function v3(e,t){let n=e.cursor.points,r=zn(),o=n.size(e,t);Ke(r,$i,o),Ke(r,Oi,o);let l=o/-2;Ke(r,"marginLeft",l),Ke(r,"marginTop",l);let i=n.width(e,t,o);return i&&Ke(r,"borderWidth",i),r}function w3(e,t){let n=e.series[t].points;return n._fill||n._stroke}function x3(e,t){let n=e.series[t].points;return n._stroke||n._fill}function S3(e,t){return e.series[t].points.size}function b3(e,t,n){return n}const wf=[0,0];function k3(e,t,n){return wf[0]=t,wf[1]=n,wf}function ia(e,t,n,r=!0){return o=>{o.button==0&&(!r||o.target==t)&&n(o)}}function xf(e,t,n,r=!0){return o=>{(!r||o.target==t)&&n(o)}}const _3={show:!0,x:!0,y:!0,lock:!1,move:k3,points:{show:v3,size:S3,width:0,stroke:x3,fill:w3},bind:{mousedown:ia,mouseup:ia,click:ia,dblclick:ia,mousemove:xf,mouseleave:xf,mouseenter:xf},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,click:(e,t)=>{t.stopPropagation(),t.stopImmediatePropagation()},_x:!1,_y:!1},focus:{prox:-1,bias:0},left:-10,top:-10,idx:null,dataIdx:b3,idxs:null,event:null},mw={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},fh=dt({},mw,{filter:nw}),gw=dt({},fh,{size:10}),yw=dt({},mw,{show:!1}),dh='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',vw="bold "+dh,ww=1.5,Eg={show:!0,scale:"x",stroke:rh,space:50,gap:5,size:50,labelGap:0,labelSize:30,labelFont:vw,side:2,grid:fh,ticks:gw,border:yw,font:dh,lineGap:ww,rotate:0},C3="Value",E3="Time",Tg={show:!0,scale:"x",auto:!1,sorted:1,min:ge,max:-ge,idxs:[]};function T3(e,t,n,r,o){return t.map(l=>l==null?"":ah(l))}function M3(e,t,n,r,o,l,i){let s=[],u=Ul.get(o)||0;n=i?n:ze(Wl(n,o),u);for(let a=n;a<=r;a=ze(a+o,u))s.push(Object.is(a,-0)?0:a);return s}function Td(e,t,n,r,o,l,i){const s=[],u=e.scales[e.axes[t].scale].log,a=u==10?Er:tw,f=Tn(a(n));o=Il(u,f),u==10&&f<0&&(o=ze(o,-f));let p=n;do s.push(p),p=p+o,u==10&&(p=ze(p,Ul.get(o))),p>=o*u&&(o=p);while(p<=r);return s}function P3(e,t,n,r,o,l,i){let u=e.scales[e.axes[t].scale].asinh,a=r>u?Td(e,t,zt(u,n),r,o):[u],f=r>=0&&n<=0?[0]:[];return(n<-u?Td(e,t,zt(u,-r),-n,o):[u]).reverse().map(c=>-c).concat(f,a)}const xw=/./,R3=/[12357]/,$3=/[125]/,Mg=/1/,Md=(e,t,n,r)=>e.map((o,l)=>t==4&&o==0||l%r==0&&n.test(o.toExponential()[o<0?1:0])?o:null);function O3(e,t,n,r,o){let l=e.axes[n],i=l.scale,s=e.scales[i],u=e.valToPos,a=l._space,f=u(10,i),p=u(9,i)-f>=a?xw:u(7,i)-f>=a?R3:u(5,i)-f>=a?$3:Mg;if(p==Mg){let c=Nt(u(1,i)-f);if(co,$g={show:!0,auto:!0,sorted:0,gaps:Sw,alpha:1,facets:[dt({},Rg,{scale:"x"}),dt({},Rg,{scale:"y"})]},Og={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:Sw,alpha:1,points:{show:L3,filter:null},values:null,min:ge,max:-ge,idxs:[],path:null,clip:null};function B3(e,t,n,r,o){return n/10}const bw={time:lP,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},j3=dt({},bw,{time:!1,ori:1}),Ng={};function kw(e,t){let n=Ng[e];return n||(n={key:e,plots:[],sub(r){n.plots.push(r)},unsub(r){n.plots=n.plots.filter(o=>o!=r)},pub(r,o,l,i,s,u,a){for(let f=0;f{let w=i.pxRound;const y=a.dir*(a.ori==0?1:-1),x=a.ori==0?ql:Jl;let _,C;y==1?(_=n,C=r):(_=r,C=n);let M=w(p(s[_],a,m,h)),E=w(c(u[_],f,b,g)),O=w(p(s[C],a,m,h)),z=w(c(l==1?f.max:f.min,f,b,g)),P=new Path2D(o);return x(P,O,z),x(P,M,z),x(P,M,E),P})}function uc(e,t,n,r,o,l){let i=null;if(e.length>0){i=new Path2D;const s=t==0?dc:hh;let u=n;for(let p=0;pc[0]){let h=c[0]-u;h>0&&s(i,u,r,h,r+l),u=c[1]}}let a=n+o-u,f=10;a>0&&s(i,u,r-f/2,a,r+l+f)}return i}function F3(e,t,n){let r=e[e.length-1];r&&r[0]==t?r[1]=n:e.push([t,n])}function ph(e,t,n,r,o,l,i){let s=[],u=e.length;for(let a=o==1?n:r;a>=n&&a<=r;a+=o)if(t[a]===null){let p=a,c=a;if(o==1)for(;++a<=r&&t[a]===null;)c=a;else for(;--a>=n&&t[a]===null;)c=a;let h=l(e[p]),g=c==p?h:l(e[c]),m=p-o;h=i<=0&&m>=0&&m=0&&w>=0&&w=h&&s.push([h,g])}return s}function zg(e){return e==0?LP:e==1?It:t=>yo(t,e)}function _w(e){let t=e==0?cc:fc,n=e==0?(o,l,i,s,u,a)=>{o.arcTo(l,i,s,u,a)}:(o,l,i,s,u,a)=>{o.arcTo(i,l,u,s,a)},r=e==0?(o,l,i,s,u)=>{o.rect(l,i,s,u)}:(o,l,i,s,u)=>{o.rect(i,l,u,s)};return(o,l,i,s,u,a=0,f=0)=>{a==0&&f==0?r(o,l,i,s,u):(a=kn(a,s/2,u/2),f=kn(f,s/2,u/2),t(o,l+a,i),n(o,l+s,i,l+s,i+u,a),n(o,l+s,i+u,l,i+u,f),n(o,l,i+u,l,i,f),n(o,l,i,l+s,i,a),o.closePath())}}const cc=(e,t,n)=>{e.moveTo(t,n)},fc=(e,t,n)=>{e.moveTo(n,t)},ql=(e,t,n)=>{e.lineTo(t,n)},Jl=(e,t,n)=>{e.lineTo(n,t)},dc=_w(0),hh=_w(1),Cw=(e,t,n,r,o,l)=>{e.arc(t,n,r,o,l)},Ew=(e,t,n,r,o,l)=>{e.arc(n,t,r,o,l)},Tw=(e,t,n,r,o,l,i)=>{e.bezierCurveTo(t,n,r,o,l,i)},Mw=(e,t,n,r,o,l,i)=>{e.bezierCurveTo(n,t,o,r,i,l)};function Pw(e){return(t,n,r,o,l)=>Fo(t,n,(i,s,u,a,f,p,c,h,g,m,b)=>{let{pxRound:w,points:y}=i,x,_;a.ori==0?(x=cc,_=Cw):(x=fc,_=Ew);const C=ze(y.width*Ee,3);let M=(y.size-y.width)/2*Ee,E=ze(M*2,3),O=new Path2D,z=new Path2D,{left:P,top:L,width:U,height:W}=t.bbox;dc(z,P-E,L-E,U+E*2,W+E*2);const G=Y=>{if(u[Y]!=null){let le=w(p(s[Y],a,m,h)),oe=w(c(u[Y],f,b,g));x(O,le+M,oe),_(O,le,oe,M,0,ka*2)}};if(l)l.forEach(G);else for(let Y=r;Y<=o;Y++)G(Y);return{stroke:C>0?O:null,fill:O,clip:z,flags:Ao|ru}})}function Rw(e){return(t,n,r,o,l,i)=>{r!=o&&(l!=r&&i!=r&&e(t,n,r),l!=o&&i!=o&&e(t,n,o),e(t,n,i))}}const I3=Rw(ql),H3=Rw(Jl);function $w(e){const t=Te(e==null?void 0:e.alignGaps,0);return(n,r,o,l)=>Fo(n,r,(i,s,u,a,f,p,c,h,g,m,b)=>{let w=i.pxRound,y=V=>w(p(V,a,m,h)),x=V=>w(c(V,f,b,g)),_,C;a.ori==0?(_=ql,C=I3):(_=Jl,C=H3);const M=a.dir*(a.ori==0?1:-1),E={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Ao},O=E.stroke;let z=ge,P=-ge,L,U,W,G=y(s[M==1?o:l]),Y=Dl(u,o,l,1*M),le=Dl(u,o,l,-1*M),oe=y(s[Y]),D=y(s[le]),X=!1;for(let V=M==1?o:l;V>=o&&V<=l;V+=M){let ve=y(s[V]),q=u[V];ve==G?q!=null?(U=x(q),z==ge&&(_(O,ve,U),L=U),z=kn(U,z),P=zt(U,P)):q===null&&(X=!0):(z!=ge&&(C(O,G,z,P,L,U),W=G),q!=null?(U=x(q),_(O,ve,U),z=P=L=U):(z=ge,P=-ge,q===null&&(X=!0)),G=ve)}z!=ge&&z!=P&&W!=G&&C(O,G,z,P,L,U);let[H,J]=ac(n,r);if(i.fill!=null||H!=0){let V=E.fill=new Path2D(O),ve=i.fillTo(n,r,i.min,i.max,H),q=x(ve);_(V,D,q),_(V,oe,q)}if(!i.spanGaps){let V=[];X&&V.push(...ph(s,u,o,l,M,y,t)),E.gaps=V=i.gaps(n,r,o,l,V),E.clip=uc(V,a.ori,h,g,m,b)}return J!=0&&(E.band=J==2?[Tr(n,r,o,l,O,-1),Tr(n,r,o,l,O,1)]:Tr(n,r,o,l,O,J)),E})}function W3(e){const t=Te(e.align,1),n=Te(e.ascDesc,!1),r=Te(e.alignGaps,0),o=Te(e.extend,!1);return(l,i,s,u)=>Fo(l,i,(a,f,p,c,h,g,m,b,w,y,x)=>{let _=a.pxRound,{left:C,width:M}=l.bbox,E=H=>_(g(H,c,y,b)),O=H=>_(m(H,h,x,w)),z=c.ori==0?ql:Jl;const P={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Ao},L=P.stroke,U=c.dir*(c.ori==0?1:-1);s=Dl(p,s,u,1),u=Dl(p,s,u,-1);let W=O(p[U==1?s:u]),G=E(f[U==1?s:u]),Y=G,le=G;o&&t==-1&&(le=C,z(L,le,W)),z(L,G,W);for(let H=U==1?s:u;H>=s&&H<=u;H+=U){let J=p[H];if(J==null)continue;let V=E(f[H]),ve=O(J);t==1?z(L,V,W):z(L,Y,ve),z(L,V,ve),W=ve,Y=V}let oe=Y;o&&t==1&&(oe=C+M,z(L,oe,W));let[D,X]=ac(l,i);if(a.fill!=null||D!=0){let H=P.fill=new Path2D(L),J=a.fillTo(l,i,a.min,a.max,D),V=O(J);z(H,oe,V),z(H,le,V)}if(!a.spanGaps){let H=[];H.push(...ph(f,p,s,u,U,E,r));let J=a.width*Ee/2,V=n||t==1?J:-J,ve=n||t==-1?-J:J;H.forEach(q=>{q[0]+=V,q[1]+=ve}),P.gaps=H=a.gaps(l,i,s,u,H),P.clip=uc(H,c.ori,b,w,y,x)}return X!=0&&(P.band=X==2?[Tr(l,i,s,u,L,-1),Tr(l,i,s,u,L,1)]:Tr(l,i,s,u,L,X)),P})}function U3(e){e=e||Vi;const t=Te(e.size,[.6,ge,1]),n=e.align||0,r=(e.gap||0)*Ee;let o=e.radius;o=o==null?[0,0]:typeof o=="number"?[o,0]:o;const l=me(o),i=1-t[0],s=Te(t[1],ge)*Ee,u=Te(t[2],1)*Ee,a=Te(e.disp,Vi),f=Te(e.each,h=>{}),{fill:p,stroke:c}=a;return(h,g,m,b)=>Fo(h,g,(w,y,x,_,C,M,E,O,z,P,L)=>{let U=w.pxRound,W,G;_.ori==0?[W,G]=l(h,g):[G,W]=l(h,g);const Y=_.dir*(_.ori==0?1:-1),le=C.dir*(C.ori==1?1:-1);let oe=_.ori==0?dc:hh,D=_.ori==0?f:(ee,be,Le,Je,at,Ye,te)=>{f(ee,be,Le,at,Je,te,Ye)},[X,H]=ac(h,g),J=C.distr==3?X==1?C.max:C.min:0,V=E(J,C,L,z),ve,q,ae=U(w.width*Ee),Ne=!1,wt=null,qt=null,st=null,un=null;p!=null&&(ae==0||c!=null)&&(Ne=!0,wt=p.values(h,g,m,b),qt=new Map,new Set(wt).forEach(ee=>{ee!=null&&qt.set(ee,new Path2D)}),ae>0&&(st=c.values(h,g,m,b),un=new Map,new Set(st).forEach(ee=>{ee!=null&&un.set(ee,new Path2D)})));let{x0:Jt,size:Nn}=a,Nr=!0;if(Jt!=null&&Nn!=null){y=Jt.values(h,g,m,b),Jt.unit==2&&(y=y.map(be=>h.posToVal(O+be*P,_.key,!0)));let ee=Nn.values(h,g,m,b);Nn.unit==2?q=ee[0]*P:q=M(ee[0],_,P,O)-M(0,_,P,O),q=U(q-ae),ve=Y==1?-ae/2:q+ae/2}else{let ee=P;if(y.length>1){let Le=null;for(let Je=0,at=1/0;Jeee&&(Nr=!1)}const wn={stroke:null,fill:null,clip:null,band:null,gaps:null,flags:Ao|ru};let vr;H!=0&&(wn.band=new Path2D,vr=U(E(H==1?C.max:C.min,C,L,z)));const rr=Ne?null:new Path2D,xt=wn.band;let{y0:ot,y1:or}=a,Ct=null;ot!=null&&or!=null&&(x=or.values(h,g,m,b),Ct=ot.values(h,g,m,b));let en=W*q,ce=G*q;for(let ee=Y==1?m:b;ee>=m&&ee<=b;ee+=Y){let be=x[ee];if(be===void 0)continue;let Le=_.distr!=2||a!=null?y[ee]:ee,Je=M(Le,_,P,O),at=E(Te(be,J),C,L,z);Ct!=null&&be!=null&&(V=E(Ct[ee],C,L,z));let Ye=U(Je-ve),te=U(zt(at,V)),ut=U(kn(at,V)),Et=te-ut;if(be!=null){let tn=be<0?ce:en,cn=be<0?en:ce;Ne?(ae>0&&st[ee]!=null&&oe(un.get(st[ee]),Ye,ut+Tn(ae/2),q,zt(0,Et-ae),tn,cn),wt[ee]!=null&&oe(qt.get(wt[ee]),Ye,ut+Tn(ae/2),q,zt(0,Et-ae),tn,cn)):oe(rr,Ye,ut+Tn(ae/2),q,zt(0,Et-ae),tn,cn),D(h,g,ee,Ye-ae/2,ut,q+ae,Et)}H!=0&&(be!=null||Nr)&&(le*H==1?(te=ut,ut=vr):(ut=te,te=vr),Et=te-ut,oe(xt,Ye-ae/2,ut,q+ae,zt(0,Et),0,0))}return ae>0&&(wn.stroke=Ne?un:rr),wn.fill=Ne?qt:rr,wn})}function V3(e,t){const n=Te(t==null?void 0:t.alignGaps,0);return(r,o,l,i)=>Fo(r,o,(s,u,a,f,p,c,h,g,m,b,w)=>{let y=s.pxRound,x=oe=>y(c(oe,f,b,g)),_=oe=>y(h(oe,p,w,m)),C,M,E;f.ori==0?(C=cc,E=ql,M=Tw):(C=fc,E=Jl,M=Mw);const O=f.dir*(f.ori==0?1:-1);l=Dl(a,l,i,1),i=Dl(a,l,i,-1);let z=x(u[O==1?l:i]),P=z,L=[],U=[];for(let oe=O==1?l:i;oe>=l&&oe<=i;oe+=O)if(a[oe]!=null){let X=u[oe],H=x(X);L.push(P=H),U.push(_(a[oe]))}const W={stroke:e(L,U,C,E,M,y),fill:null,clip:null,band:null,gaps:null,flags:Ao},G=W.stroke;let[Y,le]=ac(r,o);if(s.fill!=null||Y!=0){let oe=W.fill=new Path2D(G),D=s.fillTo(r,o,s.min,s.max,Y),X=_(D);E(oe,P,X),E(oe,z,X)}if(!s.spanGaps){let oe=[];oe.push(...ph(u,a,l,i,O,x,n)),W.gaps=oe=s.gaps(r,o,l,i,oe),W.clip=uc(oe,f.ori,g,m,b,w)}return le!=0&&(W.band=le==2?[Tr(r,o,l,i,G,-1),Tr(r,o,l,i,G,1)]:Tr(r,o,l,i,G,le)),W})}function K3(e){return V3(G3,e)}function G3(e,t,n,r,o,l){const i=e.length;if(i<2)return null;const s=new Path2D;if(n(s,e[0],t[0]),i==2)r(s,e[1],t[1]);else{let u=Array(i),a=Array(i-1),f=Array(i-1),p=Array(i-1);for(let c=0;c0!=a[c]>0?u[c]=0:(u[c]=3*(p[c-1]+p[c])/((2*p[c]+p[c-1])/a[c-1]+(p[c]+2*p[c-1])/a[c]),isFinite(u[c])||(u[c]=0));u[i-1]=a[i-2];for(let c=0;c{Lt.pxRatio=Ee}));const Y3=$w(),Q3=Pw();function Lg(e,t,n,r){return(r?[e[0],e[1]].concat(e.slice(2)):[e[0]].concat(e.slice(1))).map((l,i)=>Rd(l,i,t,n))}function X3(e,t){return e.map((n,r)=>r==0?null:dt({},t,n))}function Rd(e,t,n,r){return dt({},t==0?n:r,e)}function Ow(e,t,n){return t==null?Vl:[t,n]}const Z3=Ow;function q3(e,t,n){return t==null?Vl:tu(t,n,sh,!0)}function Nw(e,t,n,r){return t==null?Vl:ic(t,n,e.scales[r].log,!1)}const J3=Nw;function zw(e,t,n,r){return t==null?Vl:ih(t,n,e.scales[r].log,!1)}const eR=zw;function tR(e,t,n,r,o){let l=zt(pg(e),pg(t)),i=t-e,s=Dr(o/r*i,n);do{let u=n[s],a=r*u/i;if(a>=o&&l+(u<5?Ul.get(u):0)<=17)return[u,a]}while(++s(t=It((n=+o)*Ee))+"px"),[e,t,n]}function nR(e){e.show&&[e.font,e.labelFont].forEach(t=>{let n=ze(t[2]*Ee,1);t[0]=t[0].replace(/[0-9.]+px/,n+"px"),t[1]=n})}function Lt(e,t,n){const r={mode:Te(e.mode,1)},o=r.mode;function l(d,v){return((v.distr==3?Er(d>0?d:v.clamp(r,d,v.min,v.max,v.key)):v.distr==4?yf(d,v.asinh):d)-v._min)/(v._max-v._min)}function i(d,v,S,k){let T=l(d,v);return k+S*(v.dir==-1?1-T:T)}function s(d,v,S,k){let T=l(d,v);return k+S*(v.dir==-1?T:1-T)}function u(d,v,S,k){return v.ori==0?i(d,v,S,k):s(d,v,S,k)}r.valToPosH=i,r.valToPosV=s;let a=!1;r.status=0;const f=r.root=zn(iP);if(e.id!=null&&(f.id=e.id),xn(f,e.class),e.title){let d=zn(uP,f);d.textContent=e.title}const p=Qn("canvas"),c=r.ctx=p.getContext("2d"),h=zn(cP,f);To("click",h,d=>{d.target===m&&(De!=Wo||Fe!=Uo)&&Dt.click(r,d)},!0);const g=r.under=zn(fP,h);h.appendChild(p);const m=r.over=zn(dP,h);e=Mo(e);const b=+Te(e.pxAlign,1),w=zg(b);(e.plugins||[]).forEach(d=>{d.opts&&(e=d.opts(r,e)||e)});const y=e.ms||.001,x=r.series=o==1?Lg(e.series||[],Tg,Og,!1):X3(e.series||[null],$g),_=r.axes=Lg(e.axes||[],Eg,Pg,!0),C=r.scales={},M=r.bands=e.bands||[];M.forEach(d=>{d.fill=me(d.fill||null),d.dir=Te(d.dir,-1)});const E=o==2?x[1].facets[0].scale:x[0].scale,O={axes:tx,series:Xw},z=(e.drawOrder||["axes","series"]).map(d=>O[d]);function P(d){let v=C[d];if(v==null){let S=(e.scales||Vi)[d]||Vi;if(S.from!=null)P(S.from),C[d]=dt({},C[S.from],S,{key:d});else{v=C[d]=dt({},d==E?bw:j3,S),v.key=d;let k=v.time,T=v.range,N=Hr(T);if((d!=E||o==2&&!k)&&(N&&(T[0]==null||T[1]==null)&&(T={min:T[0]==null?cg:{mode:1,hard:T[0],soft:T[0]},max:T[1]==null?cg:{mode:1,hard:T[1],soft:T[1]}},N=!1),!N&&sc(T))){let B=T;T=(I,K,re)=>K==null?Vl:tu(K,re,B)}v.range=me(T||(k?Z3:d==E?v.distr==3?J3:v.distr==4?eR:Ow:v.distr==3?Nw:v.distr==4?zw:q3)),v.auto=me(N?!1:v.auto),v.clamp=me(v.clamp||B3),v._min=v._max=null}}}P("x"),P("y"),o==1&&x.forEach(d=>{P(d.scale)}),_.forEach(d=>{P(d.scale)});for(let d in e.scales)P(d);const L=C[E],U=L.distr;let W,G;L.ori==0?(xn(f,sP),W=i,G=s):(xn(f,aP),W=s,G=i);const Y={};for(let d in C){let v=C[d];(v.min!=null||v.max!=null)&&(Y[d]={min:v.min,max:v.max},v.min=v.max=null)}const le=e.tzDate||(d=>new Date(It(d/y))),oe=e.fmtDate||uh,D=y==1?u3(le):d3(le),X=kg(le,bg(y==1?a3:f3,oe)),H=Cg(le,_g(h3,oe)),J=[],V=r.legend=dt({},y3,e.legend),ve=V.show,q=V.markers;V.idxs=J,q.width=me(q.width),q.dash=me(q.dash),q.stroke=me(q.stroke),q.fill=me(q.fill);let ae,Ne,wt,qt=[],st=[],un,Jt=!1,Nn={};if(V.live){const d=x[1]?x[1].values:null;Jt=d!=null,un=Jt?d(r,1,0):{_:0};for(let v in un)Nn[v]=oh}if(ve)if(ae=Qn("table",vP,f),wt=Qn("tbody",null,ae),V.mount(r,ae),Jt){Ne=Qn("thead",null,ae,wt);let d=Qn("tr",null,Ne);Qn("th",null,d);for(var Nr in un)Qn("th",q0,d).textContent=Nr}else xn(ae,xP),V.live&&xn(ae,wP);const wn={show:!0},vr={show:!1};function rr(d,v){if(v==0&&(Jt||!V.live||o==2))return Vl;let S=[],k=Qn("tr",SP,wt,wt.childNodes[v]);xn(k,d.class),d.show||xn(k,wo);let T=Qn("th",null,k);if(q.show){let I=zn(bP,T);if(v>0){let K=q.width(r,v);K&&(I.style.border=K+"px "+q.dash(r,v)+" "+q.stroke(r,v)),I.style.background=q.fill(r,v)}}let N=zn(q0,T);N.textContent=d.label,v>0&&(q.show||(N.style.color=d.width>0?q.stroke(r,v):q.fill(r,v)),ot("click",T,I=>{if(se._lock)return;Un(I);let K=x.indexOf(d);if((I.ctrlKey||I.metaKey)!=V.isolate){let re=x.some((F,ne)=>ne>0&&ne!=K&&F.show);x.forEach((F,ne)=>{ne>0&&sr(ne,re?ne==K?wn:vr:wn,!0,ct.setSeries)})}else sr(K,{show:!d.show},!0,ct.setSeries)},!1),ti&&ot(rg,T,I=>{se._lock||(Un(I),sr(x.indexOf(d),Go,!0,ct.setSeries))},!1));for(var B in un){let I=Qn("td",kP,k);I.textContent="--",S.push(I)}return[k,S]}const xt=new Map;function ot(d,v,S,k=!0){const T=xt.get(v)||{},N=se.bind[d](r,v,S,k);N&&(To(d,v,T[d]=N),xt.set(v,T))}function or(d,v,S){const k=xt.get(v)||{};for(let T in k)(d==null||T==d)&&(Ed(T,v,k[T]),delete k[T]);d==null&&xt.delete(v)}let Ct=0,en=0,ce=0,ee=0,be=0,Le=0,Je=0,at=0,Ye=0,te=0;r.bbox={};let ut=!1,Et=!1,tn=!1,cn=!1,uo=!1,Q=!1;function ie(d,v,S){(S||d!=r.width||v!=r.height)&&pe(d,v),oi(!1),tn=!0,Et=!0,se.left>=0&&(cn=Q=!0),fo()}function pe(d,v){r.width=Ct=ce=d,r.height=en=ee=v,be=Le=0,Io(),mc();let S=r.bbox;Je=S.left=yo(be*Ee,.5),at=S.top=yo(Le*Ee,.5),Ye=S.width=yo(ce*Ee,.5),te=S.height=yo(ee*Ee,.5)}const xe=3;function Tt(){let d=!1,v=0;for(;!d;){v++;let S=Jw(v),k=ex(v);d=v==xe||S&&k,d||(pe(r.width,r.height),Et=!0)}}function lr({width:d,height:v}){ie(d,v)}r.setSize=lr;function Io(){let d=!1,v=!1,S=!1,k=!1;_.forEach((T,N)=>{if(T.show&&T._show){let{side:B,_size:I}=T,K=B%2,re=T.label!=null?T.labelSize:0,F=I+re;F>0&&(K?(ce-=F,B==3?(be+=F,k=!0):S=!0):(ee-=F,B==0?(Le+=F,d=!0):v=!0))}}),co[0]=d,co[1]=S,co[2]=v,co[3]=k,ce-=zr[1]+zr[3],be+=zr[3],ee-=zr[2]+zr[0],Le+=zr[0]}function mc(){let d=be+ce,v=Le+ee,S=be,k=Le;function T(N,B){switch(N){case 1:return d+=B,d-B;case 2:return v+=B,v-B;case 3:return S-=B,S+B;case 0:return k-=B,k+B}}_.forEach((N,B)=>{if(N.show&&N._show){let I=N.side;N._pos=T(I,N._size),N.label!=null&&(N._lpos=T(I,N.labelSize))}})}const se=r.cursor=dt({},_3,{drag:{y:o==2}},e.cursor),Un=d=>{se.event=d};se.idxs=J,se._lock=!1;let ir=se.points;ir.show=me(ir.show),ir.size=me(ir.size),ir.stroke=me(ir.stroke),ir.width=me(ir.width),ir.fill=me(ir.fill);const ei=r.focus=dt({},e.focus||{alpha:.3},se.focus),ti=ei.prox>=0;let fn=[null];function Uw(d,v){if(v>0){let S=se.points.show(r,v);if(S)return xn(S,yP),xn(S,d.class),ol(S,-10,-10,ce,ee),m.insertBefore(S,fn[v]),S}}function yh(d,v){if(o==1||v>0){let S=o==1&&C[d.scale].time,k=d.value;d.value=S?yg(k)?Cg(le,_g(k,oe)):k||H:k||z3,d.label=d.label||(S?E3:C3)}if(v>0){d.width=d.width==null?1:d.width,d.paths=d.paths||Y3||BP,d.fillTo=me(d.fillTo||D3),d.pxAlign=+Te(d.pxAlign,b),d.pxRound=zg(d.pxAlign),d.stroke=me(d.stroke||null),d.fill=me(d.fill||null),d._stroke=d._fill=d._paths=d._focus=null;let S=A3(zt(1,d.width),1),k=d.points=dt({},{size:S,width:zt(1,S*.2),stroke:d.stroke,space:S*2,paths:Q3,_stroke:null,_fill:null},d.points);k.show=me(k.show),k.filter=me(k.filter),k.fill=me(k.fill),k.stroke=me(k.stroke),k.paths=me(k.paths),k.pxAlign=d.pxAlign}if(ve){let S=rr(d,v);qt.splice(v,0,S[0]),st.splice(v,0,S[1]),V.values.push(null)}if(se.show){J.splice(v,0,null);let S=Uw(d,v);S&&fn.splice(v,0,S)}Ft("addSeries",v)}function Vw(d,v){v=v??x.length,d=o==1?Rd(d,v,Tg,Og):Rd(d,v,null,$g),x.splice(v,0,d),yh(x[v],v)}r.addSeries=Vw;function Kw(d){if(x.splice(d,1),ve){V.values.splice(d,1),st.splice(d,1);let v=qt.splice(d,1)[0];or(null,v.firstChild),v.remove()}se.show&&(J.splice(d,1),fn.length>1&&fn.splice(d,1)[0].remove()),Ft("delSeries",d)}r.delSeries=Kw;const co=[!1,!1,!1,!1];function Gw(d,v){if(d._show=d.show,d.show){let S=d.side%2,k=C[d.scale];k==null&&(d.scale=S?x[1].scale:E,k=C[d.scale]);let T=k.time;d.size=me(d.size),d.space=me(d.space),d.rotate=me(d.rotate),Hr(d.incrs)&&d.incrs.forEach(B=>{!Ul.has(B)&&Ul.set(B,ow(B))}),d.incrs=me(d.incrs||(k.distr==2?o3:T?y==1?s3:c3:l3)),d.splits=me(d.splits||(T&&k.distr==1?D:k.distr==3?Td:k.distr==4?P3:M3)),d.stroke=me(d.stroke),d.grid.stroke=me(d.grid.stroke),d.ticks.stroke=me(d.ticks.stroke),d.border.stroke=me(d.border.stroke);let N=d.values;d.values=Hr(N)&&!Hr(N[0])?me(N):T?Hr(N)?kg(le,bg(N,oe)):yg(N)?p3(le,N):N||X:N||T3,d.filter=me(d.filter||(k.distr>=3&&k.log==10?O3:k.distr==3&&k.log==2?N3:nw)),d.font=Bg(d.font),d.labelFont=Bg(d.labelFont),d._size=d.size(r,null,v,0),d._space=d._rotate=d._incrs=d._found=d._splits=d._values=null,d._size>0&&(co[v]=!0,d._el=zn(pP,h))}}function ni(d,v,S,k){let[T,N,B,I]=S,K=v%2,re=0;return K==0&&(I||N)&&(re=v==0&&!T||v==2&&!B?It(Eg.size/3):0),K==1&&(T||B)&&(re=v==1&&!N||v==3&&!I?It(Pg.size/2):0),re}const vh=r.padding=(e.padding||[ni,ni,ni,ni]).map(d=>me(Te(d,ni))),zr=r._padding=vh.map((d,v)=>d(r,v,co,0));let jt,Mt=null,Pt=null;const Cs=o==1?x[0].idxs:null;let Vn=null,Es=!1;function wh(d,v){if(t=d==null?[]:Mo(d,vg),o==2){jt=0;for(let S=1;S=0,Q=!0,fo()}}r.setData=wh;function gc(){Es=!0;let d,v;o==1&&(jt>0?(Mt=Cs[0]=0,Pt=Cs[1]=jt-1,d=t[0][Mt],v=t[0][Pt],U==2?(d=Mt,v=Pt):d==v&&(U==3?[d,v]=ic(d,d,L.log,!1):U==4?[d,v]=ih(d,d,L.log,!1):L.time?v=d+It(86400/y):[d,v]=tu(d,v,sh,!0))):(Mt=Cs[0]=d=null,Pt=Cs[1]=v=null)),Vo(E,d,v)}let Ts,Ho,yc,vc,wc,xc,Sc,bc,kc,ri;function xh(d,v,S,k,T,N){d??(d=eg),S??(S=lw),k??(k="butt"),T??(T=eg),N??(N="round"),d!=Ts&&(c.strokeStyle=Ts=d),T!=Ho&&(c.fillStyle=Ho=T),v!=yc&&(c.lineWidth=yc=v),N!=wc&&(c.lineJoin=wc=N),k!=xc&&(c.lineCap=xc=k),S!=vc&&c.setLineDash(vc=S)}function Sh(d,v,S,k){v!=Ho&&(c.fillStyle=Ho=v),d!=Sc&&(c.font=Sc=d),S!=bc&&(c.textAlign=bc=S),k!=kc&&(c.textBaseline=kc=k)}function _c(d,v,S,k,T=0){if(k.length>0&&d.auto(r,Es)&&(v==null||v.min==null)){let N=Te(Mt,0),B=Te(Pt,k.length-1),I=S.min==null?d.distr==3?RP(k,N,B):PP(k,N,B,T):[S.min,S.max];d.min=kn(d.min,S.min=I[0]),d.max=zt(d.max,S.max=I[1])}}function Yw(){let d=Mo(C,vg);for(let k in d){let T=d[k],N=Y[k];if(N!=null&&N.min!=null)dt(T,N),k==E&&oi(!0);else if(k!=E||o==2)if(jt==0&&T.from==null){let B=T.range(r,null,null,k);T.min=B[0],T.max=B[1]}else T.min=ge,T.max=-ge}if(jt>0){x.forEach((k,T)=>{if(o==1){let N=k.scale,B=d[N],I=Y[N];if(T==0){let K=B.range(r,B.min,B.max,N);B.min=K[0],B.max=K[1],Mt=Dr(B.min,t[0]),Pt=Dr(B.max,t[0]),Pt-Mt>1&&(t[0][Mt]B.max&&Pt--),k.min=Vn[Mt],k.max=Vn[Pt]}else k.show&&k.auto&&_c(B,I,k,t[T],k.sorted);k.idxs[0]=Mt,k.idxs[1]=Pt}else if(T>0&&k.show&&k.auto){let[N,B]=k.facets,I=N.scale,K=B.scale,[re,F]=t[T];_c(d[I],Y[I],N,re,N.sorted),_c(d[K],Y[K],B,F,B.sorted),k.min=B.min,k.max=B.max}});for(let k in d){let T=d[k],N=Y[k];if(T.from==null&&(N==null||N.min==null)){let B=T.range(r,T.min==ge?null:T.min,T.max==-ge?null:T.max,k);T.min=B[0],T.max=B[1]}}}for(let k in d){let T=d[k];if(T.from!=null){let N=d[T.from];if(N.min==null)T.min=T.max=null;else{let B=T.range(r,N.min,N.max,k);T.min=B[0],T.max=B[1]}}}let v={},S=!1;for(let k in d){let T=d[k],N=C[k];if(N.min!=T.min||N.max!=T.max){N.min=T.min,N.max=T.max;let B=N.distr;N._min=B==3?Er(N.min):B==4?yf(N.min,N.asinh):N.min,N._max=B==3?Er(N.max):B==4?yf(N.max,N.asinh):N.max,v[k]=S=!0}}if(S){x.forEach((k,T)=>{o==2?T>0&&v.y&&(k._paths=null):v[k.scale]&&(k._paths=null)});for(let k in v)tn=!0,Ft("setScale",k);se.show&&se.left>=0&&(cn=Q=!0)}for(let k in Y)Y[k]=null}function Qw(d){let v=hg(Mt-1,0,jt-1),S=hg(Pt+1,0,jt-1);for(;d[v]==null&&v>0;)v--;for(;d[S]==null&&S0&&(x.forEach((d,v)=>{if(v>0&&d.show&&d._paths==null){let S=o==2?[0,t[v][0].length-1]:Qw(t[v]);d._paths=d.paths(r,v,S[0],S[1])}}),x.forEach((d,v)=>{if(v>0&&d.show){ri!=d.alpha&&(c.globalAlpha=ri=d.alpha),bh(v,!1),d._paths&&kh(v,!1);{bh(v,!0);let S=d._paths?d._paths.gaps:null,k=d.points.show(r,v,Mt,Pt,S),T=d.points.filter(r,v,k,S);(k||T)&&(d.points._paths=d.points.paths(r,v,Mt,Pt,T),kh(v,!0))}ri!=1&&(c.globalAlpha=ri=1),Ft("drawSeries",v)}}))}function bh(d,v){let S=v?x[d].points:x[d];S._stroke=S.stroke(r,d),S._fill=S.fill(r,d)}function kh(d,v){let S=v?x[d].points:x[d],k=S._stroke,T=S._fill,{stroke:N,fill:B,clip:I,flags:K}=S._paths,re=null,F=ze(S.width*Ee,3),ne=F%2/2;v&&T==null&&(T=F>0?"#fff":k);let ue=S.pxAlign==1&&ne>0;if(ue&&c.translate(ne,ne),!v){let et=Je-F/2,he=at-F/2,ke=Ye+F,Se=te+F;re=new Path2D,re.rect(et,he,ke,Se)}v?Cc(k,F,S.dash,S.cap,T,N,B,K,I):Zw(d,k,F,S.dash,S.cap,T,N,B,K,re,I),ue&&c.translate(-ne,-ne)}function Zw(d,v,S,k,T,N,B,I,K,re,F){let ne=!1;M.forEach((ue,et)=>{if(ue.series[0]==d){let he=x[ue.series[1]],ke=t[ue.series[1]],Se=(he._paths||Vi).band;Hr(Se)&&(Se=ue.dir==1?Se[0]:Se[1]);let Re,Qe=null;he.show&&Se&&OP(ke,Mt,Pt)?(Qe=ue.fill(r,et)||N,Re=he._paths.clip):Se=null,Cc(v,S,k,T,Qe,B,I,K,re,F,Re,Se),ne=!0}}),ne||Cc(v,S,k,T,N,B,I,K,re,F)}const _h=Ao|ru;function Cc(d,v,S,k,T,N,B,I,K,re,F,ne){xh(d,v,S,k,T),(K||re||ne)&&(c.save(),K&&c.clip(K),re&&c.clip(re)),ne?(I&_h)==_h?(c.clip(ne),F&&c.clip(F),Ps(T,B),Ms(d,N,v)):I&ru?(Ps(T,B),c.clip(ne),Ms(d,N,v)):I&Ao&&(c.save(),c.clip(ne),F&&c.clip(F),Ps(T,B),c.restore(),Ms(d,N,v)):(Ps(T,B),Ms(d,N,v)),(K||re||ne)&&c.restore()}function Ms(d,v,S){S>0&&(v instanceof Map?v.forEach((k,T)=>{c.strokeStyle=Ts=T,c.stroke(k)}):v!=null&&d&&c.stroke(v))}function Ps(d,v){v instanceof Map?v.forEach((S,k)=>{c.fillStyle=Ho=k,c.fill(S)}):v!=null&&d&&c.fill(v)}function qw(d,v,S,k){let T=_[d],N;if(k<=0)N=[0,0];else{let B=T._space=T.space(r,d,v,S,k),I=T._incrs=T.incrs(r,d,v,S,k,B);N=tR(v,S,I,k,B)}return T._found=N}function Ec(d,v,S,k,T,N,B,I,K,re){let F=B%2/2;b==1&&c.translate(F,F),xh(I,B,K,re,I),c.beginPath();let ne,ue,et,he,ke=T+(k==0||k==3?-N:N);S==0?(ue=T,he=ke):(ne=T,et=ke);for(let Se=0;Se{if(!S.show)return;let T=C[S.scale];if(T.min==null){S._show&&(v=!1,S._show=!1,oi(!1));return}else S._show||(v=!1,S._show=!0,oi(!1));let N=S.side,B=N%2,{min:I,max:K}=T,[re,F]=qw(k,I,K,B==0?ce:ee);if(F==0)return;let ne=T.distr==2,ue=S._splits=S.splits(r,k,I,K,re,F,ne),et=T.distr==2?ue.map(Re=>Vn[Re]):ue,he=T.distr==2?Vn[ue[1]]-Vn[ue[0]]:re,ke=S._values=S.values(r,S.filter(r,et,k,F,he),k,F,he);S._rotate=N==2?S.rotate(r,ke,k,F):0;let Se=S._size;S._size=Fl(S.size(r,ke,k,d)),Se!=null&&S._size!=Se&&(v=!1)}),v}function ex(d){let v=!0;return vh.forEach((S,k)=>{let T=S(r,k,co,d);T!=zr[k]&&(v=!1),zr[k]=T}),v}function tx(){for(let d=0;d<_.length;d++){let v=_[d];if(!v.show||!v._show)continue;let S=v.side,k=S%2,T,N,B=v.stroke(r,d),I=S==0||S==3?-1:1;if(v.label){let Gn=v.labelGap*I,wr=It((v._lpos+Gn)*Ee);Sh(v.labelFont[0],B,"center",S==2?Ci:J0),c.save(),k==1?(T=N=0,c.translate(wr,It(at+te/2)),c.rotate((S==3?-ka:ka)/2)):(T=It(Je+Ye/2),N=wr),c.fillText(v.label,T,N),c.restore()}let[K,re]=v._found;if(re==0)continue;let F=C[v.scale],ne=k==0?Ye:te,ue=k==0?Je:at,et=It(v.gap*Ee),he=v._splits,ke=F.distr==2?he.map(Gn=>Vn[Gn]):he,Se=F.distr==2?Vn[he[1]]-Vn[he[0]]:K,Re=v.ticks,Qe=v.border,dn=Re.show?It(Re.size*Ee):0,Ie=v._rotate*-ka/180,ft=w(v._pos*Ee),Kt=(dn+et)*I,lt=ft+Kt;N=k==0?lt:0,T=k==1?lt:0;let rn=v.font[0],Kn=v.align==1?rl:v.align==2?mf:Ie>0?rl:Ie<0?mf:k==0?"center":S==3?mf:rl,Br=Ie||k==1?"middle":S==2?Ci:J0;Sh(rn,B,Kn,Br);let Wh=v.font[1]*v.lineGap,As=he.map(Gn=>w(u(Gn,F,ne,ue))),Uh=v._values;for(let Gn=0;Gn{S>0&&(v._paths=null,d&&(o==1?(v.min=null,v.max=null):v.facets.forEach(k=>{k.min=null,k.max=null})))})}let Tc=!1;function fo(){Tc||(KP(nx),Tc=!0)}function nx(){ut&&(Yw(),ut=!1),tn&&(Tt(),tn=!1),Et&&(Ke(g,rl,be),Ke(g,Ci,Le),Ke(g,$i,ce),Ke(g,Oi,ee),Ke(m,rl,be),Ke(m,Ci,Le),Ke(m,$i,ce),Ke(m,Oi,ee),Ke(h,$i,Ct),Ke(h,Oi,en),p.width=It(Ct*Ee),p.height=It(en*Ee),_.forEach(({_el:d,_show:v,_size:S,_pos:k,side:T})=>{if(d!=null)if(v){let N=T===3||T===0?S:0,B=T%2==1;Ke(d,B?"left":"top",k-N),Ke(d,B?"width":"height",S),Ke(d,B?"top":"left",B?Le:be),Ke(d,B?"height":"width",B?ee:ce),Cd(d,wo)}else xn(d,wo)}),Ts=Ho=yc=wc=xc=Sc=bc=kc=vc=null,ri=1,ci(!0),Ft("setSize"),Et=!1),Ct>0&&en>0&&(c.clearRect(0,0,p.width,p.height),Ft("drawClear"),z.forEach(d=>d()),Ft("draw")),nn.show&&uo&&(Os(nn),uo=!1),se.show&&cn&&(po(null,!0,!1),cn=!1),V.show&&V.live&&Q&&($c(),Q=!1),a||(a=!0,r.status=1,Ft("ready")),Es=!1,Tc=!1}r.redraw=(d,v)=>{tn=v||!1,d!==!1?Vo(E,L.min,L.max):fo()};function Mc(d,v){let S=C[d];if(S.from==null){if(jt==0){let k=S.range(r,v.min,v.max,d);v.min=k[0],v.max=k[1]}if(v.min>v.max){let k=v.min;v.min=v.max,v.max=k}if(jt>1&&v.min!=null&&v.max!=null&&v.max-v.min<1e-16)return;d==E&&S.distr==2&&jt>0&&(v.min=Dr(v.min,t[0]),v.max=Dr(v.max,t[0]),v.min==v.max&&v.max++),Y[d]=v,ut=!0,fo()}}r.setScale=Mc;let Pc,Rc,Rs,$s,Ch,Eh,Wo,Uo,Th,Mh,De,Fe,Ar=!1;const Dt=se.drag;let Rt=Dt.x,$t=Dt.y;se.show&&(se.x&&(Pc=zn(mP,m)),se.y&&(Rc=zn(gP,m)),L.ori==0?(Rs=Pc,$s=Rc):(Rs=Rc,$s=Pc),De=se.left,Fe=se.top);const nn=r.select=dt({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),li=nn.show?zn(hP,nn.over?m:g):null;function Os(d,v){if(nn.show){for(let S in d)nn[S]=d[S],S in Oh&&Ke(li,S,d[S]);v!==!1&&Ft("setSelect")}}r.setSelect=Os;function rx(d,v){let S=x[d],k=ve?qt[d]:null;S.show?k&&Cd(k,wo):(k&&xn(k,wo),fn.length>1&&ol(fn[d],-10,-10,ce,ee))}function Vo(d,v,S){Mc(d,{min:v,max:S})}function sr(d,v,S,k){v.focus!=null&&ax(d),v.show!=null&&x.forEach((T,N)=>{N>0&&(d==N||d==null)&&(T.show=v.show,rx(N,v.show),Vo(o==2?T.facets[1].scale:T.scale,null,null),fo())}),S!==!1&&Ft("setSeries",d,v),k&&fi("setSeries",r,d,v)}r.setSeries=sr;function ox(d,v){dt(M[d],v)}function lx(d,v){d.fill=me(d.fill||null),d.dir=Te(d.dir,-1),v=v??M.length,M.splice(v,0,d)}function ix(d){d==null?M.length=0:M.splice(d,1)}r.addBand=lx,r.setBand=ox,r.delBand=ix;function sx(d,v){x[d].alpha=v,se.show&&fn[d]&&(fn[d].style.opacity=v),ve&&qt[d]&&(qt[d].style.opacity=v)}let Ko,ii,si;const Go={focus:!0};function ax(d){if(d!=si){let v=d==null,S=ei.alpha!=1;x.forEach((k,T)=>{let N=v||T==0||T==d;k._focus=v?null:N,S&&sx(T,N?1:ei.alpha)}),si=d,S&&fo()}}ve&&ti&&ot(og,ae,d=>{se._lock||(Un(d),si!=null&&sr(null,Go,!0,ct.setSeries))});function ar(d,v,S){let k=C[v];S&&(d=d/Ee-(k.ori==1?Le:be));let T=ce;k.ori==1&&(T=ee,d=T-d),k.dir==-1&&(d=T-d);let N=k._min,B=k._max,I=d/T,K=N+(B-N)*I,re=k.distr;return re==3?Il(10,K):re==4?zP(K,k.asinh):K}function ux(d,v){let S=ar(d,E,v);return Dr(S,t[0],Mt,Pt)}r.valToIdx=d=>Dr(d,t[0]),r.posToIdx=ux,r.posToVal=ar,r.valToPos=(d,v,S)=>C[v].ori==0?i(d,C[v],S?Ye:ce,S?Je:0):s(d,C[v],S?te:ee,S?at:0);function cx(d){d(r),fo()}r.batch=cx,r.setCursor=(d,v,S)=>{De=d.left,Fe=d.top,po(null,v,S)};function Ph(d,v){Ke(li,rl,nn.left=d),Ke(li,$i,nn.width=v)}function Rh(d,v){Ke(li,Ci,nn.top=d),Ke(li,Oi,nn.height=v)}let ai=L.ori==0?Ph:Rh,ui=L.ori==1?Ph:Rh;function fx(){if(ve&&V.live)for(let d=o==2?1:0;d{J[k]=S}):DP(d.idx)||J.fill(d.idx),V.idx=J[0]);for(let S=0;S0||o==1&&!Jt)&&dx(S,J[S]);ve&&V.live&&fx(),Q=!1,v!==!1&&Ft("setLegend")}r.setLegend=$c;function dx(d,v){let S=x[d],k=d==0&&U==2?Vn:t[d],T;Jt?T=S.values(r,d,v)??Nn:(T=S.value(r,v==null?null:k[v],d,v),T=T==null?Nn:{_:T}),V.values[d]=T}function po(d,v,S){Th=De,Mh=Fe,[De,Fe]=se.move(r,De,Fe),se.show&&(Rs&&ol(Rs,It(De),0,ce,ee),$s&&ol($s,0,It(Fe),ce,ee));let k,T=Mt>Pt;Ko=ge;let N=L.ori==0?ce:ee,B=L.ori==1?ce:ee;if(De<0||jt==0||T){k=null;for(let I=0;I0&&fn.length>1&&ol(fn[I],-10,-10,ce,ee);ti&&sr(null,Go,!0,d==null&&ct.setSeries),V.live&&(J.fill(k),Q=!0)}else{let I,K,re;o==1&&(I=L.ori==0?De:Fe,K=ar(I,E),k=Dr(K,t[0],Mt,Pt),re=W(t[0][k],L,N,0));for(let F=o==2?1:0;F0&&ne.show){let Re=ke==null?-10:Wl(G(ke,o==1?C[ne.scale]:C[ne.facets[1].scale],B,0),1);if(ti&&Re>=0&&o==1){let Ie=Nt(Re-Fe);if(Ie=0?1:-1,Kn=lt>=0?1:-1;Kn==rn&&(Kn==1?ft==1?ke>=lt:ke<=lt:ft==1?ke<=lt:ke>=lt)&&(Ko=Ie,ii=F)}else Ko=Ie,ii=F}}let Qe,dn;if(L.ori==0?(Qe=Se,dn=Re):(Qe=Re,dn=Se),Q&&fn.length>1){TP(fn[F],se.points.fill(r,F),se.points.stroke(r,F));let Ie,ft,Kt,lt,rn=!0,Kn=se.points.bbox;if(Kn!=null){rn=!1;let Br=Kn(r,F);Kt=Br.left,lt=Br.top,Ie=Br.width,ft=Br.height}else Kt=Qe,lt=dn,Ie=ft=se.points.size(r,F);MP(fn[F],Ie,ft,rn),ol(fn[F],Kt,lt,ce,ee)}}}}if(se.idx=k,se.left=De,se.top=Fe,Q&&(V.idx=k,$c()),nn.show&&Ar)if(d!=null){let[I,K]=ct.scales,[re,F]=ct.match,[ne,ue]=d.cursor.sync.scales,et=d.cursor.drag;if(Rt=et._x,$t=et._y,Rt||$t){let{left:he,top:ke,width:Se,height:Re}=d.select,Qe=d.scales[I].ori,dn=d.posToVal,Ie,ft,Kt,lt,rn,Kn=I!=null&&re(I,ne),Br=K!=null&&F(K,ue);Kn&&Rt?(Qe==0?(Ie=he,ft=Se):(Ie=ke,ft=Re),Kt=C[I],lt=W(dn(Ie,ne),Kt,N,0),rn=W(dn(Ie+ft,ne),Kt,N,0),ai(kn(lt,rn),Nt(rn-lt))):ai(0,N),Br&&$t?(Qe==1?(Ie=he,ft=Se):(Ie=ke,ft=Re),Kt=C[K],lt=G(dn(Ie,ue),Kt,B,0),rn=G(dn(Ie+ft,ue),Kt,B,0),ui(kn(lt,rn),Nt(rn-lt))):ui(0,B)}else Ns()}else{let I=Nt(Th-Ch),K=Nt(Mh-Eh);if(L.ori==1){let ue=I;I=K,K=ue}Rt=Dt.x&&I>=Dt.dist,$t=Dt.y&&K>=Dt.dist;let re=Dt.uni;re!=null?Rt&&$t&&(Rt=I>=re,$t=K>=re,!Rt&&!$t&&(K>I?$t=!0:Rt=!0)):Dt.x&&Dt.y&&(Rt||$t)&&(Rt=$t=!0);let F,ne;Rt&&(L.ori==0?(F=Wo,ne=De):(F=Uo,ne=Fe),ai(kn(F,ne),Nt(ne-F)),$t||ui(0,B)),$t&&(L.ori==1?(F=Wo,ne=De):(F=Uo,ne=Fe),ui(kn(F,ne),Nt(ne-F)),Rt||ai(0,N)),!Rt&&!$t&&(ai(0,0),ui(0,0))}if(Dt._x=Rt,Dt._y=$t,d==null){if(S){if(Hh!=null){let[I,K]=ct.scales;ct.values[0]=I!=null?ar(L.ori==0?De:Fe,I):null,ct.values[1]=K!=null?ar(L.ori==1?De:Fe,K):null}fi(tg,r,De,Fe,ce,ee,k)}if(ti){let I=S&&ct.setSeries,K=ei.prox;si==null?Ko<=K&&sr(ii,Go,!0,I):Ko>K?sr(null,Go,!0,I):ii!=si&&sr(ii,Go,!0,I)}}v!==!1&&Ft("setCursor")}let Lr=null;Object.defineProperty(r,"rect",{get(){return Lr==null&&ci(!1),Lr}});function ci(d=!1){d?Lr=null:(Lr=m.getBoundingClientRect(),Ft("syncRect",Lr))}function $h(d,v,S,k,T,N,B){se._lock||Ar&&d!=null&&d.movementX==0&&d.movementY==0||(Oc(d,v,S,k,T,N,B,!1,d!=null),d!=null?po(null,!0,!0):po(v,!0,!1))}function Oc(d,v,S,k,T,N,B,I,K){if(Lr==null&&ci(!1),Un(d),d!=null)S=d.clientX-Lr.left,k=d.clientY-Lr.top;else{if(S<0||k<0){De=-10,Fe=-10;return}let[re,F]=ct.scales,ne=v.cursor.sync,[ue,et]=ne.values,[he,ke]=ne.scales,[Se,Re]=ct.match,Qe=v.axes[0].side%2==1,dn=L.ori==0?ce:ee,Ie=L.ori==1?ce:ee,ft=Qe?N:T,Kt=Qe?T:N,lt=Qe?k:S,rn=Qe?S:k;if(he!=null?S=Se(re,he)?u(ue,C[re],dn,0):-10:S=dn*(lt/ft),ke!=null?k=Re(F,ke)?u(et,C[F],Ie,0):-10:k=Ie*(rn/Kt),L.ori==1){let Kn=S;S=k,k=Kn}}K&&((S<=1||S>=ce-1)&&(S=yo(S,ce)),(k<=1||k>=ee-1)&&(k=yo(k,ee))),I?(Ch=S,Eh=k,[Wo,Uo]=se.move(r,S,k)):(De=S,Fe=k)}const Oh={width:0,height:0,left:0,top:0};function Ns(){Os(Oh,!1)}let Nh,zh,Ah,Lh;function Bh(d,v,S,k,T,N,B){Ar=!0,Rt=$t=Dt._x=Dt._y=!1,Oc(d,v,S,k,T,N,B,!0,!1),d!=null&&(ot(gf,kd,jh,!1),fi(ng,r,Wo,Uo,ce,ee,null));let{left:I,top:K,width:re,height:F}=nn;Nh=I,zh=K,Ah=re,Lh=F,Ns()}function jh(d,v,S,k,T,N,B){Ar=Dt._x=Dt._y=!1,Oc(d,v,S,k,T,N,B,!1,!0);let{left:I,top:K,width:re,height:F}=nn,ne=re>0||F>0,ue=Nh!=I||zh!=K||Ah!=re||Lh!=F;if(ne&&ue&&Os(nn),Dt.setScale&&ne&&ue){let et=I,he=re,ke=K,Se=F;if(L.ori==1&&(et=K,he=F,ke=I,Se=re),Rt&&Vo(E,ar(et,E),ar(et+he,E)),$t)for(let Re in C){let Qe=C[Re];Re!=E&&Qe.from==null&&Qe.min!=ge&&Vo(Re,ar(ke+Se,Re),ar(ke,Re))}Ns()}else se.lock&&(se._lock=!se._lock,se._lock||po(null,!0,!1));d!=null&&(or(gf,kd),fi(gf,r,De,Fe,ce,ee,null))}function px(d,v,S,k,T,N,B){if(se._lock)return;Un(d);let I=Ar;if(Ar){let K=!0,re=!0,F=10,ne,ue;L.ori==0?(ne=Rt,ue=$t):(ne=$t,ue=Rt),ne&&ue&&(K=De<=F||De>=ce-F,re=Fe<=F||Fe>=ee-F),ne&&K&&(De=De{let T=ct.match[2];S=T(r,v,S),S!=-1&&sr(S,k,!0,!1)},se.show&&(ot(ng,m,Bh),ot(tg,m,$h),ot(rg,m,d=>{Un(d),ci(!1)}),ot(og,m,px),ot(lg,m,Dh),Pd.add(r),r.syncRect=ci);const zs=r.hooks=e.hooks||{};function Ft(d,v,S){d in zs&&zs[d].forEach(k=>{k.call(null,r,v,S)})}(e.plugins||[]).forEach(d=>{for(let v in d.hooks)zs[v]=(zs[v]||[]).concat(d.hooks[v])});const Ih=(d,v,S)=>S,ct=dt({key:null,setSeries:!1,filters:{pub:mg,sub:mg},scales:[E,x[1]?x[1].scale:null],match:[gg,gg,Ih],values:[null,null]},se.sync);ct.match.length==2&&ct.match.push(Ih),se.sync=ct;const Hh=ct.key,Nc=kw(Hh);function fi(d,v,S,k,T,N,B){ct.filters.pub(d,v,S,k,T,N,B)&&Nc.pub(d,v,S,k,T,N,B)}Nc.sub(r);function hx(d,v,S,k,T,N,B){ct.filters.sub(d,v,S,k,T,N,B)&&Yo[d](null,v,S,k,T,N,B)}r.pub=hx;function mx(){Nc.unsub(r),Pd.delete(r),xt.clear(),Ed(eu,Tl,Fh),f.remove(),ae==null||ae.remove(),Ft("destroy")}r.destroy=mx;function zc(){Ft("init",e,t),wh(t||e.data,!1),Y[E]?Mc(E,Y[E]):gc(),uo=nn.show,cn=Q=!0,ie(e.width,e.height)}return x.forEach(yh),_.forEach(Gw),n?n instanceof HTMLElement?(n.appendChild(f),zc()):n(r,zc):zc(),r}Lt.assign=dt;Lt.fmtNum=ah;Lt.rangeNum=tu;Lt.rangeLog=ic;Lt.rangeAsinh=ih;Lt.orient=Fo;Lt.pxRatio=Ee;Lt.join=VP;Lt.fmtDate=uh,Lt.tzDate=n3;Lt.sync=kw;{Lt.addGap=F3,Lt.clipGaps=uc;let e=Lt.paths={points:Pw};e.linear=$w,e.stepped=W3,e.bars=U3,e.spline=K3}const rR=Object.freeze(Object.defineProperty({__proto__:null,default:Lt},Symbol.toStringTag,{value:"Module"}));function oR(e,t){return Qv(e,{formatSubMilliseconds:!0,compact:t}).split(" ").slice(0,2).join(" ")}function jg(e){return Xv(e)}const Dg=Lt.fmtDate("{YYYY}-{MM}-{DD} {HH}:{mm}:{ss}");function mh(e,t,n){switch(e){case"duration":return oR(t,n);case"bytes":return jg(t);case"bps":return jg(t)+"/s";case"counter":return Z0(t).format("0.[0]a");case"rps":return Z0(t).format("0.[00]a")+"/s";case"date":return Dg(t);case"timestamp":return Dg(new Date(t*1e3));default:return isNaN(t)||t==null?"0":t.toFixed(2)}}const Sf=["#7b65fa","#65d1fa","#af8b47","#fa7765","#4792af","#af5347","#4f5aaf","#9e65fa","#d95f02","#1b9e77","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"];function Fg(e){return function(t,n,r,o){return o==null?"--":n==null?"":mh(e,n)}}class pc{constructor(t,n){this.data=t.select(Object.keys(n)),this.series=pc.buildSeries(this.data,n)}static buildSeries(t,n){const r=[{value:Fg("timestamp")}],o=Object.keys(n);for(var l=0;ll&&Array.isArray(t[l+1])})}return r}}var Aw={exports:{}};const lR=yx(rR);(function(e,t){(function(r,o){e.exports=o($,lR)})(Vr,(n,r)=>(()=>{var o={"./common/index.ts":(u,a,f)=>{f.r(a),f.d(a,{dataMatch:()=>h,optionsUpdateState:()=>c});var p=function(g,m){var b={};for(var w in g)Object.prototype.hasOwnProperty.call(g,w)&&m.indexOf(w)<0&&(b[w]=g[w]);if(g!=null&&typeof Object.getOwnPropertySymbols=="function")for(var y=0,w=Object.getOwnPropertySymbols(g);y{u.exports=n},uplot:u=>{u.exports=r}},l={};function i(u){var a=l[u];if(a!==void 0)return a.exports;var f=l[u]={exports:{}};return o[u](f,f.exports,i),f.exports}i.n=u=>{var a=u&&u.__esModule?()=>u.default:()=>u;return i.d(a,{a}),a},i.d=(u,a)=>{for(var f in a)i.o(a,f)&&!i.o(u,f)&&Object.defineProperty(u,f,{enumerable:!0,get:a[f]})},i.o=(u,a)=>Object.prototype.hasOwnProperty.call(u,a),i.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var s={};return(()=>{/*!*******************************!*\ + !*** ./react/uplot-react.tsx ***! + \*******************************/i.r(s),i.d(s,{default:()=>h});var u=i("react"),a=i.n(u),f=i("uplot"),p=i.n(f),c=i("./common/index.ts");function h(g){var m=g.options,b=g.data,w=g.target,y=g.onDelete,x=g.onCreate,_=g.resetScales,C=_===void 0?!0:_,M=(0,u.useRef)(null),E=(0,u.useRef)(null),O=(0,u.useRef)(m),z=(0,u.useRef)(w),P=(0,u.useRef)(b),L=(0,u.useRef)(x),U=(0,u.useRef)(y);(0,u.useEffect)(function(){L.current=x,U.current=y});var W=(0,u.useCallback)(function(Y){var le;Y&&((le=U.current)===null||le===void 0||le.call(U,Y),Y.destroy(),M.current=null)},[]),G=(0,u.useCallback)(function(){var Y,le=new(p())(O.current,P.current,z.current||E.current);M.current=le,(Y=L.current)===null||Y===void 0||Y.call(L,le)},[]);return(0,u.useEffect)(function(){return G(),function(){W(M.current)}},[G,W]),(0,u.useEffect)(function(){if(O.current!==m){var Y=(0,c.optionsUpdateState)(O.current,m);O.current=m,!M.current||Y==="create"?(W(M.current),G()):Y==="update"&&M.current.setSize({width:m.width,height:m.height})}},[m,G,W]),(0,u.useEffect)(function(){P.current!==b&&(M.current?(0,c.dataMatch)(P.current,b)||(C?M.current.setData(b,!0):(M.current.setData(b,!1),M.current.redraw())):(P.current=b,G()),P.current=b)},[b,C,G]),(0,u.useEffect)(function(){return z.current!==w&&(z.current=w,G()),function(){return W(M.current)}},[w,G,W]),w?null:a().createElement("div",{ref:E})}})(),s=s.default,s})())})(Aw);var iR=Aw.exports;const $d=zd(iR);function sR(e){let t;function n(l){t=document.createElement("div"),t.className="u-tooltip",t.style.display="none",l.over.appendChild(t),l.over.onmouseleave=()=>{t.style.display="none"}}function r(l){o(l)}function o(l){const i=l.over.getBoundingClientRect();t.style.display="block";let s=aR(l);if(!s){t.style.display="none";return}t.innerHTML=s;const{left:u,top:a}=l.cursor;t.innerHTML=s,ul.over.focus()}}}function aR(e){const{idx:t}=e.cursor;if(t==null)return"";let r=`
`;for(var o=1;o`}return r+="
${e.legend.values[0]._}
${uR(l,i)}${s}${u}
",r}function uR(e,t){return``}var Lw=function(){if(typeof Map<"u")return Map;function e(t,n){var r=-1;return t.some(function(o,l){return o[0]===n?(r=l,!0):!1}),r}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(n){var r=e(this.__entries__,n),o=this.__entries__[r];return o&&o[1]},t.prototype.set=function(n,r){var o=e(this.__entries__,n);~o?this.__entries__[o][1]=r:this.__entries__.push([n,r])},t.prototype.delete=function(n){var r=this.__entries__,o=e(r,n);~o&&r.splice(o,1)},t.prototype.has=function(n){return!!~e(this.__entries__,n)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(n,r){r===void 0&&(r=null);for(var o=0,l=this.__entries__;o0},e.prototype.connect_=function(){!Od||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),mR?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Od||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var n=t.propertyName,r=n===void 0?"":n,o=hR.some(function(l){return!!~r.indexOf(l)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Bw=function(e,t){for(var n=0,r=Object.keys(t);n"u"||!(Element instanceof Object))){if(!(t instanceof Kl(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(t)||(n.set(t,new _R(t)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(t instanceof Kl(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(t)&&(n.delete(t),n.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(n){n.isActive()&&t.activeObservations_.push(n)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,n=this.activeObservations_.map(function(r){return new CR(r.target,r.broadcastRect())});this.callback_.call(t,n,t),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),Dw=typeof WeakMap<"u"?new WeakMap:new Lw,Fw=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=gR.getInstance(),r=new ER(t,n,this);Dw.set(this,r)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Fw.prototype[e]=function(){var t;return(t=Dw.get(this))[e].apply(t,arguments)}});var TR=function(){return typeof ou.ResizeObserver<"u"?ou.ResizeObserver:Fw}();function MR(e,t,n){var r=this,o=$.useRef(null),l=$.useRef(0),i=$.useRef(null),s=$.useRef([]),u=$.useRef(),a=$.useRef(),f=$.useRef(e),p=$.useRef(!0);$.useEffect(function(){f.current=e},[e]);var c=!t&&t!==0&&typeof window<"u";if(typeof e!="function")throw new TypeError("Expected a function");t=+t||0;var h=!!(n=n||{}).leading,g=!("trailing"in n)||!!n.trailing,m="maxWait"in n,b=m?Math.max(+n.maxWait||0,t):null;$.useEffect(function(){return p.current=!0,function(){p.current=!1}},[]);var w=$.useMemo(function(){var y=function(O){var z=s.current,P=u.current;return s.current=u.current=null,l.current=O,a.current=f.current.apply(P,z)},x=function(O,z){c&&cancelAnimationFrame(i.current),i.current=c?requestAnimationFrame(O):setTimeout(O,z)},_=function(O){if(!p.current)return!1;var z=O-o.current;return!o.current||z>=t||z<0||m&&O-l.current>=b},C=function(O){return i.current=null,g&&s.current?y(O):(s.current=u.current=null,a.current)},M=function O(){var z=Date.now();if(_(z))return C(z);if(p.current){var P=t-(z-o.current),L=m?Math.min(P,b-(z-l.current)):P;x(O,L)}},E=function(){var O=Date.now(),z=_(O);if(s.current=[].slice.call(arguments),u.current=r,o.current=O,z){if(!i.current&&p.current)return l.current=o.current,x(M,t),h?y(o.current):a.current;if(m)return x(M,t),y(o.current)}return i.current||x(M,t),a.current};return E.cancel=function(){i.current&&(c?cancelAnimationFrame(i.current):clearTimeout(i.current)),l.current=0,s.current=o.current=u.current=i.current=null},E.isPending=function(){return!!i.current},E.flush=function(){return i.current?C(Date.now()):a.current},E},[h,m,t,b,g,c]);return w}var Iw={},Nd={};(function(e){var t=Vr&&Vr.__assign||function(){return t=Object.assign||function(c){for(var h,g=1,m=arguments.length;g"u"||c===null){var m=typeof g=="function"?g():g,b=i.errorCreator(n.NoValue,h,m);throw i.errorReporter&&i.errorReporter(n.NoValue,b,h,m),b}return c},f=function(c,h,g){var m=i.warningReporter;if(typeof c=="boolean"){if(!c){var b=typeof g=="function"?g():g;e.assert(m,"assert.soft must have warningReporter configured, see https://www.npmjs.com/package/assert-ts#configuration")(n.Condition,h,b)}return c}if(c==null){var b=typeof g=="function"?g():g;return e.assert(m,"assert.soft must have warningReporter configured, see https://www.npmjs.com/package/assert-ts#configuration")(n.NoValue,h,b),!1}return!0},p=a;p.soft=f,e.assert=p})(Nd);(function(e){var t=Vr&&Vr.__createBinding||(Object.create?function(o,l,i,s){s===void 0&&(s=i),Object.defineProperty(o,s,{enumerable:!0,get:function(){return l[i]}})}:function(o,l,i,s){s===void 0&&(s=i),o[s]=l[i]}),n=Vr&&Vr.__exportStar||function(o,l){for(var i in o)i!=="default"&&!Object.prototype.hasOwnProperty.call(l,i)&&t(l,o,i)};Object.defineProperty(e,"__esModule",{value:!0});var r=Nd;n(Nd,e),e.default=r.assert})(Iw);const PR=e=>e==null;var Hg,Wg;(function(e){e.GET="get",e.POST="post",e.PUT="put",e.DELETE="delete"})(Hg||(Hg={})),function(e){e[e.Ok=200]="Ok",e[e.Created=201]="Created",e[e.Accepted=202]="Accepted",e[e.NoContent=204]="NoContent",e[e.MovedPermanently=301]="MovedPermanently",e[e.Found=302]="Found",e[e.SeeOther=303]="SeeOther",e[e.BadRequest=400]="BadRequest",e[e.Unauthorised=401]="Unauthorised",e[e.PaymentRequired=402]="PaymentRequired",e[e.Forbidden=403]="Forbidden",e[e.NotFound=404]="NotFound",e[e.InternalServerError=500]="InternalServerError",e[e.NotImplemented=501]="NotImplemented",e[e.BadGateway=502]="BadGateway",e[e.ServiceUnavailable=503]="ServiceUnavailable",e[e.GatewayTimeout=504]="GatewayTimeout"}(Wg||(Wg={}));const RR=e=>e;var Lo;(function(e){e.development="development",e.test="test",e.production="production"})(Lo||(Lo={}));const gh=Lo.production||Lo.development;Lo.development;Lo.test;Lo.production;const Hw=(e,{debounceDelay:t=0,initialValues:n={width:0,height:0},transformFunc:r=RR,maxDifference:o=10}={})=>{const[{width:l,height:i},s]=$.useState({width:n.width,height:n.height}),u=$.useRef({width:n.width,height:n.height}),a=$.useCallback(r,[r]);Iw.assert(!!e,"You must pass a valid ref to useParentSize");const f=MR(c=>{s(c)},t,{leading:!0}),p=e.current;return $.useLayoutEffect(()=>{if(PR(p))return void s({width:l,height:i});const c=new TR(h=>{if(!Array.isArray(h)||h.length!==1)return;const g=h[0],m=Math.round(g.contentRect.width),b=Math.round(g.contentRect.height),w={width:m,height:b},y=Math.abs(m-u.current.width),x=Math.abs(b-u.current.height);(y>o||x>o)&&(u.current.height=b,u.current.width=m,f(w))});return requestAnimationFrame(()=>c.observe(p)),()=>{p&&(c==null||c.unobserve(p))}},[o,f,i,p,l]),$.useMemo(()=>a({width:l,height:i}),[i,a,l])},$R=Lt.sync("chart");function Ww(e){const t=new pc($.useContext(hs),e.series),n=$.useRef(null),{width:r}=Hw(n);if(t.data.lengthu.map(a=>mh(i,a)),o.axes[l].size=70)}}return e.plain?(o.cursor.show=!1,R.jsx($d,{options:o,data:t.data})):R.jsx(Kv,{ref:n,children:R.jsx($d,{options:o,data:t.data})})}const OR=[[3600*24*365,"{YYYY}",null,null,null,null,null,null,1],[3600*24*28,"{MMM}",` +{YYYY}`,null,null,null,null,null,1],[3600*24,"{MM}-{DD}",` +{YYYY}`,null,null,null,null,null,1],[3600,"{HH}",` +{YYYY}-{MM}-{DD}`,null,` +{MM}-{DD}`,null,null,null,1],[60,"{HH}:{mm}",` +{YYYY}-{MM}-{DD}`,null,` +{MM}-{DD}`,null,null,null,1],[1,":{ss}",` +{YYYY}-{MM}-{DD} {HH}:{mm}`,null,` +{MM}-{DD} {HH}:{mm}`,null,` +{HH}:{mm}`,null,1],[.001,":{ss}.{fff}",` +{YYYY}-{MM}-{DD} {HH}:{mm}`,null,` +{MM}-{DD} {HH}:{mm}`,null,` +{HH}:{mm}`,null,1]];function NR(e){const t=[];if(!Do(e()))return t;for(let n=0;ne()[n]},"report_section"+n));return t}function zR(e){const t=[];if(!Do(e()))return t;for(const n of e()){let r={...n,width:480,height:240,plain:!0};t.push(R.jsx(pt,{item:!0,xs:1,children:Ww(r)},"report"+n.title))}return t}function AR({conf:e}){return R.jsxs(R.Fragment,{children:[R.jsx(lo,{variant:"h5",component:"h2",align:"center",sx:{paddingBottom:"1em",paddingTop:"0.5em"},children:e().title}),R.jsx(lo,{paragraph:!0,sx:{marginLeft:"2em",marginRight:"2em"},children:e().description}),R.jsx(pt,{container:!0,spacing:3,columns:2,children:zR(()=>e().charts)})]})}function LR(e){return R.jsxs(R.Fragment,{children:[R.jsx(lo,{variant:"h5",component:"h2",align:"center",sx:{paddingBottom:"1em",paddingTop:"0.5em"},children:e.title}),R.jsx(lo,{paragraph:!0,sx:{marginLeft:"2em",marginRight:"2em"},children:e.description}),R.jsx(_s,{className:"Summary",sx:{marginLeft:"2em",marginRight:"2em"},children:R.jsxs(pt,{container:!0,spacing:3,columns:12,children:[R.jsx(pt,{item:!0,xs:12,children:R.jsx(Yr,{type:"trend",plain:!0,caption:"Trends"})},"trends"),R.jsx(pt,{item:!0,xs:7,children:R.jsx(Yr,{type:"counter",plain:!0,caption:"Counters"})},"counters"),R.jsx(pt,{item:!0,xs:5,children:R.jsxs(pt,{container:!0,spacing:3,columns:1,children:[R.jsx(pt,{item:!0,xs:1,children:R.jsx(Yr,{type:"rate",plain:!0,caption:"Rates"})},"rates"),R.jsx(pt,{item:!0,xs:1,children:R.jsx(Yr,{type:"gauge",plain:!0,caption:"Gauges"})},"gauges")]})})]})})]})}function BR(e){return R.jsxs(R.Fragment,{children:[R.jsxs(_s,{className:"FabBox",sx:{"& > :not(style)":{m:1}},children:[R.jsx(df,{color:"primary","aria-label":"Print",size:"small",onClick:window.print,children:R.jsx(tP,{})}),R.jsx(df,{color:"primary","aria-label":"Download",size:"small",download:"k6-report.html",href:"/report",children:R.jsx(nP,{})}),R.jsx(df,{color:"primary","aria-label":"Open",size:"small",onClick:()=>window.open("/report"),children:R.jsx(rP,{})})]}),R.jsxs("div",{className:"Report",children:[R.jsx(lo,{className:"PageHeader",component:"div",children:"k6 report"}),NR(e.conf),R.jsx(LR,{title:"Summary",description:"This section provides a summary of the test run metrics. The tables contains the aggregated values of the metrics for the entire test run."})]})]})}function jR(e){return R.jsx(R.Fragment,{children:R.jsx("div",{className:"Summary",children:R.jsxs(pt,{container:!0,spacing:3,columns:12,children:[R.jsx(pt,{item:!0,xs:12,children:R.jsx(Yr,{type:"trend",caption:"Trends"})},"trends"),R.jsx(pt,{item:!0,xs:7,children:R.jsx(Yr,{type:"counter",caption:"Counters"})},"counters"),R.jsx(pt,{item:!0,xs:5,children:R.jsxs(pt,{container:!0,spacing:3,columns:1,children:[R.jsx(pt,{item:!0,xs:1,children:R.jsx(Yr,{type:"rate",caption:"Rates"})},"rates"),R.jsx(pt,{item:!0,xs:1,children:R.jsx(Yr,{type:"gauge",caption:"Gauges"})},"gauges")]})})]})})})}function DR(e){const t=rc(),n=$.useContext(hs),r={};r[e.metric]={label:""};const o=new pc(n,r),l=$.useRef(null),{width:i,height:s}=Hw(l),u=n.values[e.metric];var a=Array.isArray(u)&&u.length!=0?Number(u.slice(-1)):0;a=mh(e.format,a,!0);let f={width:i,height:32,title:a,series:o.series,axes:[{show:!1},{show:!1}],legend:{show:!1},cursor:{show:!1}};const p=e.failure?t.palette.error.main:t.palette.primary.main;return f.series[1].points={show:!1},f.series[1].stroke=p,f.series[1].fill=p+"40",R.jsx(Kv,{className:"summary-panel",sx:{color:p},children:R.jsxs(IE,{children:[R.jsx(lo,{sx:{fontSize:"0.8rem"},color:"text.secondary",gutterBottom:!0,align:"center",children:e.title}),R.jsx("div",{ref:l,children:R.jsx($d,{options:f,data:o.data})})]})})}function FR(e){const t=[];if(!Do(e))return t;for(const n of e)t.push(R.jsx(pt,{item:!0,xs:1,children:DR(n)},n.title));return t}function IR(e){const t=[];if(!Do(e))return t;for(const n of e)t.push(R.jsx(pt,{item:!0,lg:6,xs:12,children:Ww(n)},n.title));return t}function HR(e){return R.jsxs(R.Fragment,{children:[R.jsx(_s,{children:R.jsx(pt,{container:!0,spacing:1,marginBottom:1,columns:6,children:FR(e.panels)})}),R.jsx(pt,{container:!0,spacing:1,children:IR(e.charts)})]})}function _a(e){const{children:t,value:n,index:r,...o}=e;return R.jsx(lo,{component:"div",role:"tabpanel",hidden:n!==r,id:`scrollable-auto-tabpanel-${r}`,"aria-labelledby":`scrollable-auto-tab-${r}`,...o,children:R.jsx(_s,{p:3,children:t})})}_a.propTypes={children:af.PropTypes.node,index:af.PropTypes.any.isRequired,value:af.PropTypes.any.isRequired};function bf(e){return{id:`scrollable-auto-tab-${e}`,"aria-controls":`scrollable-auto-tabpanel-${e}`}}function WR(e,t,n){const r=[];if(!Do(e()))return r;let o={snapshot:Y0("snapshot",n),cumulative:Y0("cumulative",n)};for(let i=0;in}),R.jsxs("div",{className:"Dashboard",children:[R.jsx(_s,{sx:{borderBottom:1,borderColor:"divider"},children:R.jsx(zM,{value:e,onChange:o,children:UR(()=>n.tabs)})}),WR(()=>n.tabs,e,()=>r)]})]})}const KR=new URLSearchParams(window.location.search).get("endpoint")||"http://localhost:5665/",GR=Yp({palette:{mode:"light",primary:{main:"#7b65fa"},secondary:{main:"#A47D4F"}}});kf.createRoot(document.getElementById("root")).render(R.jsx(Jn.StrictMode,{children:R.jsx(q2,{endpoint:KR+"events",children:R.jsx(TC,{theme:GR,children:R.jsx(VR,{})})})})); diff --git a/assets/ui/assets/open-708bae2d.svg b/assets/packages/ui/dist/assets/open-708bae2d.svg similarity index 100% rename from assets/ui/assets/open-708bae2d.svg rename to assets/packages/ui/dist/assets/open-708bae2d.svg diff --git a/assets/ui/assets/print-ecff7b74.svg b/assets/packages/ui/dist/assets/print-ecff7b74.svg similarity index 100% rename from assets/ui/assets/print-ecff7b74.svg rename to assets/packages/ui/dist/assets/print-ecff7b74.svg diff --git a/assets/ui/index.html b/assets/packages/ui/dist/index.html similarity index 69% rename from assets/ui/index.html rename to assets/packages/ui/dist/index.html index ecefcb0..648de97 100644 --- a/assets/ui/index.html +++ b/assets/packages/ui/dist/index.html @@ -5,10 +5,8 @@ - - k6 dashboard - + diff --git a/assets/ui/xk6-dashboard.svg b/assets/packages/ui/dist/xk6-dashboard.svg similarity index 100% rename from assets/ui/xk6-dashboard.svg rename to assets/packages/ui/dist/xk6-dashboard.svg diff --git a/assets/packages/ui/index.html b/assets/packages/ui/index.html index e786644..b087614 100644 --- a/assets/packages/ui/index.html +++ b/assets/packages/ui/index.html @@ -5,8 +5,6 @@ - - k6 dashboard diff --git a/assets/packages/ui/package.json b/assets/packages/ui/package.json index d0625aa..faa6124 100644 --- a/assets/packages/ui/package.json +++ b/assets/packages/ui/package.json @@ -1,5 +1,5 @@ { - "name": "xk6-dashboard-ui", + "name": "@xk6-dashboard/ui", "private": true, "version": "1.0.0", "type": "module", @@ -13,6 +13,7 @@ "@emotion/react": "^11.11.0", "@emotion/styled": "^11.11.0", "@mui/material": "^5.13.0", + "@xk6-dashboard/model": "0.0.1", "byte-size": "^8.1.1", "humanize-duration": "^3.28.0", "numeral": "^2.0.6", diff --git a/assets/packages/ui/public/boot.js b/assets/packages/ui/public/boot.js deleted file mode 100644 index 37658bb..0000000 --- a/assets/packages/ui/public/boot.js +++ /dev/null @@ -1,188 +0,0 @@ -const overviewPanels = [ - { - id: 'iterations', - title: 'Iteration Rate', - metric: 'iterations_counter_rate', - format: 'rps' - }, - { - id: 'vus', - title: 'VUs', - metric: 'vus_gauge_value', - format: 'counter' - }, - { - id: 'http_reqs', - title: 'HTTP Request Rate', - metric: 'http_reqs_counter_rate', - format: 'rps' - }, - { - id: 'http_req_duration', - title: 'HTTP Request Duration', - metric: 'http_req_duration_trend_avg', - format: 'duration' - }, - { - id: 'data_received', - title: 'Received Rate', - metric: 'data_received_counter_rate', - format: 'bps' - }, - { - id: 'data_sent', - title: 'Sent Rate', - metric: 'data_sent_counter_rate', - format: 'bps' - } -] - -const overviewCharts = [ - { - id: 'http_reqs', - title: 'VUs', - series: { - vus_gauge_value: { label: 'VUs', width: 2, scale: 'n', format: 'counter' }, - http_reqs_counter_rate: { label: 'HTTP request rate', scale: '1/s', format: 'rps' } - }, - axes: [{}, { scale: 'n' }, { scale: '1/s', side: 1, format: 'rps' }], - scales: [{}, {}, {}] - }, - { - id: 'data', - title: 'Transfer Rate', - series: { - data_sent_counter_rate: { label: 'data sent', rate: true, scale: 'sent', format: 'bps' }, - data_received_counter_rate: { - label: 'data received', - rate: true, - with: 2, - scale: 'received', - format: 'bps' - } - }, - axes: [{}, { scale: 'sent', format: 'bps' }, { scale: 'received', side: 1, format: 'bps' }] - }, - { - id: 'http_req_duration', - title: 'HTTP Request Duration', - series: { - http_req_duration_trend_avg: { label: 'avg', width: 2, format: 'duration' }, - 'http_req_duration_trend_p(90)': { label: 'p(90)', format: 'duration' }, - 'http_req_duration_trend_p(95)': { label: 'p(95)', format: 'duration' } - }, - axes: [{}, {format: 'duration'}, { side: 1, format: 'duration' }] - }, - { - id: 'iteration_duration', - title: 'Iteration Duration', - series: { - iteration_duration_trend_avg: { label: 'avg', width: 2, format: 'duration' }, - 'iteration_duration_trend_p(90)': { label: 'p(90)', format: 'duration' }, - 'iteration_duration_trend_p(95)': { label: 'p(95)', format: 'duration' } - }, - axes: [{}, {format: 'duration'}, { side: 1, format: 'duration' }] - } -] - -function suffix (event) { - return event == 'snapshot' ? '' : ' (cum)' -} - -function reportable (event) { - return event == 'snapshot' -} - -function tabOverview (event) { - return { - id: `overview_${event}`, - title: `Overview${suffix(event)}`, - event: event, - panels: overviewPanels, - charts: overviewCharts, - description: - 'This section provides an overview of the most important metrics of the test run. Graphs plot the value of metrics over time.' - } -} - -function chartTimings (metric, title) { - return { - id: metric, - title: title, - series: { - [`${metric}_trend_avg`]: { label: 'avg', width: 2, format: 'duration' }, - [`${metric}_trend_p(90)`]: { label: 'p(90)', format: 'duration' }, - [`${metric}_trend_p(95)`]: { label: 'p(95)', format: 'duration' } - }, - axes: [{}, {format: 'duration'}, { side: 1, format: 'duration' }], - height: 224 - } -} - -function tabTimings (event) { - return { - id: `timings_${event}`, - title: `Timings${suffix(event)}`, - event: event, - charts: [ - chartTimings('http_req_duration', 'HTTP Request Duration'), - chartTimings('http_req_waiting', 'HTTP Request Waiting'), - chartTimings('http_req_tls_handshaking', 'HTTP TLS handshaking'), - chartTimings('http_req_sending', 'HTTP Request Sending'), - chartTimings('http_req_connecting', 'HTTP Request Connecting'), - chartTimings('http_req_receiving', 'HTTP Request Receiving') - ], - report: reportable(event), - description: - 'This section provides an overview of test run HTTP timing metrics. Graphs plot the value of metrics over time.' - } -} - -const defaultConfig = { - title: 'k6 dashboard', - tabs: [ - tabOverview('snapshot'), - tabTimings('snapshot'), - ], - - tabOverview, - tabTimings, - - tab (id) { - let tab = null - - for (const t of this.tabs) { - if (t.id == id) { - tab = t - - break - } - } - - if (tab == null) { - tab = { id: id } - - this.tabs.push(tab) - } - - let lookup = (collection, id) => { - for (const item of collection) { - if (item.id == id) { - return item - } - } - - let item = { id: id } - collection.push(item) - - return item - } - - tab.chart = id => lookup(tab.charts, id) - tab.panel = id => lookup(tab.panels, id) - - return tab - } -} - -window.defaultConfig = defaultConfig diff --git a/assets/packages/ui/public/config.js b/assets/packages/ui/public/config.js deleted file mode 100644 index 0e44faf..0000000 --- a/assets/packages/ui/public/config.js +++ /dev/null @@ -1 +0,0 @@ -export default defaultConfig diff --git a/assets/packages/ui/public/init.js b/assets/packages/ui/public/init.js deleted file mode 100644 index 6508920..0000000 --- a/assets/packages/ui/public/init.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from "./config.js" - -window.config = config diff --git a/assets/packages/ui/src/Chart.jsx b/assets/packages/ui/src/Chart.jsx index 83a95e5..2c02b68 100644 --- a/assets/packages/ui/src/Chart.jsx +++ b/assets/packages/ui/src/Chart.jsx @@ -3,7 +3,7 @@ // SPDX-License-Identifier: MIT import React, { useContext, useRef } from 'react' -import { MetricsContext } from './metrics' +import { SamplesContext } from './samples' import { MetricsUplot } from './metrics-uplot' import './Chart.css' import UplotReact from 'uplot-react'; @@ -17,7 +17,7 @@ import {format} from './format' const sync = uPlot.sync("chart"); function Chart(props) { - const model = new MetricsUplot(useContext(MetricsContext), props.series) + const model = new MetricsUplot(useContext(SamplesContext), props.series) const ref = useRef(null); const { width } = useParentSize(ref); @@ -78,6 +78,6 @@ const dateFormats = [ [60, "{HH}:{mm}", "\n{YYYY}-{MM}-{DD}", null, "\n{MM}-{DD}", null, null, null, 1], [1, ":{ss}", "\n{YYYY}-{MM}-{DD} {HH}:{mm}", null, "\n{MM}-{DD} {HH}:{mm}", null, "\n{HH}:{mm}", null, 1], [0.001, ":{ss}.{fff}", "\n{YYYY}-{MM}-{DD} {HH}:{mm}", null, "\n{MM}-{DD} {HH}:{mm}", null, "\n{HH}:{mm}", null, 1], - ] +] export { Chart } diff --git a/assets/packages/ui/src/Dashboard.jsx b/assets/packages/ui/src/Dashboard.jsx index 3ef5ddf..0d3d848 100644 --- a/assets/packages/ui/src/Dashboard.jsx +++ b/assets/packages/ui/src/Dashboard.jsx @@ -4,9 +4,12 @@ import React from 'react'; import './Dashboard.css' -import { MetricsContext, useEvent } from './metrics'; +import { useMetricEvent } from './metrics'; +import { SamplesContext, useEvent } from './samples'; +import { useConfig } from './config'; import { Grid, Typography, Tabs, Tab, Box } from '@mui/material' import { PropTypes } from 'prop-types'; +import { SummaryContext, useSummary } from './summary'; import Header from './Header' import Report from './Report' @@ -94,30 +97,33 @@ function a11yProps(index) { }; } -function tabContents(conf, value) { +function tabContents(conf, value, metricsHook) { const all = [] - if (!iterable(conf)) { + if (!iterable(conf())) { return all } - let ctx = { snapshot: useEvent('snapshot'), cumulative: useEvent('cumulative') } + let ctx = { snapshot: useEvent('snapshot', metricsHook), cumulative: useEvent('cumulative', metricsHook) } - for (let i = 0; i < conf.length; i++) { + for (let i = 0; i < conf().length; i++) { all.push( - + - + - + ) } - let idx = conf.length + let idx = conf().length all.push( - + + + + ) @@ -125,7 +131,12 @@ function tabContents(conf, value) { all.push( - + + + + + + ) @@ -135,17 +146,17 @@ function tabContents(conf, value) { function tabs(conf) { const all = [] - if (!iterable(conf)) { + if (!iterable(conf())) { return all } - for (let i = 0; i < conf.length; i++) { + for (let i = 0; i < conf().length; i++) { all.push( - + ) } - let idx = conf.length + let idx = conf().length all.push( @@ -160,8 +171,10 @@ function tabs(conf) { return all } -function Dashboard(props) { +function Dashboard() { const [value, setValue] = React.useState(0); + const config = useConfig() + const metrics = useMetricEvent() function handleChange(event, newValue) { setValue(newValue); @@ -169,14 +182,14 @@ function Dashboard(props) { return ( <> -
+
config} />
- {tabs(props.tabs)} + {tabs(() => config.tabs)} - {tabContents(props.tabs, value)} + {tabContents(() => config.tabs, value, () => metrics)}
) diff --git a/assets/packages/ui/src/Digest.jsx b/assets/packages/ui/src/Digest.jsx index 6de0437..839e784 100644 --- a/assets/packages/ui/src/Digest.jsx +++ b/assets/packages/ui/src/Digest.jsx @@ -21,7 +21,7 @@ export function Digest(props) { const summary = useContext(SummaryContext) - const filter = (key) => (!iterable(series) || series.includes(key)) && (summary.values[key].type == type) + const filter = (key) => (!iterable(series) || series.includes(key)) && (summary.values[key].meta.type == type) const component = props.plain ? "div" : Paper diff --git a/assets/packages/ui/src/Header.jsx b/assets/packages/ui/src/Header.jsx index 327ac1c..229a1aa 100644 --- a/assets/packages/ui/src/Header.jsx +++ b/assets/packages/ui/src/Header.jsx @@ -12,7 +12,7 @@ export default function Header(props) {
- {props.title} + {props.conf().title}
diff --git a/assets/packages/ui/src/Panel.jsx b/assets/packages/ui/src/Panel.jsx index 21fc228..2ce9f78 100644 --- a/assets/packages/ui/src/Panel.jsx +++ b/assets/packages/ui/src/Panel.jsx @@ -3,7 +3,7 @@ // SPDX-License-Identifier: MIT import React, { useContext, useRef } from 'react' -import { MetricsContext } from './metrics' +import { SamplesContext } from './samples' import { MetricsUplot } from './metrics-uplot' import './Panel.css' import UplotReact from 'uplot-react'; @@ -14,7 +14,7 @@ import { format } from './format'; function Panel(props) { const theme = useTheme() - const summaries = useContext(MetricsContext) + const summaries = useContext(SamplesContext) const series = {} series[props.metric] = { label: "" } diff --git a/assets/packages/ui/src/Report.jsx b/assets/packages/ui/src/Report.jsx index 57ee19e..84e22c3 100644 --- a/assets/packages/ui/src/Report.jsx +++ b/assets/packages/ui/src/Report.jsx @@ -6,8 +6,6 @@ import React from 'react'; import './Report.css' -import { MetricsContext, useEvent } from './metrics'; -import { SummaryContext, useSummary } from './summary'; import { Grid, Fab, Typography, Box } from '@mui/material' import { ReactComponent as PrintIcon } from './icons/print.svg' import { ReactComponent as DownloadIcon } from './icons/download.svg' @@ -21,21 +19,17 @@ import { iterable } from './util'; function reportSections(conf) { const all = [] - if (!iterable(conf)) { + if (!iterable(conf())) { return all } - let ctx = { snapshot: useEvent('snapshot'), cumulative: useEvent('cumulative') } - - for (let i = 0; i < conf.length; i++) { - if (conf[i].event != 'snapshot') { + for (let i = 0; i < conf().length; i++) { + if (conf()[i].event != 'snapshot') { continue } all.push( - - - + conf()[i]} /> ) } @@ -45,11 +39,11 @@ function reportSections(conf) { function charts(conf) { const all = [] - if (!iterable(conf)) { + if (!iterable(conf())) { return all } - for (const chart of conf) { + for (const chart of conf()) { let c = { ...chart, width: 480, height: 240, plain: true } all.push( {Chart(c)} @@ -59,13 +53,13 @@ function charts(conf) { return all } -function ReportSection(props) { +function ReportSection({ conf }) { return ( <> - {props.title} - {props.description} + {conf().title} + {conf().description} - {charts(props.charts)} + {charts(() => conf().charts)} ) @@ -77,18 +71,16 @@ function SummarySection(props) { {props.title} {props.description} - - - - - - - - - + + + + + + + - + ) @@ -101,12 +93,11 @@ function Report(props) { :not(style)': { m: 1 } }}> - window.open("/report")}> + window.open("/report")}>
k6 report - - {reportSections(props.tabs)} + {reportSections(props.conf)}
diff --git a/assets/packages/ui/src/Summary.jsx b/assets/packages/ui/src/Summary.jsx index 8791a82..ca21899 100644 --- a/assets/packages/ui/src/Summary.jsx +++ b/assets/packages/ui/src/Summary.jsx @@ -7,25 +7,23 @@ import React from 'react'; import './Summary.css' import { Grid } from '@mui/material' -import { SummaryContext, useSummary } from './summary'; import { Digest } from './Digest'; export default function SummaryTab(props) { + return ( <>
- - - - - - - - - + + + + + + + - +
) diff --git a/assets/packages/ui/src/config.js b/assets/packages/ui/src/config.js new file mode 100644 index 0000000..37f41a7 --- /dev/null +++ b/assets/packages/ui/src/config.js @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2023 Iván Szkiba +// +// SPDX-License-Identifier: MIT + +import { useSSE } from "react-hooks-sse"; + +function useConfig() { + return useSSE("config", new Config(), { parser: JSON.parse }); +} + +class Config { + constructor() { + this.tabs = []; + this.title = "k6 report" + } +} + +export { useConfig }; diff --git a/assets/packages/ui/src/main.jsx b/assets/packages/ui/src/main.jsx index de0250e..1f7469f 100644 --- a/assets/packages/ui/src/main.jsx +++ b/assets/packages/ui/src/main.jsx @@ -27,7 +27,7 @@ ReactDOM.createRoot(document.getElementById('root')).render( - + , diff --git a/assets/packages/ui/src/metrics-uplot.js b/assets/packages/ui/src/metrics-uplot.js index 50db282..b31da31 100644 --- a/assets/packages/ui/src/metrics-uplot.js +++ b/assets/packages/ui/src/metrics-uplot.js @@ -2,8 +2,7 @@ // // SPDX-License-Identifier: MIT -import { propTime } from './metrics' -import { format } from './format' +import { format } from "./format"; const palette = [ '#7b65fa', @@ -31,38 +30,14 @@ function formatter(kind) { } class MetricsUplot { - constructor (samples, series) { - this.data = MetricsUplot.buildData(samples, series) - this.series = MetricsUplot.buildSeries(this.data, series) + constructor(samples, series) { + this.data = samples.select(Object.keys(series)); + this.series = MetricsUplot.buildSeries(this.data, series); } - static buildData (samples, series) { - const values = samples.values - - let data = [] - let time = values[propTime] - - if (!Array.isArray(time)) { - return data - } - - data.push(time) - - for (var key in series) { - if (!Array.isArray(values[key])) { - data.push(Array(time.length)) - continue - } - - data.push(values[key]) - } - - return data - } - - static buildSeries (data, input) { - const series = [{value: formatter('timestamp')}] - const keys = Object.keys(input) + static buildSeries(data, input) { + const series = [{ value: formatter("timestamp") }]; + const keys = Object.keys(input); for (var i = 0; i < keys.length; i++) { var pidx = i % palette.length diff --git a/assets/packages/ui/src/metrics.js b/assets/packages/ui/src/metrics.js index c5da069..fc4b353 100644 --- a/assets/packages/ui/src/metrics.js +++ b/assets/packages/ui/src/metrics.js @@ -2,104 +2,26 @@ // // SPDX-License-Identifier: MIT -import React from 'react' -import { useSSE } from 'react-hooks-sse' -import { roundTo } from 'round-to' +import React from "react"; +import { useSSE } from "react-hooks-sse"; +import { Metrics } from "@xk6-dashboard/model"; -const propTime = 'time' -const propType = 'type' +function reducer(state, action) { + let newState = new Metrics(state); -class Metrics { - constructor ({ capacity = 10000, values = {}, progress = 0, lastEventId = 0 } = {}) { - this.capacity = capacity - this.values = values - this.length = values[propTime] ? values[propTime].length : 0 - this.progress = progress - this.lastEventId = lastEventId - } + newState.push(action.data); - _filterDuplicate (data) { - const timeSeries = this.values[propTime] - const timeValue = data[propTime] - - if (!timeValue || !Array.isArray(timeSeries) || timeSeries.length == 0) { - return false - } - - return timeSeries.slice(-1) == timeValue - } - - pushOne (key, value) { - if (!this.values.hasOwnProperty(key)) { - this.values[key] = Array(this.length) - } else if (this.values[key].length < this.length) { - this.values[key][this.length-1] = undefined - } - - this.values[key].push(roundTo(value, 4)) - - if (this.length == this.capacity) { - this.values[key].shift() - } - } - - push (data) { - if (this._filterDuplicate(data)) { - // react or sse component call twice... - return - } - - for (const key in data) { - if (key == propTime) { - this.pushOne(key, Math.floor(data[key].sample.value / 1000)) - this.progress = data[key].sample.pct - - continue - } - - const typeTag = data[key].hasOwnProperty(propType) - ? `_${data[key][propType]}` - : '' - - for (const prop in data[key].sample) { - this.pushOne(key + typeTag + '_' + prop, data[key].sample[prop]) - } - } - - if (this.length < this.capacity) { - this.length++ - } - } - - static reducer (state, action) { - var newState - - var lastEventId = parseInt(action.event.lastEventId) - if (isNaN(lastEventId)) { - lastEventId = 0 - } - - if (state.lastEventId > lastEventId) { - newState = new Metrics() - } else { - newState = new Metrics(state) - } - - newState.push(action.data) - newState.lastEventId = lastEventId - - return newState - } + return newState; } -function useEvent (name) { - return useSSE(name, new Metrics(), { +function useMetricEvent() { + return useSSE("metric", new Metrics(), { parser: JSON.parse, - stateReducer: Metrics.reducer - }) + stateReducer: reducer, + }); } -const MetricsContext = React.createContext(new Metrics()) -MetricsContext.displayName = 'Metrics' +const MetricsContext = React.createContext(new Metrics()); +MetricsContext.displayName = "Metrics"; -export { MetricsContext, useEvent, propTime } +export { MetricsContext, useMetricEvent }; diff --git a/assets/packages/ui/src/samples.js b/assets/packages/ui/src/samples.js new file mode 100644 index 0000000..7b7a9a6 --- /dev/null +++ b/assets/packages/ui/src/samples.js @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2023 Iván Szkiba +// +// SPDX-License-Identifier: MIT + +import React from "react"; +import { useSSE } from "react-hooks-sse"; +import { Samples, Metrics } from "@xk6-dashboard/model"; + +const propTime = "time"; + +function reducer(state, action) { + var newState; + + var lastEventId = parseInt(action.event.lastEventId); + if (isNaN(lastEventId)) { + lastEventId = 0; + } + + if (state.lastEventId > lastEventId) { + newState = new Samples(); + } else { + newState = new Samples(state); + } + + newState.push(action.data); + newState.lastEventId = lastEventId; + + return newState; +} + +function useEvent(name, metricsHook) { + return useSSE(name, new Samples(), { + parser: JSON.parse, + stateReducer: function (state, action) { + let newState = reducer(state, action); + newState.annotate(metricsHook().values); + return newState; + }, + }); +} + +const SamplesContext = React.createContext(new Samples()); +SamplesContext.displayName = "Samples"; + +export { SamplesContext, useEvent, propTime }; diff --git a/assets/packages/ui/src/summary.js b/assets/packages/ui/src/summary.js index cbf7bc6..5d7ce5d 100644 --- a/assets/packages/ui/src/summary.js +++ b/assets/packages/ui/src/summary.js @@ -2,108 +2,31 @@ // // SPDX-License-Identifier: MIT -import React from 'react' -import { useSSE } from 'react-hooks-sse' -import prettyMilliseconds from 'pretty-ms' -import prettyBytes from 'pretty-bytes' -import byteSize from 'byte-size' -import { roundTo } from 'round-to' +import React from "react"; +import { useSSE } from "react-hooks-sse"; +import { Summary, Metrics } from "@xk6-dashboard/model"; -const propTime = 'time' +function reducer(state, action) { + const newState = new Summary(state); -class Summary { - constructor () { - this.values = {} - this.time = 0 - this.progress = 0 - } + newState.update(action.data); - update (data) { - let values = {} - let progress = 0 - let time = 0 - - for (const key in data) { - if (key == propTime) { - time = Math.floor(data[key].sample.value / 1000) - progress = data[key].sample.pct - - continue - } - - values[key] = data[key] - values[key].format = format - - for (const prop in values[key].sample) { - let value = values[key].sample[prop] - if (Number.isInteger(value)) { - continue - } - - values[key].sample[prop] = parseFloat(value.toFixed(4)) - } - } - - this.values = values - this.time = time - this.progress = progress - } - - static reducer (state, action) { - const newState = new Summary() - - newState.update(action.data) - - return newState - } + return newState; } -const customUnits = { - simple: [ - { from: 0, to: 1e3, unit: ' ', long: ' ' }, - { from: 1e3, to: 1e6, unit: 'k', long: 'kilo' }, - { from: 1e6, to: 1e9, unit: 'M', long: 'mega' }, - { from: 1e9, to: 1e12, unit: 'G', long: 'giga' }, - { from: 1e12, to: 1e15, unit: 'T', long: 'tera' }, - { from: 1e15, to: 1e18, unit: 'P', long: 'peta' }, - { from: 1e18, to: 1e21, unit: 'E', long: 'exa' }, - { from: 1e21, to: 1e24, unit: 'Z', long: 'zetta' }, - { from: 1e24, to: 1e27, unit: 'Y', long: 'yotta' } - ] -} - -function format (prop) { - if (this.contains == 'time') { - return prettyMilliseconds(this.sample[prop], { - formatSubMilliseconds: true, - compact: true - }) - } - - if (this.contains == 'data') { - let str = prettyBytes(this.sample[prop]) - - return prop == 'rate' ? str + '/s' : str - } - - const { value, unit } = byteSize(this.sample[prop], { - customUnits, - units: 'simple' - }) - - let str = `${roundTo(parseFloat(value), 2)} ${unit}` - - return prop == 'rate' ? str + '/s' : str -} - -function useSummary () { - return useSSE('cumulative', new Summary(), { +function useSummary(metricsHook) { + return useSSE("cumulative", new Summary(), { parser: JSON.parse, - stateReducer: Summary.reducer - }) + stateReducer: function (state, action) { + let newState = reducer(state, action); + newState.annotate(metricsHook().values); + + return newState; + }, + }); } -const SummaryContext = React.createContext(new Summary()) -SummaryContext.displayName = 'Summary' +const SummaryContext = React.createContext(new Summary()); +SummaryContext.displayName = "Summary"; -export { SummaryContext, useSummary } +export { SummaryContext, useSummary }; diff --git a/assets/packages/ui/vite.config.js b/assets/packages/ui/vite.config.js index a18b59f..60471ab 100644 --- a/assets/packages/ui/vite.config.js +++ b/assets/packages/ui/vite.config.js @@ -2,12 +2,12 @@ // // SPDX-License-Identifier: MIT -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react-swc' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; import svgr from "vite-plugin-svgr"; export default defineConfig({ - plugins: [svgr(),react()], - build: { chunkSizeWarningLimit: 512, outDir: '../../ui' }, - base: '' -}) + plugins: [svgr(), react()], + build: { chunkSizeWarningLimit: 512 /*, outDir: '../../ui'*/ }, + base: "", +}); diff --git a/assets/ui/assets/index-088f1f93.js b/assets/ui/assets/index-088f1f93.js deleted file mode 100644 index 2e874a6..0000000 --- a/assets/ui/assets/index-088f1f93.js +++ /dev/null @@ -1,158 +0,0 @@ -function yx(e,t){for(var n=0;nr[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const i of l.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function r(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();var Vr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ad(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function wx(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}),n}var Hg={exports:{}},su={},Wg={exports:{}},de={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var ys=Symbol.for("react.element"),xx=Symbol.for("react.portal"),Sx=Symbol.for("react.fragment"),bx=Symbol.for("react.strict_mode"),kx=Symbol.for("react.profiler"),_x=Symbol.for("react.provider"),Cx=Symbol.for("react.context"),Ex=Symbol.for("react.forward_ref"),Tx=Symbol.for("react.suspense"),Mx=Symbol.for("react.memo"),Px=Symbol.for("react.lazy"),Kh=Symbol.iterator;function Rx(e){return e===null||typeof e!="object"?null:(e=Kh&&e[Kh]||e["@@iterator"],typeof e=="function"?e:null)}var Ug={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Vg=Object.assign,Kg={};function Ql(e,t,n){this.props=e,this.context=t,this.refs=Kg,this.updater=n||Ug}Ql.prototype.isReactComponent={};Ql.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Ql.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Gg(){}Gg.prototype=Ql.prototype;function Ld(e,t,n){this.props=e,this.context=t,this.refs=Kg,this.updater=n||Ug}var Dd=Ld.prototype=new Gg;Dd.constructor=Ld;Vg(Dd,Ql.prototype);Dd.isPureReactComponent=!0;var Gh=Array.isArray,Yg=Object.prototype.hasOwnProperty,Bd={current:null},Qg={key:!0,ref:!0,__self:!0,__source:!0};function Xg(e,t,n){var r,o={},l=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(l=""+t.key),t)Yg.call(t,r)&&!Qg.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(s===1)o.children=n;else if(1>>1,V=j[J];if(0>>1;Jo(ae,H))Neo(wt,ae)?(j[J]=wt,j[Ne]=H,J=Ne):(j[J]=ae,j[q]=H,J=q);else if(Neo(wt,H))j[J]=wt,j[Ne]=H,J=Ne;else break e}}return X}function o(j,X){var H=j.sortIndex-X.sortIndex;return H!==0?H:j.id-X.id}if(typeof performance=="object"&&typeof performance.now=="function"){var l=performance;e.unstable_now=function(){return l.now()}}else{var i=Date,s=i.now();e.unstable_now=function(){return i.now()-s}}var u=[],a=[],f=1,p=null,c=3,h=!1,g=!1,m=!1,b=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function x(j){for(var X=n(a);X!==null;){if(X.callback===null)r(a);else if(X.startTime<=j)r(a),X.sortIndex=X.expirationTime,t(u,X);else break;X=n(a)}}function _(j){if(m=!1,x(j),!g)if(n(u)!==null)g=!0,le(C);else{var X=n(a);X!==null&&oe(_,X.startTime-j)}}function C(j,X){g=!1,m&&(m=!1,w(O),O=-1),h=!0;var H=c;try{for(x(X),p=n(u);p!==null&&(!(p.expirationTime>X)||j&&!L());){var J=p.callback;if(typeof J=="function"){p.callback=null,c=p.priorityLevel;var V=J(p.expirationTime<=X);X=e.unstable_now(),typeof V=="function"?p.callback=V:p===n(u)&&r(u),x(X)}else r(u);p=n(u)}if(p!==null)var ye=!0;else{var q=n(a);q!==null&&oe(_,q.startTime-X),ye=!1}return ye}finally{p=null,c=H,h=!1}}var M=!1,E=null,O=-1,z=5,P=-1;function L(){return!(e.unstable_now()-Pj||125J?(j.sortIndex=H,t(a,j),n(u)===null&&j===n(a)&&(m?(w(O),O=-1):m=!0,oe(_,H-J))):(j.sortIndex=V,t(u,j),g||h||(g=!0,le(C))),j},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(j){var X=c;return function(){var H=c;c=X;try{return j.apply(this,arguments)}finally{c=H}}}})(e1);Jg.exports=e1;var Ix=Jg.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var t1=$,Mn=Ix;function B(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),_f=Object.prototype.hasOwnProperty,Hx=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Xh={},Zh={};function Wx(e){return _f.call(Zh,e)?!0:_f.call(Xh,e)?!1:Hx.test(e)?Zh[e]=!0:(Xh[e]=!0,!1)}function Ux(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Vx(e,t,n,r){if(t===null||typeof t>"u"||Ux(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function an(e,t,n,r,o,l,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=l,this.removeEmptyString=i}var Vt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Vt[e]=new an(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Vt[t]=new an(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Vt[e]=new an(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Vt[e]=new an(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Vt[e]=new an(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Vt[e]=new an(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Vt[e]=new an(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Vt[e]=new an(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Vt[e]=new an(e,5,!1,e.toLowerCase(),null,!1,!1)});var Fd=/[\-:]([a-z])/g;function Id(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Fd,Id);Vt[t]=new an(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Fd,Id);Vt[t]=new an(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Fd,Id);Vt[t]=new an(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Vt[e]=new an(e,1,!1,e.toLowerCase(),null,!1,!1)});Vt.xlinkHref=new an("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Vt[e]=new an(e,1,!1,e.toLowerCase(),null,!0,!0)});function Hd(e,t,n,r){var o=Vt.hasOwnProperty(t)?Vt[t]:null;(o!==null?o.type!==0:r||!(2s||o[i]!==l[s]){var u=` -`+o[i].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=i&&0<=s);break}}}finally{Dc=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Pi(e):""}function Kx(e){switch(e.tag){case 5:return Pi(e.type);case 16:return Pi("Lazy");case 13:return Pi("Suspense");case 19:return Pi("SuspenseList");case 0:case 2:case 15:return e=Bc(e.type,!1),e;case 11:return e=Bc(e.type.render,!1),e;case 1:return e=Bc(e.type,!0),e;default:return""}}function Mf(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case al:return"Fragment";case sl:return"Portal";case Cf:return"Profiler";case Wd:return"StrictMode";case Ef:return"Suspense";case Tf:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case o1:return(e.displayName||"Context")+".Consumer";case r1:return(e._context.displayName||"Context")+".Provider";case Ud:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Vd:return t=e.displayName||null,t!==null?t:Mf(e.type)||"Memo";case Fr:t=e._payload,e=e._init;try{return Mf(e(t))}catch{}}return null}function Gx(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Mf(t);case 8:return t===Wd?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ro(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function i1(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Yx(e){var t=i1(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,l=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){r=""+i,l.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Is(e){e._valueTracker||(e._valueTracker=Yx(e))}function s1(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=i1(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ta(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Pf(e,t){var n=t.checked;return qe({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Jh(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=ro(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function a1(e,t){t=t.checked,t!=null&&Hd(e,"checked",t,!1)}function Rf(e,t){a1(e,t);var n=ro(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?$f(e,t.type,n):t.hasOwnProperty("defaultValue")&&$f(e,t.type,ro(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function em(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function $f(e,t,n){(t!=="number"||Ta(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Ri=Array.isArray;function wl(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=Hs.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Qi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Li={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Qx=["Webkit","ms","Moz","O"];Object.keys(Li).forEach(function(e){Qx.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Li[t]=Li[e]})});function d1(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Li.hasOwnProperty(e)&&Li[e]?(""+t).trim():t+"px"}function p1(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=d1(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var Xx=qe({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function zf(e,t){if(t){if(Xx[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(B(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(B(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(B(61))}if(t.style!=null&&typeof t.style!="object")throw Error(B(62))}}function Af(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Lf=null;function Kd(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Df=null,xl=null,Sl=null;function rm(e){if(e=Ss(e)){if(typeof Df!="function")throw Error(B(280));var t=e.stateNode;t&&(t=du(t),Df(e.stateNode,e.type,t))}}function h1(e){xl?Sl?Sl.push(e):Sl=[e]:xl=e}function m1(){if(xl){var e=xl,t=Sl;if(Sl=xl=null,rm(e),t)for(e=0;e>>=0,e===0?32:31-(sS(e)/aS|0)|0}var Ws=64,Us=4194304;function $i(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function $a(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,l=e.pingedLanes,i=n&268435455;if(i!==0){var s=i&~o;s!==0?r=$i(s):(l&=i,l!==0&&(r=$i(l)))}else i=n&~o,i!==0?r=$i(i):l!==0&&(r=$i(l));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,l=t&-t,o>=l||o===16&&(l&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function ws(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Jn(t),e[t]=n}function dS(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Bi),dm=String.fromCharCode(32),pm=!1;function A1(e,t){switch(e){case"keyup":return FS.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function L1(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var ul=!1;function HS(e,t){switch(e){case"compositionend":return L1(t);case"keypress":return t.which!==32?null:(pm=!0,dm);case"textInput":return e=t.data,e===dm&&pm?null:e;default:return null}}function WS(e,t){if(ul)return e==="compositionend"||!ep&&A1(e,t)?(e=N1(),da=Zd=Kr=null,ul=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=vm(n)}}function F1(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?F1(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function I1(){for(var e=window,t=Ta();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ta(e.document)}return t}function tp(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function qS(e){var t=I1(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&F1(n.ownerDocument.documentElement,n)){if(r!==null&&tp(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,l=Math.min(r.start,o);r=r.end===void 0?l:Math.min(r.end,o),!e.extend&&l>r&&(o=r,r=l,l=o),o=ym(n,l);var i=ym(n,r);o&&i&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),l>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,cl=null,Wf=null,Fi=null,Uf=!1;function wm(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Uf||cl==null||cl!==Ta(r)||(r=cl,"selectionStart"in r&&tp(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Fi&&ts(Fi,r)||(Fi=r,r=za(Wf,"onSelect"),0pl||(e.current=Xf[pl],Xf[pl]=null,pl--)}function De(e,t){pl++,Xf[pl]=e.current,e.current=t}var oo={},Zt=so(oo),mn=so(!1),Po=oo;function Rl(e,t){var n=e.type.contextTypes;if(!n)return oo;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},l;for(l in n)o[l]=t[l];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function gn(e){return e=e.childContextTypes,e!=null}function La(){We(mn),We(Zt)}function Em(e,t,n){if(Zt.current!==oo)throw Error(B(168));De(Zt,t),De(mn,n)}function X1(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(B(108,Gx(e)||"Unknown",o));return qe({},n,r)}function Da(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||oo,Po=Zt.current,De(Zt,e),De(mn,mn.current),!0}function Tm(e,t,n){var r=e.stateNode;if(!r)throw Error(B(169));n?(e=X1(e,t,Po),r.__reactInternalMemoizedMergedChildContext=e,We(mn),We(Zt),De(Zt,e)):We(mn),De(mn,n)}var Sr=null,pu=!1,qc=!1;function Z1(e){Sr===null?Sr=[e]:Sr.push(e)}function c2(e){pu=!0,Z1(e)}function ao(){if(!qc&&Sr!==null){qc=!0;var e=0,t=$e;try{var n=Sr;for($e=1;e>=i,o-=i,br=1<<32-Jn(t)+o|n<O?(z=E,E=null):z=E.sibling;var P=c(w,E,x[O],_);if(P===null){E===null&&(E=z);break}e&&E&&P.alternate===null&&t(w,E),v=l(P,v,O),M===null?C=P:M.sibling=P,M=P,E=z}if(O===x.length)return n(w,E),Ge&&mo(w,O),C;if(E===null){for(;OO?(z=E,E=null):z=E.sibling;var L=c(w,E,P.value,_);if(L===null){E===null&&(E=z);break}e&&E&&L.alternate===null&&t(w,E),v=l(L,v,O),M===null?C=L:M.sibling=L,M=L,E=z}if(P.done)return n(w,E),Ge&&mo(w,O),C;if(E===null){for(;!P.done;O++,P=x.next())P=p(w,P.value,_),P!==null&&(v=l(P,v,O),M===null?C=P:M.sibling=P,M=P);return Ge&&mo(w,O),C}for(E=r(w,E);!P.done;O++,P=x.next())P=h(E,w,O,P.value,_),P!==null&&(e&&P.alternate!==null&&E.delete(P.key===null?O:P.key),v=l(P,v,O),M===null?C=P:M.sibling=P,M=P);return e&&E.forEach(function(U){return t(w,U)}),Ge&&mo(w,O),C}function b(w,v,x,_){if(typeof x=="object"&&x!==null&&x.type===al&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case Fs:e:{for(var C=x.key,M=v;M!==null;){if(M.key===C){if(C=x.type,C===al){if(M.tag===7){n(w,M.sibling),v=o(M,x.props.children),v.return=w,w=v;break e}}else if(M.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===Fr&&zm(C)===M.type){n(w,M.sibling),v=o(M,x.props),v.ref=xi(w,M,x),v.return=w,w=v;break e}n(w,M);break}else t(w,M);M=M.sibling}x.type===al?(v=Eo(x.props.children,w.mode,_,x.key),v.return=w,w=v):(_=xa(x.type,x.key,x.props,null,w.mode,_),_.ref=xi(w,v,x),_.return=w,w=_)}return i(w);case sl:e:{for(M=x.key;v!==null;){if(v.key===M)if(v.tag===4&&v.stateNode.containerInfo===x.containerInfo&&v.stateNode.implementation===x.implementation){n(w,v.sibling),v=o(v,x.children||[]),v.return=w,w=v;break e}else{n(w,v);break}else t(w,v);v=v.sibling}v=sf(x,w.mode,_),v.return=w,w=v}return i(w);case Fr:return M=x._init,b(w,v,M(x._payload),_)}if(Ri(x))return g(w,v,x,_);if(mi(x))return m(w,v,x,_);Zs(w,x)}return typeof x=="string"&&x!==""||typeof x=="number"?(x=""+x,v!==null&&v.tag===6?(n(w,v.sibling),v=o(v,x),v.return=w,w=v):(n(w,v),v=lf(x,w.mode,_),v.return=w,w=v),i(w)):n(w,v)}return b}var Ol=lv(!0),iv=lv(!1),bs={},gr=so(bs),ls=so(bs),is=so(bs);function bo(e){if(e===bs)throw Error(B(174));return e}function cp(e,t){switch(De(is,t),De(ls,e),De(gr,bs),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Nf(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Nf(t,e)}We(gr),De(gr,t)}function Nl(){We(gr),We(ls),We(is)}function sv(e){bo(is.current);var t=bo(gr.current),n=Nf(t,e.type);t!==n&&(De(ls,e),De(gr,n))}function fp(e){ls.current===e&&(We(gr),We(ls))}var Xe=so(0);function Wa(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Jc=[];function dp(){for(var e=0;en?n:4,e(!0);var r=ef.transition;ef.transition={};try{e(!1),t()}finally{$e=n,ef.transition=r}}function kv(){return In().memoizedState}function h2(e,t,n){var r=to(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},_v(e))Cv(t,n);else if(n=tv(e,t,n,r),n!==null){var o=ln();er(n,e,r,o),Ev(n,t,r)}}function m2(e,t,n){var r=to(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(_v(e))Cv(t,o);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null))try{var i=t.lastRenderedState,s=l(i,n);if(o.hasEagerState=!0,o.eagerState=s,tr(s,i)){var u=t.interleaved;u===null?(o.next=o,ap(t)):(o.next=u.next,u.next=o),t.interleaved=o;return}}catch{}finally{}n=tv(e,t,o,r),n!==null&&(o=ln(),er(n,e,r,o),Ev(n,t,r))}}function _v(e){var t=e.alternate;return e===Ze||t!==null&&t===Ze}function Cv(e,t){Ii=Ua=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ev(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Yd(e,n)}}var Va={readContext:Fn,useCallback:Gt,useContext:Gt,useEffect:Gt,useImperativeHandle:Gt,useInsertionEffect:Gt,useLayoutEffect:Gt,useMemo:Gt,useReducer:Gt,useRef:Gt,useState:Gt,useDebugValue:Gt,useDeferredValue:Gt,useTransition:Gt,useMutableSource:Gt,useSyncExternalStore:Gt,useId:Gt,unstable_isNewReconciler:!1},g2={readContext:Fn,useCallback:function(e,t){return ur().memoizedState=[e,t===void 0?null:t],e},useContext:Fn,useEffect:Lm,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ga(4194308,4,yv.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ga(4194308,4,e,t)},useInsertionEffect:function(e,t){return ga(4,2,e,t)},useMemo:function(e,t){var n=ur();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=ur();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=h2.bind(null,Ze,e),[r.memoizedState,e]},useRef:function(e){var t=ur();return e={current:e},t.memoizedState=e},useState:Am,useDebugValue:vp,useDeferredValue:function(e){return ur().memoizedState=e},useTransition:function(){var e=Am(!1),t=e[0];return e=p2.bind(null,e[1]),ur().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Ze,o=ur();if(Ge){if(n===void 0)throw Error(B(407));n=n()}else{if(n=t(),At===null)throw Error(B(349));$o&30||cv(r,t,n)}o.memoizedState=n;var l={value:n,getSnapshot:t};return o.queue=l,Lm(dv.bind(null,r,l,e),[e]),r.flags|=2048,us(9,fv.bind(null,r,l,n,t),void 0,null),n},useId:function(){var e=ur(),t=At.identifierPrefix;if(Ge){var n=kr,r=br;n=(r&~(1<<32-Jn(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ss++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[dr]=t,e[os]=r,Av(e,t,!1,!1),t.stateNode=e;e:{switch(i=Af(n,r),n){case"dialog":He("cancel",e),He("close",e),o=r;break;case"iframe":case"object":case"embed":He("load",e),o=r;break;case"video":case"audio":for(o=0;oAl&&(t.flags|=128,r=!0,Si(l,!1),t.lanes=4194304)}else{if(!r)if(e=Wa(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Si(l,!0),l.tail===null&&l.tailMode==="hidden"&&!i.alternate&&!Ge)return Yt(t),null}else 2*it()-l.renderingStartTime>Al&&n!==1073741824&&(t.flags|=128,r=!0,Si(l,!1),t.lanes=4194304);l.isBackwards?(i.sibling=t.child,t.child=i):(n=l.last,n!==null?n.sibling=i:t.child=i,l.last=i)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=it(),t.sibling=null,n=Xe.current,De(Xe,r?n&1|2:n&1),t):(Yt(t),null);case 22:case 23:return kp(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Sn&1073741824&&(Yt(t),t.subtreeFlags&6&&(t.flags|=8192)):Yt(t),null;case 24:return null;case 25:return null}throw Error(B(156,t.tag))}function _2(e,t){switch(rp(t),t.tag){case 1:return gn(t.type)&&La(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Nl(),We(mn),We(Zt),dp(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return fp(t),null;case 13:if(We(Xe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(B(340));$l()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return We(Xe),null;case 4:return Nl(),null;case 10:return sp(t.type._context),null;case 22:case 23:return kp(),null;case 24:return null;default:return null}}var Js=!1,Xt=!1,C2=typeof WeakSet=="function"?WeakSet:Set,Z=null;function vl(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){rt(e,t,r)}else n.current=null}function ad(e,t,n){try{n()}catch(r){rt(e,t,r)}}var Vm=!1;function E2(e,t){if(Vf=Oa,e=I1(),tp(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,l=r.focusNode;r=r.focusOffset;try{n.nodeType,l.nodeType}catch{n=null;break e}var i=0,s=-1,u=-1,a=0,f=0,p=e,c=null;t:for(;;){for(var h;p!==n||o!==0&&p.nodeType!==3||(s=i+o),p!==l||r!==0&&p.nodeType!==3||(u=i+r),p.nodeType===3&&(i+=p.nodeValue.length),(h=p.firstChild)!==null;)c=p,p=h;for(;;){if(p===e)break t;if(c===n&&++a===o&&(s=i),c===l&&++f===r&&(u=i),(h=p.nextSibling)!==null)break;p=c,c=p.parentNode}p=h}n=s===-1||u===-1?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Kf={focusedElem:e,selectionRange:n},Oa=!1,Z=t;Z!==null;)if(t=Z,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Z=e;else for(;Z!==null;){t=Z;try{var g=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var m=g.memoizedProps,b=g.memoizedState,w=t.stateNode,v=w.getSnapshotBeforeUpdate(t.elementType===t.type?m:Xn(t.type,m),b);w.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var x=t.stateNode.containerInfo;x.nodeType===1?x.textContent="":x.nodeType===9&&x.documentElement&&x.removeChild(x.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(B(163))}}catch(_){rt(t,t.return,_)}if(e=t.sibling,e!==null){e.return=t.return,Z=e;break}Z=t.return}return g=Vm,Vm=!1,g}function Hi(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var l=o.destroy;o.destroy=void 0,l!==void 0&&ad(t,n,l)}o=o.next}while(o!==r)}}function gu(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function ud(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Bv(e){var t=e.alternate;t!==null&&(e.alternate=null,Bv(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[dr],delete t[os],delete t[Qf],delete t[a2],delete t[u2])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function jv(e){return e.tag===5||e.tag===3||e.tag===4}function Km(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||jv(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function cd(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Aa));else if(r!==4&&(e=e.child,e!==null))for(cd(e,t,n),e=e.sibling;e!==null;)cd(e,t,n),e=e.sibling}function fd(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(fd(e,t,n),e=e.sibling;e!==null;)fd(e,t,n),e=e.sibling}var Ht=null,Zn=!1;function Br(e,t,n){for(n=n.child;n!==null;)Fv(e,t,n),n=n.sibling}function Fv(e,t,n){if(mr&&typeof mr.onCommitFiberUnmount=="function")try{mr.onCommitFiberUnmount(au,n)}catch{}switch(n.tag){case 5:Xt||vl(n,t);case 6:var r=Ht,o=Zn;Ht=null,Br(e,t,n),Ht=r,Zn=o,Ht!==null&&(Zn?(e=Ht,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ht.removeChild(n.stateNode));break;case 18:Ht!==null&&(Zn?(e=Ht,n=n.stateNode,e.nodeType===8?Zc(e.parentNode,n):e.nodeType===1&&Zc(e,n),Ji(e)):Zc(Ht,n.stateNode));break;case 4:r=Ht,o=Zn,Ht=n.stateNode.containerInfo,Zn=!0,Br(e,t,n),Ht=r,Zn=o;break;case 0:case 11:case 14:case 15:if(!Xt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var l=o,i=l.destroy;l=l.tag,i!==void 0&&(l&2||l&4)&&ad(n,t,i),o=o.next}while(o!==r)}Br(e,t,n);break;case 1:if(!Xt&&(vl(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){rt(n,t,s)}Br(e,t,n);break;case 21:Br(e,t,n);break;case 22:n.mode&1?(Xt=(r=Xt)||n.memoizedState!==null,Br(e,t,n),Xt=r):Br(e,t,n);break;default:Br(e,t,n)}}function Gm(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new C2),t.forEach(function(r){var o=A2.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function Yn(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=i),r&=~l}if(r=o,r=it()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*M2(r/1960))-r,10e?16:e,Gr===null)var r=!1;else{if(e=Gr,Gr=null,Ya=0,we&6)throw Error(B(331));var o=we;for(we|=4,Z=e.current;Z!==null;){var l=Z,i=l.child;if(Z.flags&16){var s=l.deletions;if(s!==null){for(var u=0;uit()-Sp?Co(e,0):xp|=n),vn(e,t)}function Yv(e,t){t===0&&(e.mode&1?(t=Us,Us<<=1,!(Us&130023424)&&(Us=4194304)):t=1);var n=ln();e=Rr(e,t),e!==null&&(ws(e,t,n),vn(e,n))}function z2(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Yv(e,n)}function A2(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(B(314))}r!==null&&r.delete(t),Yv(e,n)}var Qv;Qv=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||mn.current)hn=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return hn=!1,b2(e,t,n);hn=!!(e.flags&131072)}else hn=!1,Ge&&t.flags&1048576&&q1(t,ja,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;va(e,t),e=t.pendingProps;var o=Rl(t,Zt.current);kl(t,n),o=hp(null,t,r,e,o,n);var l=mp();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gn(r)?(l=!0,Da(t)):l=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,up(t),o.updater=hu,t.stateNode=o,o._reactInternals=t,td(t,r,e,n),t=od(null,t,r,!0,l,n)):(t.tag=0,Ge&&l&&np(t),on(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(va(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=D2(r),e=Xn(r,e),o){case 0:t=rd(null,t,r,e,n);break e;case 1:t=Hm(null,t,r,e,n);break e;case 11:t=Fm(null,t,r,e,n);break e;case 14:t=Im(null,t,r,Xn(r.type,e),n);break e}throw Error(B(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xn(r,o),rd(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xn(r,o),Hm(e,t,r,o,n);case 3:e:{if(Ov(t),e===null)throw Error(B(387));r=t.pendingProps,l=t.memoizedState,o=l.element,nv(e,t),Ha(t,r,null,n);var i=t.memoizedState;if(r=i.element,l.isDehydrated)if(l={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){o=zl(Error(B(423)),t),t=Wm(e,t,r,n,o);break e}else if(r!==o){o=zl(Error(B(424)),t),t=Wm(e,t,r,n,o);break e}else for(_n=qr(t.stateNode.containerInfo.firstChild),Cn=t,Ge=!0,qn=null,n=iv(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if($l(),r===o){t=$r(e,t,n);break e}on(e,t,r,n)}t=t.child}return t;case 5:return sv(t),e===null&&qf(t),r=t.type,o=t.pendingProps,l=e!==null?e.memoizedProps:null,i=o.children,Gf(r,o)?i=null:l!==null&&Gf(r,l)&&(t.flags|=32),$v(e,t),on(e,t,i,n),t.child;case 6:return e===null&&qf(t),null;case 13:return Nv(e,t,n);case 4:return cp(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Ol(t,null,r,n):on(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xn(r,o),Fm(e,t,r,o,n);case 7:return on(e,t,t.pendingProps,n),t.child;case 8:return on(e,t,t.pendingProps.children,n),t.child;case 12:return on(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,l=t.memoizedProps,i=o.value,De(Fa,r._currentValue),r._currentValue=i,l!==null)if(tr(l.value,i)){if(l.children===o.children&&!mn.current){t=$r(e,t,n);break e}}else for(l=t.child,l!==null&&(l.return=t);l!==null;){var s=l.dependencies;if(s!==null){i=l.child;for(var u=s.firstContext;u!==null;){if(u.context===r){if(l.tag===1){u=_r(-1,n&-n),u.tag=2;var a=l.updateQueue;if(a!==null){a=a.shared;var f=a.pending;f===null?u.next=u:(u.next=f.next,f.next=u),a.pending=u}}l.lanes|=n,u=l.alternate,u!==null&&(u.lanes|=n),Jf(l.return,n,t),s.lanes|=n;break}u=u.next}}else if(l.tag===10)i=l.type===t.type?null:l.child;else if(l.tag===18){if(i=l.return,i===null)throw Error(B(341));i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),Jf(i,n,t),i=l.sibling}else i=l.child;if(i!==null)i.return=l;else for(i=l;i!==null;){if(i===t){i=null;break}if(l=i.sibling,l!==null){l.return=i.return,i=l;break}i=i.return}l=i}on(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,kl(t,n),o=Fn(o),r=r(o),t.flags|=1,on(e,t,r,n),t.child;case 14:return r=t.type,o=Xn(r,t.pendingProps),o=Xn(r.type,o),Im(e,t,r,o,n);case 15:return Pv(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Xn(r,o),va(e,t),t.tag=1,gn(r)?(e=!0,Da(t)):e=!1,kl(t,n),ov(t,r,o),td(t,r,o,n),od(null,t,r,!0,e,n);case 19:return zv(e,t,n);case 22:return Rv(e,t,n)}throw Error(B(156,t.tag))};function Xv(e,t){return b1(e,t)}function L2(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Bn(e,t,n,r){return new L2(e,t,n,r)}function Cp(e){return e=e.prototype,!(!e||!e.isReactComponent)}function D2(e){if(typeof e=="function")return Cp(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ud)return 11;if(e===Vd)return 14}return 2}function no(e,t){var n=e.alternate;return n===null?(n=Bn(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function xa(e,t,n,r,o,l){var i=2;if(r=e,typeof e=="function")Cp(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case al:return Eo(n.children,o,l,t);case Wd:i=8,o|=8;break;case Cf:return e=Bn(12,n,t,o|2),e.elementType=Cf,e.lanes=l,e;case Ef:return e=Bn(13,n,t,o),e.elementType=Ef,e.lanes=l,e;case Tf:return e=Bn(19,n,t,o),e.elementType=Tf,e.lanes=l,e;case l1:return yu(n,o,l,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case r1:i=10;break e;case o1:i=9;break e;case Ud:i=11;break e;case Vd:i=14;break e;case Fr:i=16,r=null;break e}throw Error(B(130,e==null?e:typeof e,""))}return t=Bn(i,n,t,o),t.elementType=e,t.type=r,t.lanes=l,t}function Eo(e,t,n,r){return e=Bn(7,e,r,t),e.lanes=n,e}function yu(e,t,n,r){return e=Bn(22,e,r,t),e.elementType=l1,e.lanes=n,e.stateNode={isHidden:!1},e}function lf(e,t,n){return e=Bn(6,e,null,t),e.lanes=n,e}function sf(e,t,n){return t=Bn(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function B2(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Fc(0),this.expirationTimes=Fc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Fc(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Ep(e,t,n,r,o,l,i,s,u){return e=new B2(e,t,n,s,u),t===1?(t=1,l===!0&&(t|=8)):t=0,l=Bn(3,null,null,t),e.current=l,l.stateNode=e,l.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},up(l),e}function j2(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ey)}catch(e){console.error(e)}}ey(),qg.exports=Pn;var U2=qg.exports,t0=U2;kf.createRoot=t0.createRoot,kf.hydrateRoot=t0.hydrateRoot;function V2(e){if(Array.isArray(e))return e}function K2(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,o,l,i,s=[],u=!0,a=!1;try{if(l=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=l.call(n)).done)&&(s.push(r.value),s.length!==t);u=!0);}catch(f){a=!0,o=f}finally{try{if(!u&&n.return!=null&&(i=n.return(),Object(i)!==i))return}finally{if(a)throw o}}return s}}function n0(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&(n[o]=e[o]);return n}function Q2(e,t){if(e==null)return{};var n=ve(e,t),r,o;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var X2=function(t){var n={source:null,listenersByName:new Map};return{addEventListener:function(o,l){if(n.listenersByName.size||(n.source=t()),!n.source)throw new Error("The source doesn't exist");var i=n.listenersByName.get(o)||new Set;i.add(l),n.listenersByName.set(o,i),n.source.addEventListener(o,l)},removeEventListener:function(o,l){if(!n.source)throw new Error("The source doesn't exist");var i=n.listenersByName.get(o)||new Set;i.delete(l),i.size||n.listenersByName.delete(o),n.source.removeEventListener(o,l),n.listenersByName.size||(n.source.close(),n.source=null)}}},Z2=["children"],Rp=$.createContext(null);Rp.Consumer;var q2=function(t){return"source"in t},J2=function(t){return function(){return new window.EventSource(t)}},eb=function(t){var n=t.children,r=Q2(t,Z2),o=$.useState(function(){return X2(q2(r)?r.source:J2(r.endpoint))}),l=ty(o,1),i=l[0];return $.createElement(Rp.Provider,{value:i},n)};function ny(e,t,n){var r=n||{},o=r.stateReducer,l=o===void 0?function(m,b){return b.data}:o,i=r.parser,s=i===void 0?function(m){return JSON.parse(m)}:i,u=r.context,a=u===void 0?Rp:u,f=$.useContext(a),p=$.useReducer(l,t),c=ty(p,2),h=c[0],g=c[1];if(!f)throw new Error("Could not find an SSE context; You have to wrap useSSE() in a .");return $.useEffect(function(){var m=function(w){var v=s(w.data);g({event:w,data:v})};return f.addEventListener(e,m),function(){f.removeEventListener(e,m)}},[]),h}const tb={black:"#000",white:"#fff"},fs=tb,nb={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},Zo=nb,rb={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},qo=rb,ob={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},Jo=ob,lb={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},el=lb,ib={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},tl=ib,sb={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},ki=sb,ab={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},ub=ab;function A(){return A=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t[n]=ry(e[n])}),t}function Cr(e,t,n={clone:!0}){const r=n.clone?A({},e):e;return yo(e)&&yo(t)&&Object.keys(t).forEach(o=>{o!=="__proto__"&&(yo(t[o])&&o in e&&yo(e[o])?r[o]=Cr(e[o],t[o],n):n.clone?r[o]=yo(t[o])?ry(t[o]):t[o]:r[o]=t[o])}),r}var oy={exports:{}},cb="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",fb=cb,db=fb;function ly(){}function iy(){}iy.resetWarningCache=ly;var pb=function(){function e(r,o,l,i,s,u){if(u!==db){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:iy,resetWarningCache:ly};return n.PropTypes=n,n};oy.exports=pb();var af=oy.exports;function Ll(e){let t="https://mui.com/production-error/?code="+e;for(let n=1;n{e.apply(this,o)};clearTimeout(n),n=setTimeout(l,t)}return r.clear=()=>{clearTimeout(n)},r}function uy(e){return e&&e.ownerDocument||document}function cy(e){return uy(e).defaultView||window}function gb(e,t){typeof e=="function"?e(t):e&&(e.current=t)}const vb=typeof window<"u"?$.useLayoutEffect:$.useEffect,fy=vb;function ko(e){const t=$.useRef(e);return fy(()=>{t.current=e}),$.useCallback((...n)=>(0,t.current)(...n),[])}function gd(...e){return $.useMemo(()=>e.every(t=>t==null)?null:t=>{e.forEach(n=>{gb(n,t)})},e)}let Nu=!0,vd=!1,r0;const yb={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function wb(e){const{type:t,tagName:n}=e;return!!(n==="INPUT"&&yb[t]&&!e.readOnly||n==="TEXTAREA"&&!e.readOnly||e.isContentEditable)}function xb(e){e.metaKey||e.altKey||e.ctrlKey||(Nu=!0)}function uf(){Nu=!1}function Sb(){this.visibilityState==="hidden"&&vd&&(Nu=!0)}function bb(e){e.addEventListener("keydown",xb,!0),e.addEventListener("mousedown",uf,!0),e.addEventListener("pointerdown",uf,!0),e.addEventListener("touchstart",uf,!0),e.addEventListener("visibilitychange",Sb,!0)}function kb(e){const{target:t}=e;try{return t.matches(":focus-visible")}catch{}return Nu||wb(t)}function _b(){const e=$.useCallback(o=>{o!=null&&bb(o.ownerDocument)},[]),t=$.useRef(!1);function n(){return t.current?(vd=!0,window.clearTimeout(r0),r0=window.setTimeout(()=>{vd=!1},100),t.current=!1,!0):!1}function r(o){return kb(o)?(t.current=!0,!0):!1}return{isFocusVisibleRef:t,onFocus:r,onBlur:n,ref:e}}let nl;function dy(){if(nl)return nl;const e=document.createElement("div"),t=document.createElement("div");return t.style.width="10px",t.style.height="1px",e.appendChild(t),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),nl="reverse",e.scrollLeft>0?nl="default":(e.scrollLeft=1,e.scrollLeft===0&&(nl="negative")),document.body.removeChild(e),nl}function Cb(e,t){const n=e.scrollLeft;if(t!=="rtl")return n;switch(dy()){case"negative":return e.scrollWidth-e.clientWidth+n;case"reverse":return e.scrollWidth-e.clientWidth-n;default:return n}}function py(e,t){const n=A({},t);return Object.keys(e).forEach(r=>{if(r.toString().match(/^(components|slots)$/))n[r]=A({},e[r],n[r]);else if(r.toString().match(/^(componentsProps|slotProps)$/)){const o=e[r]||{},l=t[r];n[r]={},!l||!Object.keys(l)?n[r]=o:!o||!Object.keys(o)?n[r]=l:(n[r]=A({},l),Object.keys(o).forEach(i=>{n[r][i]=py(o[i],l[i])}))}else n[r]===void 0&&(n[r]=e[r])}),n}function kt(e,t,n=void 0){const r={};return Object.keys(e).forEach(o=>{r[o]=e[o].reduce((l,i)=>{if(i){const s=t(i);s!==""&&l.push(s),n&&n[i]&&l.push(n[i])}return l},[]).join(" ")}),r}const o0=e=>e,Eb=()=>{let e=o0;return{configure(t){e=t},generate(t){return e(t)},reset(){e=o0}}},Tb=Eb(),hy=Tb,Mb={active:"active",checked:"checked",completed:"completed",disabled:"disabled",readOnly:"readOnly",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",required:"required",selected:"selected"};function gt(e,t,n="Mui"){const r=Mb[t];return r?`${n}-${r}`:`${hy.generate(e)}-${t}`}function vt(e,t,n="Mui"){const r={};return t.forEach(o=>{r[o]=gt(e,o,n)}),r}const Dl="$$material";function my(e){var t=Object.create(null);return function(n){return t[n]===void 0&&(t[n]=e(n)),t[n]}}var Pb=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,Rb=my(function(e){return Pb.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91});function $b(e){if(e.sheet)return e.sheet;for(var t=0;t0?Wt(ql,--yn):0,Bl--,ht===10&&(Bl=1,Au--),ht}function En(){return ht=yn2||ps(ht)>3?"":" "}function Ub(e,t){for(;--t&&En()&&!(ht<48||ht>102||ht>57&&ht<65||ht>70&&ht<97););return ks(e,Sa()+(t<6&&vr()==32&&En()==32))}function wd(e){for(;En();)switch(ht){case e:return yn;case 34:case 39:e!==34&&e!==39&&wd(ht);break;case 40:e===41&&wd(e);break;case 92:En();break}return yn}function Vb(e,t){for(;En()&&e+ht!==47+10;)if(e+ht===42+42&&vr()===47)break;return"/*"+ks(t,yn-1)+"*"+zu(e===47?e:En())}function Kb(e){for(;!ps(vr());)En();return ks(e,yn)}function Gb(e){return Sy(ka("",null,null,null,[""],e=xy(e),0,[0],e))}function ka(e,t,n,r,o,l,i,s,u){for(var a=0,f=0,p=i,c=0,h=0,g=0,m=1,b=1,w=1,v=0,x="",_=o,C=l,M=r,E=x;b;)switch(g=v,v=En()){case 40:if(g!=108&&Wt(E,p-1)==58){yd(E+=Ce(ba(v),"&","&\f"),"&\f")!=-1&&(w=-1);break}case 34:case 39:case 91:E+=ba(v);break;case 9:case 10:case 13:case 32:E+=Wb(g);break;case 92:E+=Ub(Sa()-1,7);continue;case 47:switch(vr()){case 42:case 47:na(Yb(Vb(En(),Sa()),t,n),u);break;default:E+="/"}break;case 123*m:s[a++]=cr(E)*w;case 125*m:case 59:case 0:switch(v){case 0:case 125:b=0;case 59+f:w==-1&&(E=Ce(E,/\f/g,"")),h>0&&cr(E)-p&&na(h>32?i0(E+";",r,n,p-1):i0(Ce(E," ","")+";",r,n,p-2),u);break;case 59:E+=";";default:if(na(M=l0(E,t,n,a,f,o,s,x,_=[],C=[],p),l),v===123)if(f===0)ka(E,t,M,M,_,l,p,s,C);else switch(c===99&&Wt(E,3)===110?100:c){case 100:case 108:case 109:case 115:ka(e,M,M,r&&na(l0(e,M,M,0,0,o,s,x,o,_=[],p),C),o,C,p,s,r?_:C);break;default:ka(E,M,M,M,[""],C,0,s,C)}}a=f=h=0,m=w=1,x=E="",p=i;break;case 58:p=1+cr(E),h=g;default:if(m<1){if(v==123)--m;else if(v==125&&m++==0&&Hb()==125)continue}switch(E+=zu(v),v*m){case 38:w=f>0?1:(E+="\f",-1);break;case 44:s[a++]=(cr(E)-1)*w,w=1;break;case 64:vr()===45&&(E+=ba(En())),c=vr(),f=p=cr(x=E+=Kb(Sa())),v++;break;case 45:g===45&&cr(E)==2&&(m=0)}}return l}function l0(e,t,n,r,o,l,i,s,u,a,f){for(var p=o-1,c=o===0?l:[""],h=Ap(c),g=0,m=0,b=0;g0?c[w]+" "+v:Ce(v,/&\f/g,c[w])))&&(u[b++]=x);return Lu(e,t,n,o===0?Np:s,u,a,f)}function Yb(e,t,n){return Lu(e,t,n,gy,zu(Ib()),ds(e,2,-2),0)}function i0(e,t,n,r){return Lu(e,t,n,zp,ds(e,0,r),ds(e,r+1,-1),r)}function Cl(e,t){for(var n="",r=Ap(e),o=0;o6)switch(Wt(e,t+1)){case 109:if(Wt(e,t+4)!==45)break;case 102:return Ce(e,/(.+:)(.+)-([^]+)/,"$1"+_e+"$2-$3$1"+Za+(Wt(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~yd(e,"stretch")?by(Ce(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(Wt(e,t+1)!==115)break;case 6444:switch(Wt(e,cr(e)-3-(~yd(e,"!important")&&10))){case 107:return Ce(e,":",":"+_e)+e;case 101:return Ce(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+_e+(Wt(e,14)===45?"inline-":"")+"box$3$1"+_e+"$2$3$1"+Qt+"$2box$3")+e}break;case 5936:switch(Wt(e,t+11)){case 114:return _e+e+Qt+Ce(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return _e+e+Qt+Ce(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return _e+e+Qt+Ce(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return _e+e+Qt+e+e}return e}var rk=function(t,n,r,o){if(t.length>-1&&!t.return)switch(t.type){case zp:t.return=by(t.value,t.length);break;case vy:return Cl([_i(t,{value:Ce(t.value,"@","@"+_e)})],o);case Np:if(t.length)return Fb(t.props,function(l){switch(jb(l,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Cl([_i(t,{props:[Ce(l,/:(read-\w+)/,":"+Za+"$1")]})],o);case"::placeholder":return Cl([_i(t,{props:[Ce(l,/:(plac\w+)/,":"+_e+"input-$1")]}),_i(t,{props:[Ce(l,/:(plac\w+)/,":"+Za+"$1")]}),_i(t,{props:[Ce(l,/:(plac\w+)/,Qt+"input-$1")]})],o)}return""})}},ok=[rk],lk=function(t){var n=t.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(m){var b=m.getAttribute("data-emotion");b.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var o=t.stylisPlugins||ok,l={},i,s=[];i=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var b=m.getAttribute("data-emotion").split(" "),w=1;w=4;++r,o-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(o){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var yk={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},wk=/[A-Z]|^ms/g,xk=/_EMO_([^_]+?)_([^]*?)_EMO_/g,My=function(t){return t.charCodeAt(1)===45},a0=function(t){return t!=null&&typeof t!="boolean"},cf=my(function(e){return My(e)?e:e.replace(wk,"-$&").toLowerCase()}),u0=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(xk,function(r,o,l){return fr={name:o,styles:l,next:fr},o})}return yk[t]!==1&&!My(t)&&typeof n=="number"&&n!==0?n+"px":n};function hs(e,t,n){if(n==null)return"";if(n.__emotion_styles!==void 0)return n;switch(typeof n){case"boolean":return"";case"object":{if(n.anim===1)return fr={name:n.name,styles:n.styles,next:fr},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)fr={name:r.name,styles:r.styles,next:fr},r=r.next;var o=n.styles+";";return o}return Sk(e,t,n)}case"function":{if(e!==void 0){var l=fr,i=n(e);return fr=l,hs(e,t,i)}break}}if(t==null)return n;var s=t[n];return s!==void 0?s:n}function Sk(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o96?Tk:Mk},d0=function(t,n,r){var o;if(n){var l=n.shouldForwardProp;o=t.__emotion_forwardProp&&l?function(i){return t.__emotion_forwardProp(i)&&l(i)}:l}return typeof o!="function"&&r&&(o=t.__emotion_forwardProp),o},Pk=function(t){var n=t.cache,r=t.serialized,o=t.isStringTag;return Ty(n,r,o),_k(function(){return gk(n,r,o)}),null},Rk=function e(t,n){var r=t.__emotion_real===t,o=r&&t.__emotion_base||t,l,i;n!==void 0&&(l=n.label,i=n.target);var s=d0(t,n,r),u=s||f0(o),a=!u("as");return function(){var f=arguments,p=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(l!==void 0&&p.push("label:"+l+";"),f[0]==null||f[0].raw===void 0)p.push.apply(p,f);else{p.push(f[0][0]);for(var c=f.length,h=1;h{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))},Nk=["values","unit","step"],zk=e=>{const t=Object.keys(e).map(n=>({key:n,val:e[n]}))||[];return t.sort((n,r)=>n.val-r.val),t.reduce((n,r)=>A({},n,{[r.key]:r.val}),{})};function Ak(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5}=e,o=ve(e,Nk),l=zk(t),i=Object.keys(l);function s(c){return`@media (min-width:${typeof t[c]=="number"?t[c]:c}${n})`}function u(c){return`@media (max-width:${(typeof t[c]=="number"?t[c]:c)-r/100}${n})`}function a(c,h){const g=i.indexOf(h);return`@media (min-width:${typeof t[c]=="number"?t[c]:c}${n}) and (max-width:${(g!==-1&&typeof t[i[g]]=="number"?t[i[g]]:h)-r/100}${n})`}function f(c){return i.indexOf(c)+1`@media (min-width:${Ip[e]}px)`};function Hn(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const l=r.breakpoints||p0;return t.reduce((i,s,u)=>(i[l.up(l.keys[u])]=n(t[u]),i),{})}if(typeof t=="object"){const l=r.breakpoints||p0;return Object.keys(t).reduce((i,s)=>{if(Object.keys(l.values||Ip).indexOf(s)!==-1){const u=l.up(s);i[u]=n(t[s],s)}else{const u=s;i[u]=t[u]}return i},{})}return n(t)}function Bk(e={}){var t;return((t=e.keys)==null?void 0:t.reduce((r,o)=>{const l=e.up(o);return r[l]={},r},{}))||{}}function jk(e,t){return e.reduce((n,r)=>{const o=n[r];return(!o||Object.keys(o).length===0)&&delete n[r],n},t)}function Fk(e,t){if(typeof e!="object")return{};const n={},r=Object.keys(t);return Array.isArray(e)?r.forEach((o,l)=>{l{e[o]!=null&&(n[o]=!0)}),n}function Gu({values:e,breakpoints:t,base:n}){const r=n||Fk(e,t),o=Object.keys(r);if(o.length===0)return e;let l;return o.reduce((i,s,u)=>(Array.isArray(e)?(i[s]=e[u]!=null?e[u]:e[l],l=u):typeof e=="object"?(i[s]=e[s]!=null?e[s]:e[l],l=s):i[s]=e,i),{})}function Yu(e,t,n=!0){if(!t||typeof t!="string")return null;if(e&&e.vars&&n){const r=`vars.${t}`.split(".").reduce((o,l)=>o&&o[l]?o[l]:null,e);if(r!=null)return r}return t.split(".").reduce((r,o)=>r&&r[o]!=null?r[o]:null,e)}function qa(e,t,n,r=n){let o;return typeof e=="function"?o=e(n):Array.isArray(e)?o=e[n]||r:o=Yu(e,n)||r,t&&(o=t(o,r,e)),o}function Pe(e){const{prop:t,cssProperty:n=e.prop,themeKey:r,transform:o}=e,l=i=>{if(i[t]==null)return null;const s=i[t],u=i.theme,a=Yu(u,r)||{};return Hn(i,s,p=>{let c=qa(a,o,p);return p===c&&typeof p=="string"&&(c=qa(a,o,`${t}${p==="default"?"":Be(p)}`,p)),n===!1?c:{[n]:c}})};return l.propTypes={},l.filterProps=[t],l}function Ik(e){const t={};return n=>(t[n]===void 0&&(t[n]=e(n)),t[n])}const Hk={m:"margin",p:"padding"},Wk={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},h0={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},Uk=Ik(e=>{if(e.length>2)if(h0[e])e=h0[e];else return[e];const[t,n]=e.split(""),r=Hk[t],o=Wk[n]||"";return Array.isArray(o)?o.map(l=>r+l):[r+o]}),Hp=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],Wp=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"];[...Hp,...Wp];function _s(e,t,n,r){var o;const l=(o=Yu(e,t,!1))!=null?o:n;return typeof l=="number"?i=>typeof i=="string"?i:l*i:Array.isArray(l)?i=>typeof i=="string"?i:l[i]:typeof l=="function"?l:()=>{}}function Oy(e){return _s(e,"spacing",8)}function Cs(e,t){if(typeof t=="string"||t==null)return t;const n=Math.abs(t),r=e(n);return t>=0?r:typeof r=="number"?-r:`-${r}`}function Vk(e,t){return n=>e.reduce((r,o)=>(r[o]=Cs(t,n),r),{})}function Kk(e,t,n,r){if(t.indexOf(n)===-1)return null;const o=Uk(n),l=Vk(o,r),i=e[n];return Hn(e,i,l)}function Ny(e,t){const n=Oy(e.theme);return Object.keys(e).map(r=>Kk(e,t,r,n)).reduce(Vi,{})}function tt(e){return Ny(e,Hp)}tt.propTypes={};tt.filterProps=Hp;function nt(e){return Ny(e,Wp)}nt.propTypes={};nt.filterProps=Wp;function Gk(e=8){if(e.mui)return e;const t=Oy({spacing:e}),n=(...r)=>(r.length===0?[1]:r).map(l=>{const i=t(l);return typeof i=="number"?`${i}px`:i}).join(" ");return n.mui=!0,n}function Qu(...e){const t=e.reduce((r,o)=>(o.filterProps.forEach(l=>{r[l]=o}),r),{}),n=r=>Object.keys(r).reduce((o,l)=>t[l]?Vi(o,t[l](r)):o,{});return n.propTypes={},n.filterProps=e.reduce((r,o)=>r.concat(o.filterProps),[]),n}function pr(e){return typeof e!="number"?e:`${e}px solid`}const Yk=Pe({prop:"border",themeKey:"borders",transform:pr}),Qk=Pe({prop:"borderTop",themeKey:"borders",transform:pr}),Xk=Pe({prop:"borderRight",themeKey:"borders",transform:pr}),Zk=Pe({prop:"borderBottom",themeKey:"borders",transform:pr}),qk=Pe({prop:"borderLeft",themeKey:"borders",transform:pr}),Jk=Pe({prop:"borderColor",themeKey:"palette"}),e_=Pe({prop:"borderTopColor",themeKey:"palette"}),t_=Pe({prop:"borderRightColor",themeKey:"palette"}),n_=Pe({prop:"borderBottomColor",themeKey:"palette"}),r_=Pe({prop:"borderLeftColor",themeKey:"palette"}),Xu=e=>{if(e.borderRadius!==void 0&&e.borderRadius!==null){const t=_s(e.theme,"shape.borderRadius",4),n=r=>({borderRadius:Cs(t,r)});return Hn(e,e.borderRadius,n)}return null};Xu.propTypes={};Xu.filterProps=["borderRadius"];Qu(Yk,Qk,Xk,Zk,qk,Jk,e_,t_,n_,r_,Xu);const Zu=e=>{if(e.gap!==void 0&&e.gap!==null){const t=_s(e.theme,"spacing",8),n=r=>({gap:Cs(t,r)});return Hn(e,e.gap,n)}return null};Zu.propTypes={};Zu.filterProps=["gap"];const qu=e=>{if(e.columnGap!==void 0&&e.columnGap!==null){const t=_s(e.theme,"spacing",8),n=r=>({columnGap:Cs(t,r)});return Hn(e,e.columnGap,n)}return null};qu.propTypes={};qu.filterProps=["columnGap"];const Ju=e=>{if(e.rowGap!==void 0&&e.rowGap!==null){const t=_s(e.theme,"spacing",8),n=r=>({rowGap:Cs(t,r)});return Hn(e,e.rowGap,n)}return null};Ju.propTypes={};Ju.filterProps=["rowGap"];const o_=Pe({prop:"gridColumn"}),l_=Pe({prop:"gridRow"}),i_=Pe({prop:"gridAutoFlow"}),s_=Pe({prop:"gridAutoColumns"}),a_=Pe({prop:"gridAutoRows"}),u_=Pe({prop:"gridTemplateColumns"}),c_=Pe({prop:"gridTemplateRows"}),f_=Pe({prop:"gridTemplateAreas"}),d_=Pe({prop:"gridArea"});Qu(Zu,qu,Ju,o_,l_,i_,s_,a_,u_,c_,f_,d_);function El(e,t){return t==="grey"?t:e}const p_=Pe({prop:"color",themeKey:"palette",transform:El}),h_=Pe({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:El}),m_=Pe({prop:"backgroundColor",themeKey:"palette",transform:El});Qu(p_,h_,m_);function bn(e){return e<=1&&e!==0?`${e*100}%`:e}const g_=Pe({prop:"width",transform:bn}),Up=e=>{if(e.maxWidth!==void 0&&e.maxWidth!==null){const t=n=>{var r;return{maxWidth:((r=e.theme)==null||(r=r.breakpoints)==null||(r=r.values)==null?void 0:r[n])||Ip[n]||bn(n)}};return Hn(e,e.maxWidth,t)}return null};Up.filterProps=["maxWidth"];const v_=Pe({prop:"minWidth",transform:bn}),y_=Pe({prop:"height",transform:bn}),w_=Pe({prop:"maxHeight",transform:bn}),x_=Pe({prop:"minHeight",transform:bn});Pe({prop:"size",cssProperty:"width",transform:bn});Pe({prop:"size",cssProperty:"height",transform:bn});const S_=Pe({prop:"boxSizing"});Qu(g_,Up,v_,y_,w_,x_,S_);const b_={border:{themeKey:"borders",transform:pr},borderTop:{themeKey:"borders",transform:pr},borderRight:{themeKey:"borders",transform:pr},borderBottom:{themeKey:"borders",transform:pr},borderLeft:{themeKey:"borders",transform:pr},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:Xu},color:{themeKey:"palette",transform:El},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:El},backgroundColor:{themeKey:"palette",transform:El},p:{style:nt},pt:{style:nt},pr:{style:nt},pb:{style:nt},pl:{style:nt},px:{style:nt},py:{style:nt},padding:{style:nt},paddingTop:{style:nt},paddingRight:{style:nt},paddingBottom:{style:nt},paddingLeft:{style:nt},paddingX:{style:nt},paddingY:{style:nt},paddingInline:{style:nt},paddingInlineStart:{style:nt},paddingInlineEnd:{style:nt},paddingBlock:{style:nt},paddingBlockStart:{style:nt},paddingBlockEnd:{style:nt},m:{style:tt},mt:{style:tt},mr:{style:tt},mb:{style:tt},ml:{style:tt},mx:{style:tt},my:{style:tt},margin:{style:tt},marginTop:{style:tt},marginRight:{style:tt},marginBottom:{style:tt},marginLeft:{style:tt},marginX:{style:tt},marginY:{style:tt},marginInline:{style:tt},marginInlineStart:{style:tt},marginInlineEnd:{style:tt},marginBlock:{style:tt},marginBlockStart:{style:tt},marginBlockEnd:{style:tt},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:Zu},rowGap:{style:Ju},columnGap:{style:qu},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:bn},maxWidth:{style:Up},minWidth:{transform:bn},height:{transform:bn},maxHeight:{transform:bn},minHeight:{transform:bn},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}},ec=b_;function k_(...e){const t=e.reduce((r,o)=>r.concat(Object.keys(o)),[]),n=new Set(t);return e.every(r=>n.size===Object.keys(r).length)}function __(e,t){return typeof e=="function"?e(t):e}function C_(){function e(n,r,o,l){const i={[n]:r,theme:o},s=l[n];if(!s)return{[n]:r};const{cssProperty:u=n,themeKey:a,transform:f,style:p}=s;if(r==null)return null;if(a==="typography"&&r==="inherit")return{[n]:r};const c=Yu(o,a)||{};return p?p(i):Hn(i,r,g=>{let m=qa(c,f,g);return g===m&&typeof g=="string"&&(m=qa(c,f,`${n}${g==="default"?"":Be(g)}`,g)),u===!1?m:{[u]:m}})}function t(n){var r;const{sx:o,theme:l={}}=n||{};if(!o)return null;const i=(r=l.unstable_sxConfig)!=null?r:ec;function s(u){let a=u;if(typeof u=="function")a=u(l);else if(typeof u!="object")return u;if(!a)return null;const f=Bk(l.breakpoints),p=Object.keys(f);let c=f;return Object.keys(a).forEach(h=>{const g=__(a[h],l);if(g!=null)if(typeof g=="object")if(i[h])c=Vi(c,e(h,g,l,i));else{const m=Hn({theme:l},g,b=>({[h]:b}));k_(m,g)?c[h]=t({sx:g,theme:l}):c=Vi(c,m)}else c=Vi(c,e(h,g,l,i))}),jk(p,c)}return Array.isArray(o)?o.map(s):s(o)}return t}const zy=C_();zy.filterProps=["sx"];const tc=zy,E_=["breakpoints","palette","spacing","shape"];function Vp(e={},...t){const{breakpoints:n={},palette:r={},spacing:o,shape:l={}}=e,i=ve(e,E_),s=Ak(n),u=Gk(o);let a=Cr({breakpoints:s,direction:"ltr",components:{},palette:A({mode:"light"},r),spacing:u,shape:A({},Dk,l)},i);return a=t.reduce((f,p)=>Cr(f,p),a),a.unstable_sxConfig=A({},ec,i==null?void 0:i.unstable_sxConfig),a.unstable_sx=function(p){return tc({sx:p,theme:this})},a}function T_(e){return Object.keys(e).length===0}function Ay(e=null){const t=$.useContext(jp);return!t||T_(t)?e:t}const M_=Vp();function Kp(e=M_){return Ay(e)}const P_=["sx"],R_=e=>{var t,n;const r={systemProps:{},otherProps:{}},o=(t=e==null||(n=e.theme)==null?void 0:n.unstable_sxConfig)!=null?t:ec;return Object.keys(e).forEach(l=>{o[l]?r.systemProps[l]=e[l]:r.otherProps[l]=e[l]}),r};function Gp(e){const{sx:t}=e,n=ve(e,P_),{systemProps:r,otherProps:o}=R_(n);let l;return Array.isArray(t)?l=[r,...t]:typeof t=="function"?l=(...i)=>{const s=t(...i);return yo(s)?A({},r,s):r}:l=A({},r,t),A({},o,{sx:l})}function Ly(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;ts!=="theme"&&s!=="sx"&&s!=="as"})(tc);return $.forwardRef(function(u,a){const f=Kp(n),p=Gp(u),{className:c,component:h="div"}=p,g=ve(p,$_);return R.jsx(l,A({as:h,ref:a,className:fe(c,o?o(r):r),theme:t&&f[t]||f},g))})}const N_=["variant"];function m0(e){return e.length===0}function Dy(e){const{variant:t}=e,n=ve(e,N_);let r=t||"";return Object.keys(n).sort().forEach(o=>{o==="color"?r+=m0(r)?e[o]:Be(e[o]):r+=`${m0(r)?o:Be(o)}${Be(e[o].toString())}`}),r}const z_=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function A_(e){return Object.keys(e).length===0}function L_(e){return typeof e=="string"&&e.charCodeAt(0)>96}const D_=(e,t)=>t.components&&t.components[e]&&t.components[e].styleOverrides?t.components[e].styleOverrides:null,B_=(e,t)=>{let n=[];t&&t.components&&t.components[e]&&t.components[e].variants&&(n=t.components[e].variants);const r={};return n.forEach(o=>{const l=Dy(o.props);r[l]=o.style}),r},j_=(e,t,n,r)=>{var o;const{ownerState:l={}}=e,i=[],s=n==null||(o=n.components)==null||(o=o[r])==null?void 0:o.variants;return s&&s.forEach(u=>{let a=!0;Object.keys(u.props).forEach(f=>{l[f]!==u.props[f]&&e[f]!==u.props[f]&&(a=!1)}),a&&i.push(t[Dy(u.props)])}),i};function _a(e){return e!=="ownerState"&&e!=="theme"&&e!=="sx"&&e!=="as"}const F_=Vp(),I_=e=>e&&e.charAt(0).toLowerCase()+e.slice(1);function Ci({defaultTheme:e,theme:t,themeId:n}){return A_(t)?e:t[n]||t}function H_(e){return e?(t,n)=>n[e]:null}function W_(e={}){const{themeId:t,defaultTheme:n=F_,rootShouldForwardProp:r=_a,slotShouldForwardProp:o=_a}=e,l=i=>tc(A({},i,{theme:Ci(A({},i,{defaultTheme:n,themeId:t}))}));return l.__mui_systemSx=!0,(i,s={})=>{Ok(i,_=>_.filter(C=>!(C!=null&&C.__mui_systemSx)));const{name:u,slot:a,skipVariantsResolver:f,skipSx:p,overridesResolver:c=H_(I_(a))}=s,h=ve(s,z_),g=f!==void 0?f:a&&a!=="Root"&&a!=="root"||!1,m=p||!1;let b,w=_a;a==="Root"||a==="root"?w=r:a?w=o:L_(i)&&(w=void 0);const v=$y(i,A({shouldForwardProp:w,label:b},h)),x=(_,...C)=>{const M=C?C.map(P=>typeof P=="function"&&P.__emotion_real!==P?L=>P(A({},L,{theme:Ci(A({},L,{defaultTheme:n,themeId:t}))})):P):[];let E=_;u&&c&&M.push(P=>{const L=Ci(A({},P,{defaultTheme:n,themeId:t})),U=D_(u,L);if(U){const W={};return Object.entries(U).forEach(([G,Y])=>{W[G]=typeof Y=="function"?Y(A({},P,{theme:L})):Y}),c(P,W)}return null}),u&&!g&&M.push(P=>{const L=Ci(A({},P,{defaultTheme:n,themeId:t}));return j_(P,B_(u,L),L,u)}),m||M.push(l);const O=M.length-C.length;if(Array.isArray(_)&&O>0){const P=new Array(O).fill("");E=[..._,...P],E.raw=[..._.raw,...P]}else typeof _=="function"&&_.__emotion_real!==_&&(E=P=>_(A({},P,{theme:Ci(A({},P,{defaultTheme:n,themeId:t}))})));const z=v(E,...M);return i.muiName&&(z.muiName=i.muiName),z};return v.withConfig&&(x.withConfig=v.withConfig),x}}function U_(e){const{theme:t,name:n,props:r}=e;return!t||!t.components||!t.components[n]||!t.components[n].defaultProps?r:py(t.components[n].defaultProps,r)}function V_({props:e,name:t,defaultTheme:n,themeId:r}){let o=Kp(n);return r&&(o=o[r]||o),U_({theme:o,name:t,props:e})}function Yp(e,t=0,n=1){return Math.min(Math.max(t,e),n)}function K_(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&n[0].length===1&&(n=n.map(r=>r+r)),n?`rgb${n.length===4?"a":""}(${n.map((r,o)=>o<3?parseInt(r,16):Math.round(parseInt(r,16)/255*1e3)/1e3).join(", ")})`:""}function zo(e){if(e.type)return e;if(e.charAt(0)==="#")return zo(K_(e));const t=e.indexOf("("),n=e.substring(0,t);if(["rgb","rgba","hsl","hsla","color"].indexOf(n)===-1)throw new Error(Ll(9,e));let r=e.substring(t+1,e.length-1),o;if(n==="color"){if(r=r.split(" "),o=r.shift(),r.length===4&&r[3].charAt(0)==="/"&&(r[3]=r[3].slice(1)),["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(o)===-1)throw new Error(Ll(10,o))}else r=r.split(",");return r=r.map(l=>parseFloat(l)),{type:n,values:r,colorSpace:o}}function nc(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return t.indexOf("rgb")!==-1?r=r.map((o,l)=>l<3?parseInt(o,10):o):t.indexOf("hsl")!==-1&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),t.indexOf("color")!==-1?r=`${n} ${r.join(" ")}`:r=`${r.join(", ")}`,`${t}(${r})`}function G_(e){e=zo(e);const{values:t}=e,n=t[0],r=t[1]/100,o=t[2]/100,l=r*Math.min(o,1-o),i=(a,f=(a+n/30)%12)=>o-l*Math.max(Math.min(f-3,9-f,1),-1);let s="rgb";const u=[Math.round(i(0)*255),Math.round(i(8)*255),Math.round(i(4)*255)];return e.type==="hsla"&&(s+="a",u.push(t[3])),nc({type:s,values:u})}function g0(e){e=zo(e);let t=e.type==="hsl"||e.type==="hsla"?zo(G_(e)).values:e.values;return t=t.map(n=>(e.type!=="color"&&(n/=255),n<=.03928?n/12.92:((n+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function Y_(e,t){const n=g0(e),r=g0(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function jl(e,t){return e=zo(e),t=Yp(t),(e.type==="rgb"||e.type==="hsl")&&(e.type+="a"),e.type==="color"?e.values[3]=`/${t}`:e.values[3]=t,nc(e)}function By(e,t){if(e=zo(e),t=Yp(t),e.type.indexOf("hsl")!==-1)e.values[2]*=1-t;else if(e.type.indexOf("rgb")!==-1||e.type.indexOf("color")!==-1)for(let n=0;n<3;n+=1)e.values[n]*=1-t;return nc(e)}function jy(e,t){if(e=zo(e),t=Yp(t),e.type.indexOf("hsl")!==-1)e.values[2]+=(100-e.values[2])*t;else if(e.type.indexOf("rgb")!==-1)for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.indexOf("color")!==-1)for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return nc(e)}const Q_=$.createContext(null),Fy=Q_;function Iy(){return $.useContext(Fy)}const X_=typeof Symbol=="function"&&Symbol.for,Z_=X_?Symbol.for("mui.nested"):"__THEME_NESTED__";function q_(e,t){return typeof t=="function"?t(e):A({},e,t)}function J_(e){const{children:t,theme:n}=e,r=Iy(),o=$.useMemo(()=>{const l=r===null?n:q_(r,n);return l!=null&&(l[Z_]=r!==null),l},[n,r]);return R.jsx(Fy.Provider,{value:o,children:t})}const v0={};function y0(e,t,n,r=!1){return $.useMemo(()=>{const o=e&&t[e]||t;if(typeof n=="function"){const l=n(o),i=e?A({},t,{[e]:l}):l;return r?()=>i:i}return e?A({},t,{[e]:n}):A({},t,n)},[e,t,n,r])}function eC(e){const{children:t,theme:n,themeId:r}=e,o=Ay(v0),l=Iy()||v0,i=y0(r,o,n),s=y0(r,l,n,!0);return R.jsx(J_,{theme:s,children:R.jsx(jp.Provider,{value:i,children:t})})}function tC(e,t){return A({toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}}},t)}const nC=["mode","contrastThreshold","tonalOffset"],w0={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:fs.white,default:fs.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},ff={text:{primary:fs.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:fs.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function x0(e,t,n,r){const o=r.light||r,l=r.dark||r*1.5;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:t==="light"?e.light=jy(e.main,o):t==="dark"&&(e.dark=By(e.main,l)))}function rC(e="light"){return e==="dark"?{main:Jo[200],light:Jo[50],dark:Jo[400]}:{main:Jo[700],light:Jo[400],dark:Jo[800]}}function oC(e="light"){return e==="dark"?{main:qo[200],light:qo[50],dark:qo[400]}:{main:qo[500],light:qo[300],dark:qo[700]}}function lC(e="light"){return e==="dark"?{main:Zo[500],light:Zo[300],dark:Zo[700]}:{main:Zo[700],light:Zo[400],dark:Zo[800]}}function iC(e="light"){return e==="dark"?{main:el[400],light:el[300],dark:el[700]}:{main:el[700],light:el[500],dark:el[900]}}function sC(e="light"){return e==="dark"?{main:tl[400],light:tl[300],dark:tl[700]}:{main:tl[800],light:tl[500],dark:tl[900]}}function aC(e="light"){return e==="dark"?{main:ki[400],light:ki[300],dark:ki[700]}:{main:"#ed6c02",light:ki[500],dark:ki[900]}}function uC(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:r=.2}=e,o=ve(e,nC),l=e.primary||rC(t),i=e.secondary||oC(t),s=e.error||lC(t),u=e.info||iC(t),a=e.success||sC(t),f=e.warning||aC(t);function p(m){return Y_(m,ff.text.primary)>=n?ff.text.primary:w0.text.primary}const c=({color:m,name:b,mainShade:w=500,lightShade:v=300,darkShade:x=700})=>{if(m=A({},m),!m.main&&m[w]&&(m.main=m[w]),!m.hasOwnProperty("main"))throw new Error(Ll(11,b?` (${b})`:"",w));if(typeof m.main!="string")throw new Error(Ll(12,b?` (${b})`:"",JSON.stringify(m.main)));return x0(m,"light",v,r),x0(m,"dark",x,r),m.contrastText||(m.contrastText=p(m.main)),m},h={dark:ff,light:w0};return Cr(A({common:A({},fs),mode:t,primary:c({color:l,name:"primary"}),secondary:c({color:i,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:c({color:s,name:"error"}),warning:c({color:f,name:"warning"}),info:c({color:u,name:"info"}),success:c({color:a,name:"success"}),grey:ub,contrastThreshold:n,getContrastText:p,augmentColor:c,tonalOffset:r},h[t]),o)}const cC=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];function fC(e){return Math.round(e*1e5)/1e5}const S0={textTransform:"uppercase"},b0='"Roboto", "Helvetica", "Arial", sans-serif';function dC(e,t){const n=typeof t=="function"?t(e):t,{fontFamily:r=b0,fontSize:o=14,fontWeightLight:l=300,fontWeightRegular:i=400,fontWeightMedium:s=500,fontWeightBold:u=700,htmlFontSize:a=16,allVariants:f,pxToRem:p}=n,c=ve(n,cC),h=o/14,g=p||(w=>`${w/a*h}rem`),m=(w,v,x,_,C)=>A({fontFamily:r,fontWeight:w,fontSize:g(v),lineHeight:x},r===b0?{letterSpacing:`${fC(_/v)}em`}:{},C,f),b={h1:m(l,96,1.167,-1.5),h2:m(l,60,1.2,-.5),h3:m(i,48,1.167,0),h4:m(i,34,1.235,.25),h5:m(i,24,1.334,0),h6:m(s,20,1.6,.15),subtitle1:m(i,16,1.75,.15),subtitle2:m(s,14,1.57,.1),body1:m(i,16,1.5,.15),body2:m(i,14,1.43,.15),button:m(s,14,1.75,.4,S0),caption:m(i,12,1.66,.4),overline:m(i,12,2.66,1,S0),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return Cr(A({htmlFontSize:a,pxToRem:g,fontFamily:r,fontSize:o,fontWeightLight:l,fontWeightRegular:i,fontWeightMedium:s,fontWeightBold:u},b),c,{clone:!1})}const pC=.2,hC=.14,mC=.12;function Ve(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,${pC})`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,${hC})`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,${mC})`].join(",")}const gC=["none",Ve(0,2,1,-1,0,1,1,0,0,1,3,0),Ve(0,3,1,-2,0,2,2,0,0,1,5,0),Ve(0,3,3,-2,0,3,4,0,0,1,8,0),Ve(0,2,4,-1,0,4,5,0,0,1,10,0),Ve(0,3,5,-1,0,5,8,0,0,1,14,0),Ve(0,3,5,-1,0,6,10,0,0,1,18,0),Ve(0,4,5,-2,0,7,10,1,0,2,16,1),Ve(0,5,5,-3,0,8,10,1,0,3,14,2),Ve(0,5,6,-3,0,9,12,1,0,3,16,2),Ve(0,6,6,-3,0,10,14,1,0,4,18,3),Ve(0,6,7,-4,0,11,15,1,0,4,20,3),Ve(0,7,8,-4,0,12,17,2,0,5,22,4),Ve(0,7,8,-4,0,13,19,2,0,5,24,4),Ve(0,7,9,-4,0,14,21,2,0,5,26,4),Ve(0,8,9,-5,0,15,22,2,0,6,28,5),Ve(0,8,10,-5,0,16,24,2,0,6,30,5),Ve(0,8,11,-5,0,17,26,2,0,6,32,5),Ve(0,9,11,-5,0,18,28,2,0,7,34,6),Ve(0,9,12,-6,0,19,29,2,0,7,36,6),Ve(0,10,13,-6,0,20,31,3,0,8,38,7),Ve(0,10,13,-6,0,21,33,3,0,8,40,7),Ve(0,10,14,-6,0,22,35,3,0,8,42,7),Ve(0,11,14,-7,0,23,36,3,0,9,44,8),Ve(0,11,15,-7,0,24,38,3,0,9,46,8)],vC=gC,yC=["duration","easing","delay"],wC={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},xC={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function k0(e){return`${Math.round(e)}ms`}function SC(e){if(!e)return 0;const t=e/36;return Math.round((4+15*t**.25+t/5)*10)}function bC(e){const t=A({},wC,e.easing),n=A({},xC,e.duration);return A({getAutoHeightDuration:SC,create:(o=["all"],l={})=>{const{duration:i=n.standard,easing:s=t.easeInOut,delay:u=0}=l;return ve(l,yC),(Array.isArray(o)?o:[o]).map(a=>`${a} ${typeof i=="string"?i:k0(i)} ${s} ${typeof u=="string"?u:k0(u)}`).join(",")}},e,{easing:t,duration:n})}const kC={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},_C=kC,CC=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function Qp(e={},...t){const{mixins:n={},palette:r={},transitions:o={},typography:l={}}=e,i=ve(e,CC);if(e.vars)throw new Error(Ll(18));const s=uC(r),u=Vp(e);let a=Cr(u,{mixins:tC(u.breakpoints,n),palette:s,shadows:vC.slice(),typography:dC(s,l),transitions:bC(o),zIndex:A({},_C)});return a=Cr(a,i),a=t.reduce((f,p)=>Cr(f,p),a),a.unstable_sxConfig=A({},ec,i==null?void 0:i.unstable_sxConfig),a.unstable_sx=function(p){return tc({sx:p,theme:this})},a}const EC=Qp(),Xp=EC;function rc(){const e=Kp(Xp);return e[Dl]||e}function yt({props:e,name:t}){return V_({props:e,name:t,defaultTheme:Xp,themeId:Dl})}const Hy=e=>_a(e)&&e!=="classes",TC=W_({themeId:Dl,defaultTheme:Xp,rootShouldForwardProp:Hy}),Ue=TC,MC=["theme"];function PC(e){let{theme:t}=e,n=ve(e,MC);const r=t[Dl];return R.jsx(eC,A({},n,{themeId:r?Dl:void 0,theme:r||t}))}const RC=e=>{let t;return e<1?t=5.11916*e**2:t=4.5*Math.log(e+1)+2,(t/100).toFixed(2)},_0=RC;function $C(e){return gt("MuiSvgIcon",e)}vt("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const OC=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],NC=e=>{const{color:t,fontSize:n,classes:r}=e,o={root:["root",t!=="inherit"&&`color${Be(t)}`,`fontSize${Be(n)}`]};return kt(o,$C,r)},zC=Ue("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.color!=="inherit"&&t[`color${Be(n.color)}`],t[`fontSize${Be(n.fontSize)}`]]}})(({theme:e,ownerState:t})=>{var n,r,o,l,i,s,u,a,f,p,c,h,g;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:(n=e.transitions)==null||(r=n.create)==null?void 0:r.call(n,"fill",{duration:(o=e.transitions)==null||(o=o.duration)==null?void 0:o.shorter}),fontSize:{inherit:"inherit",small:((l=e.typography)==null||(i=l.pxToRem)==null?void 0:i.call(l,20))||"1.25rem",medium:((s=e.typography)==null||(u=s.pxToRem)==null?void 0:u.call(s,24))||"1.5rem",large:((a=e.typography)==null||(f=a.pxToRem)==null?void 0:f.call(a,35))||"2.1875rem"}[t.fontSize],color:(p=(c=(e.vars||e).palette)==null||(c=c[t.color])==null?void 0:c.main)!=null?p:{action:(h=(e.vars||e).palette)==null||(h=h.action)==null?void 0:h.active,disabled:(g=(e.vars||e).palette)==null||(g=g.action)==null?void 0:g.disabled,inherit:void 0}[t.color]}}),Wy=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiSvgIcon"}),{children:o,className:l,color:i="inherit",component:s="svg",fontSize:u="medium",htmlColor:a,inheritViewBox:f=!1,titleAccess:p,viewBox:c="0 0 24 24"}=r,h=ve(r,OC),g=$.isValidElement(o)&&o.type==="svg",m=A({},r,{color:i,component:s,fontSize:u,instanceFontSize:t.fontSize,inheritViewBox:f,viewBox:c,hasSvgAsChild:g}),b={};f||(b.viewBox=c);const w=NC(m);return R.jsxs(zC,A({as:s,className:fe(w.root,l),focusable:"false",color:a,"aria-hidden":p?void 0:!0,role:p?"img":void 0,ref:n},b,h,g&&o.props,{ownerState:m,children:[g?o.props.children:o,p?R.jsx("title",{children:p}):null]}))});Wy.muiName="SvgIcon";const C0=Wy;function Uy(e,t){function n(r,o){return R.jsx(C0,A({"data-testid":`${t}Icon`,ref:o},r,{children:e}))}return n.muiName=C0.muiName,$.memo($.forwardRef(n))}function Sd(e,t){return Sd=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,o){return r.__proto__=o,r},Sd(e,t)}function AC(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Sd(e,t)}const E0=hr.createContext(null);function LC(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Zp(e,t){var n=function(l){return t&&$.isValidElement(l)?t(l):l},r=Object.create(null);return e&&$.Children.map(e,function(o){return o}).forEach(function(o){r[o.key]=n(o)}),r}function DC(e,t){e=e||{},t=t||{};function n(f){return f in t?t[f]:e[f]}var r=Object.create(null),o=[];for(var l in e)l in t?o.length&&(r[l]=o,o=[]):o.push(l);var i,s={};for(var u in t){if(r[u])for(i=0;i{const{square:t,elevation:n,variant:r,classes:o}=e,l={root:["root",r,!t&&"rounded",r==="elevation"&&`elevation${n}`]};return kt(l,WC,o)},KC=Ue("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,n.variant==="elevation"&&t[`elevation${n.elevation}`]]}})(({theme:e,ownerState:t})=>{var n;return A({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow")},!t.square&&{borderRadius:e.shape.borderRadius},t.variant==="outlined"&&{border:`1px solid ${(e.vars||e).palette.divider}`},t.variant==="elevation"&&A({boxShadow:(e.vars||e).shadows[t.elevation]},!e.vars&&e.palette.mode==="dark"&&{backgroundImage:`linear-gradient(${jl("#fff",_0(t.elevation))}, ${jl("#fff",_0(t.elevation))})`},e.vars&&{backgroundImage:(n=e.vars.overlays)==null?void 0:n[t.elevation]}))}),GC=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiPaper"}),{className:o,component:l="div",elevation:i=1,square:s=!1,variant:u="elevation"}=r,a=ve(r,UC),f=A({},r,{component:l,elevation:i,square:s,variant:u}),p=VC(f);return R.jsx(KC,A({as:l,ownerState:f,className:fe(p.root,o),ref:n},a))}),Jp=GC;function YC(e){const{className:t,classes:n,pulsate:r=!1,rippleX:o,rippleY:l,rippleSize:i,in:s,onExited:u,timeout:a}=e,[f,p]=$.useState(!1),c=fe(t,n.ripple,n.rippleVisible,r&&n.ripplePulsate),h={width:i,height:i,top:-(i/2)+l,left:-(i/2)+o},g=fe(n.child,f&&n.childLeaving,r&&n.childPulsate);return!s&&!f&&p(!0),$.useEffect(()=>{if(!s&&u!=null){const m=setTimeout(u,a);return()=>{clearTimeout(m)}}},[u,s,a]),R.jsx("span",{className:c,style:h,children:R.jsx("span",{className:g})})}const QC=vt("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),An=QC,XC=["center","classes","className"];let oc=e=>e,T0,M0,P0,R0;const bd=550,ZC=80,qC=Fp(T0||(T0=oc` - 0% { - transform: scale(0); - opacity: 0.1; - } - - 100% { - transform: scale(1); - opacity: 0.3; - } -`)),JC=Fp(M0||(M0=oc` - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -`)),eE=Fp(P0||(P0=oc` - 0% { - transform: scale(1); - } - - 50% { - transform: scale(0.92); - } - - 100% { - transform: scale(1); - } -`)),tE=Ue("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),nE=Ue(YC,{name:"MuiTouchRipple",slot:"Ripple"})(R0||(R0=oc` - opacity: 0; - position: absolute; - - &.${0} { - opacity: 0.3; - transform: scale(1); - animation-name: ${0}; - animation-duration: ${0}ms; - animation-timing-function: ${0}; - } - - &.${0} { - animation-duration: ${0}ms; - } - - & .${0} { - opacity: 1; - display: block; - width: 100%; - height: 100%; - border-radius: 50%; - background-color: currentColor; - } - - & .${0} { - opacity: 0; - animation-name: ${0}; - animation-duration: ${0}ms; - animation-timing-function: ${0}; - } - - & .${0} { - position: absolute; - /* @noflip */ - left: 0px; - top: 0; - animation-name: ${0}; - animation-duration: 2500ms; - animation-timing-function: ${0}; - animation-iteration-count: infinite; - animation-delay: 200ms; - } -`),An.rippleVisible,qC,bd,({theme:e})=>e.transitions.easing.easeInOut,An.ripplePulsate,({theme:e})=>e.transitions.duration.shorter,An.child,An.childLeaving,JC,bd,({theme:e})=>e.transitions.easing.easeInOut,An.childPulsate,eE,({theme:e})=>e.transitions.easing.easeInOut),rE=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTouchRipple"}),{center:o=!1,classes:l={},className:i}=r,s=ve(r,XC),[u,a]=$.useState([]),f=$.useRef(0),p=$.useRef(null);$.useEffect(()=>{p.current&&(p.current(),p.current=null)},[u]);const c=$.useRef(!1),h=$.useRef(0),g=$.useRef(null),m=$.useRef(null);$.useEffect(()=>()=>{h.current&&clearTimeout(h.current)},[]);const b=$.useCallback(_=>{const{pulsate:C,rippleX:M,rippleY:E,rippleSize:O,cb:z}=_;a(P=>[...P,R.jsx(nE,{classes:{ripple:fe(l.ripple,An.ripple),rippleVisible:fe(l.rippleVisible,An.rippleVisible),ripplePulsate:fe(l.ripplePulsate,An.ripplePulsate),child:fe(l.child,An.child),childLeaving:fe(l.childLeaving,An.childLeaving),childPulsate:fe(l.childPulsate,An.childPulsate)},timeout:bd,pulsate:C,rippleX:M,rippleY:E,rippleSize:O},f.current)]),f.current+=1,p.current=z},[l]),w=$.useCallback((_={},C={},M=()=>{})=>{const{pulsate:E=!1,center:O=o||C.pulsate,fakeElement:z=!1}=C;if((_==null?void 0:_.type)==="mousedown"&&c.current){c.current=!1;return}(_==null?void 0:_.type)==="touchstart"&&(c.current=!0);const P=z?null:m.current,L=P?P.getBoundingClientRect():{width:0,height:0,left:0,top:0};let U,W,G;if(O||_===void 0||_.clientX===0&&_.clientY===0||!_.clientX&&!_.touches)U=Math.round(L.width/2),W=Math.round(L.height/2);else{const{clientX:Y,clientY:le}=_.touches&&_.touches.length>0?_.touches[0]:_;U=Math.round(Y-L.left),W=Math.round(le-L.top)}if(O)G=Math.sqrt((2*L.width**2+L.height**2)/3),G%2===0&&(G+=1);else{const Y=Math.max(Math.abs((P?P.clientWidth:0)-U),U)*2+2,le=Math.max(Math.abs((P?P.clientHeight:0)-W),W)*2+2;G=Math.sqrt(Y**2+le**2)}_!=null&&_.touches?g.current===null&&(g.current=()=>{b({pulsate:E,rippleX:U,rippleY:W,rippleSize:G,cb:M})},h.current=setTimeout(()=>{g.current&&(g.current(),g.current=null)},ZC)):b({pulsate:E,rippleX:U,rippleY:W,rippleSize:G,cb:M})},[o,b]),v=$.useCallback(()=>{w({},{pulsate:!0})},[w]),x=$.useCallback((_,C)=>{if(clearTimeout(h.current),(_==null?void 0:_.type)==="touchend"&&g.current){g.current(),g.current=null,h.current=setTimeout(()=>{x(_,C)});return}g.current=null,a(M=>M.length>0?M.slice(1):M),p.current=C},[]);return $.useImperativeHandle(n,()=>({pulsate:v,start:w,stop:x}),[v,w,x]),R.jsx(tE,A({className:fe(An.root,l.root,i),ref:m},s,{children:R.jsx(HC,{component:null,exit:!0,children:u})}))}),oE=rE;function lE(e){return gt("MuiButtonBase",e)}const iE=vt("MuiButtonBase",["root","disabled","focusVisible"]),sE=iE,aE=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],uE=e=>{const{disabled:t,focusVisible:n,focusVisibleClassName:r,classes:o}=e,i=kt({root:["root",t&&"disabled",n&&"focusVisible"]},lE,o);return n&&r&&(i.root+=` ${r}`),i},cE=Ue("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${sE.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),fE=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiButtonBase"}),{action:o,centerRipple:l=!1,children:i,className:s,component:u="button",disabled:a=!1,disableRipple:f=!1,disableTouchRipple:p=!1,focusRipple:c=!1,LinkComponent:h="a",onBlur:g,onClick:m,onContextMenu:b,onDragLeave:w,onFocus:v,onFocusVisible:x,onKeyDown:_,onKeyUp:C,onMouseDown:M,onMouseLeave:E,onMouseUp:O,onTouchEnd:z,onTouchMove:P,onTouchStart:L,tabIndex:U=0,TouchRippleProps:W,touchRippleRef:G,type:Y}=r,le=ve(r,aE),oe=$.useRef(null),j=$.useRef(null),X=gd(j,G),{isFocusVisibleRef:H,onFocus:J,onBlur:V,ref:ye}=_b(),[q,ae]=$.useState(!1);a&&q&&ae(!1),$.useImperativeHandle(o,()=>({focusVisible:()=>{ae(!0),oe.current.focus()}}),[]);const[Ne,wt]=$.useState(!1);$.useEffect(()=>{wt(!0)},[]);const qt=Ne&&!f&&!a;$.useEffect(()=>{q&&c&&!f&&Ne&&j.current.pulsate()},[f,c,q,Ne]);function st(te,ut,Et=p){return ko(tn=>(ut&&ut(tn),!Et&&j.current&&j.current[te](tn),!0))}const un=st("start",M),Jt=st("stop",b),Nn=st("stop",w),Nr=st("stop",O),wn=st("stop",te=>{q&&te.preventDefault(),E&&E(te)}),yr=st("start",L),nr=st("stop",z),xt=st("stop",P),ot=st("stop",te=>{V(te),H.current===!1&&ae(!1),g&&g(te)},!1),rr=ko(te=>{oe.current||(oe.current=te.currentTarget),J(te),H.current===!0&&(ae(!0),x&&x(te)),v&&v(te)}),Ct=()=>{const te=oe.current;return u&&u!=="button"&&!(te.tagName==="A"&&te.href)},en=$.useRef(!1),ce=ko(te=>{c&&!en.current&&q&&j.current&&te.key===" "&&(en.current=!0,j.current.stop(te,()=>{j.current.start(te)})),te.target===te.currentTarget&&Ct()&&te.key===" "&&te.preventDefault(),_&&_(te),te.target===te.currentTarget&&Ct()&&te.key==="Enter"&&!a&&(te.preventDefault(),m&&m(te))}),ee=ko(te=>{c&&te.key===" "&&j.current&&q&&!te.defaultPrevented&&(en.current=!1,j.current.stop(te,()=>{j.current.pulsate(te)})),C&&C(te),m&&te.target===te.currentTarget&&Ct()&&te.key===" "&&!te.defaultPrevented&&m(te)});let be=u;be==="button"&&(le.href||le.to)&&(be=h);const Le={};be==="button"?(Le.type=Y===void 0?"button":Y,Le.disabled=a):(!le.href&&!le.to&&(Le.role="button"),a&&(Le["aria-disabled"]=a));const Je=gd(n,ye,oe),at=A({},r,{centerRipple:l,component:u,disabled:a,disableRipple:f,disableTouchRipple:p,focusRipple:c,tabIndex:U,focusVisible:q}),Ye=uE(at);return R.jsxs(cE,A({as:be,className:fe(Ye.root,s),ownerState:at,onBlur:ot,onClick:m,onContextMenu:Jt,onFocus:rr,onKeyDown:ce,onKeyUp:ee,onMouseDown:un,onMouseLeave:wn,onMouseUp:Nr,onDragLeave:Nn,onTouchEnd:nr,onTouchMove:xt,onTouchStart:yr,ref:Je,tabIndex:a?-1:U,type:Y},Le,le,{children:[i,qt?R.jsx(oE,A({ref:X,center:l},W)):null]}))}),eh=fE;function dE(e){return gt("MuiTypography",e)}vt("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const pE=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],hE=e=>{const{align:t,gutterBottom:n,noWrap:r,paragraph:o,variant:l,classes:i}=e,s={root:["root",l,e.align!=="inherit"&&`align${Be(t)}`,n&&"gutterBottom",r&&"noWrap",o&&"paragraph"]};return kt(s,dE,i)},mE=Ue("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],n.align!=="inherit"&&t[`align${Be(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})(({theme:e,ownerState:t})=>A({margin:0},t.variant==="inherit"&&{font:"inherit"},t.variant!=="inherit"&&e.typography[t.variant],t.align!=="inherit"&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16})),$0={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},gE={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},vE=e=>gE[e]||e,yE=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTypography"}),o=vE(r.color),l=Gp(A({},r,{color:o})),{align:i="inherit",className:s,component:u,gutterBottom:a=!1,noWrap:f=!1,paragraph:p=!1,variant:c="body1",variantMapping:h=$0}=l,g=ve(l,pE),m=A({},l,{align:i,color:o,className:s,component:u,gutterBottom:a,noWrap:f,paragraph:p,variant:c,variantMapping:h}),b=u||(p?"p":h[c]||$0[c])||"span",w=hE(m);return R.jsx(mE,A({as:b,ref:n,ownerState:m,className:fe(w.root,s)},g))}),lo=yE;function wE(e){return gt("MuiAppBar",e)}vt("MuiAppBar",["root","positionFixed","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorPrimary","colorSecondary","colorInherit","colorTransparent"]);const xE=["className","color","enableColorOnDark","position"],SE=e=>{const{color:t,position:n,classes:r}=e,o={root:["root",`color${Be(t)}`,`position${Be(n)}`]};return kt(o,wE,r)},ra=(e,t)=>e?`${e==null?void 0:e.replace(")","")}, ${t})`:t,bE=Ue(Jp,{name:"MuiAppBar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[`position${Be(n.position)}`],t[`color${Be(n.color)}`]]}})(({theme:e,ownerState:t})=>{const n=e.palette.mode==="light"?e.palette.grey[100]:e.palette.grey[900];return A({display:"flex",flexDirection:"column",width:"100%",boxSizing:"border-box",flexShrink:0},t.position==="fixed"&&{position:"fixed",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0,"@media print":{position:"absolute"}},t.position==="absolute"&&{position:"absolute",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0},t.position==="sticky"&&{position:"sticky",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0},t.position==="static"&&{position:"static"},t.position==="relative"&&{position:"relative"},!e.vars&&A({},t.color==="default"&&{backgroundColor:n,color:e.palette.getContrastText(n)},t.color&&t.color!=="default"&&t.color!=="inherit"&&t.color!=="transparent"&&{backgroundColor:e.palette[t.color].main,color:e.palette[t.color].contrastText},t.color==="inherit"&&{color:"inherit"},e.palette.mode==="dark"&&!t.enableColorOnDark&&{backgroundColor:null,color:null},t.color==="transparent"&&A({backgroundColor:"transparent",color:"inherit"},e.palette.mode==="dark"&&{backgroundImage:"none"})),e.vars&&A({},t.color==="default"&&{"--AppBar-background":t.enableColorOnDark?e.vars.palette.AppBar.defaultBg:ra(e.vars.palette.AppBar.darkBg,e.vars.palette.AppBar.defaultBg),"--AppBar-color":t.enableColorOnDark?e.vars.palette.text.primary:ra(e.vars.palette.AppBar.darkColor,e.vars.palette.text.primary)},t.color&&!t.color.match(/^(default|inherit|transparent)$/)&&{"--AppBar-background":t.enableColorOnDark?e.vars.palette[t.color].main:ra(e.vars.palette.AppBar.darkBg,e.vars.palette[t.color].main),"--AppBar-color":t.enableColorOnDark?e.vars.palette[t.color].contrastText:ra(e.vars.palette.AppBar.darkColor,e.vars.palette[t.color].contrastText)},{backgroundColor:"var(--AppBar-background)",color:t.color==="inherit"?"inherit":"var(--AppBar-color)"},t.color==="transparent"&&{backgroundImage:"none",backgroundColor:"transparent",color:"inherit"}))}),kE=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiAppBar"}),{className:o,color:l="primary",enableColorOnDark:i=!1,position:s="fixed"}=r,u=ve(r,xE),a=A({},r,{color:l,position:s,enableColorOnDark:i}),f=SE(a);return R.jsx(bE,A({square:!0,component:"header",ownerState:a,elevation:4,className:fe(f.root,o,s==="fixed"&&"mui-fixed"),ref:n},u))}),_E=kE;function CE(e){return typeof e=="string"}function EE(e,t,n){return e===void 0||CE(e)?t:A({},t,{ownerState:A({},t.ownerState,n)})}function TE(e,t=[]){if(e===void 0)return{};const n={};return Object.keys(e).filter(r=>r.match(/^on[A-Z]/)&&typeof e[r]=="function"&&!t.includes(r)).forEach(r=>{n[r]=e[r]}),n}function ME(e,t,n){return typeof e=="function"?e(t,n):e}function O0(e){if(e===void 0)return{};const t={};return Object.keys(e).filter(n=>!(n.match(/^on[A-Z]/)&&typeof e[n]=="function")).forEach(n=>{t[n]=e[n]}),t}function PE(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:o,className:l}=e;if(!t){const h=fe(o==null?void 0:o.className,r==null?void 0:r.className,l,n==null?void 0:n.className),g=A({},n==null?void 0:n.style,o==null?void 0:o.style,r==null?void 0:r.style),m=A({},n,o,r);return h.length>0&&(m.className=h),Object.keys(g).length>0&&(m.style=g),{props:m,internalRef:void 0}}const i=TE(A({},o,r)),s=O0(r),u=O0(o),a=t(i),f=fe(a==null?void 0:a.className,n==null?void 0:n.className,l,o==null?void 0:o.className,r==null?void 0:r.className),p=A({},a==null?void 0:a.style,n==null?void 0:n.style,o==null?void 0:o.style,r==null?void 0:r.style),c=A({},a,n,u,s);return f.length>0&&(c.className=f),Object.keys(p).length>0&&(c.style=p),{props:c,internalRef:a.ref}}const RE=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function Ja(e){var t;const{elementType:n,externalSlotProps:r,ownerState:o,skipResolvingSlotProps:l=!1}=e,i=ve(e,RE),s=l?{}:ME(r,o),{props:u,internalRef:a}=PE(A({},i,{externalSlotProps:s})),f=gd(a,s==null?void 0:s.ref,(t=e.additionalProps)==null?void 0:t.ref);return EE(n,A({},u,{ref:f}),o)}const $E=Qp(),OE=O_({themeId:Dl,defaultTheme:$E,defaultClassName:"MuiBox-root",generateClassName:hy.generate}),Es=OE;function NE(e){return gt("MuiCard",e)}vt("MuiCard",["root"]);const zE=["className","raised"],AE=e=>{const{classes:t}=e;return kt({root:["root"]},NE,t)},LE=Ue(Jp,{name:"MuiCard",slot:"Root",overridesResolver:(e,t)=>t.root})(()=>({overflow:"hidden"})),DE=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiCard"}),{className:o,raised:l=!1}=r,i=ve(r,zE),s=A({},r,{raised:l}),u=AE(s);return R.jsx(LE,A({className:fe(u.root,o),elevation:l?8:void 0,ref:n,ownerState:s},i))}),Vy=DE;function BE(e){return gt("MuiCardContent",e)}vt("MuiCardContent",["root"]);const jE=["className","component"],FE=e=>{const{classes:t}=e;return kt({root:["root"]},BE,t)},IE=Ue("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,t)=>t.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}})),HE=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiCardContent"}),{className:o,component:l="div"}=r,i=ve(r,jE),s=A({},r,{component:l}),u=FE(s);return R.jsx(IE,A({as:l,className:fe(u.root,o),ownerState:s,ref:n},i))}),WE=HE;function UE(e){return gt("MuiFab",e)}const VE=vt("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"]),N0=VE,KE=["children","className","color","component","disabled","disableFocusRipple","focusVisibleClassName","size","variant"],GE=e=>{const{color:t,variant:n,classes:r,size:o}=e,l={root:["root",n,`size${Be(o)}`,t==="inherit"?"colorInherit":t]},i=kt(l,UE,r);return A({},r,i)},YE=Ue(eh,{name:"MuiFab",slot:"Root",shouldForwardProp:e=>Hy(e)||e==="classes",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`size${Be(n.size)}`],n.color==="inherit"&&t.colorInherit,t[Be(n.size)],t[n.color]]}})(({theme:e,ownerState:t})=>{var n,r;return A({},e.typography.button,{minHeight:36,transition:e.transitions.create(["background-color","box-shadow","border-color"],{duration:e.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.text.primary:(n=(r=e.palette).getContrastText)==null?void 0:n.call(r,e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:"none"},[`&.${N0.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]}},t.size==="small"&&{width:40,height:40},t.size==="medium"&&{width:48,height:48},t.variant==="extended"&&{borderRadius:48/2,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48},t.variant==="extended"&&t.size==="small"&&{width:"auto",padding:"0 8px",borderRadius:34/2,minWidth:34,height:34},t.variant==="extended"&&t.size==="medium"&&{width:"auto",padding:"0 16px",borderRadius:40/2,minWidth:40,height:40},t.color==="inherit"&&{color:"inherit"})},({theme:e,ownerState:t})=>A({},t.color!=="inherit"&&t.color!=="default"&&(e.vars||e).palette[t.color]!=null&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main,"&:hover":{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}}),({theme:e})=>({[`&.${N0.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}})),QE=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiFab"}),{children:o,className:l,color:i="default",component:s="button",disabled:u=!1,disableFocusRipple:a=!1,focusVisibleClassName:f,size:p="large",variant:c="circular"}=r,h=ve(r,KE),g=A({},r,{color:i,component:s,disabled:u,disableFocusRipple:a,size:p,variant:c}),m=GE(g);return R.jsx(YE,A({className:fe(m.root,l),component:s,disabled:u,focusRipple:!a,focusVisibleClassName:fe(m.focusVisible,f),ownerState:g,ref:n},h,{classes:m,children:o}))}),df=QE,XE=$.createContext(),z0=XE;function ZE(e){return gt("MuiGrid",e)}const qE=[0,1,2,3,4,5,6,7,8,9,10],JE=["column-reverse","column","row-reverse","row"],eT=["nowrap","wrap-reverse","wrap"],Ei=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],tT=vt("MuiGrid",["root","container","item","zeroMinWidth",...qE.map(e=>`spacing-xs-${e}`),...JE.map(e=>`direction-xs-${e}`),...eT.map(e=>`wrap-xs-${e}`),...Ei.map(e=>`grid-xs-${e}`),...Ei.map(e=>`grid-sm-${e}`),...Ei.map(e=>`grid-md-${e}`),...Ei.map(e=>`grid-lg-${e}`),...Ei.map(e=>`grid-xl-${e}`)]),ms=tT,nT=["className","columns","columnSpacing","component","container","direction","item","rowSpacing","spacing","wrap","zeroMinWidth"];function Tl(e){const t=parseFloat(e);return`${t}${String(e).replace(String(t),"")||"px"}`}function rT({theme:e,ownerState:t}){let n;return e.breakpoints.keys.reduce((r,o)=>{let l={};if(t[o]&&(n=t[o]),!n)return r;if(n===!0)l={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if(n==="auto")l={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{const i=Gu({values:t.columns,breakpoints:e.breakpoints.values}),s=typeof i=="object"?i[o]:i;if(s==null)return r;const u=`${Math.round(n/s*1e8)/1e6}%`;let a={};if(t.container&&t.item&&t.columnSpacing!==0){const f=e.spacing(t.columnSpacing);if(f!=="0px"){const p=`calc(${u} + ${Tl(f)})`;a={flexBasis:p,maxWidth:p}}}l=A({flexBasis:u,flexGrow:0,maxWidth:u},a)}return e.breakpoints.values[o]===0?Object.assign(r,l):r[e.breakpoints.up(o)]=l,r},{})}function oT({theme:e,ownerState:t}){const n=Gu({values:t.direction,breakpoints:e.breakpoints.values});return Hn({theme:e},n,r=>{const o={flexDirection:r};return r.indexOf("column")===0&&(o[`& > .${ms.item}`]={maxWidth:"none"}),o})}function Ky({breakpoints:e,values:t}){let n="";Object.keys(t).forEach(o=>{n===""&&t[o]!==0&&(n=o)});const r=Object.keys(e).sort((o,l)=>e[o]-e[l]);return r.slice(0,r.indexOf(n))}function lT({theme:e,ownerState:t}){const{container:n,rowSpacing:r}=t;let o={};if(n&&r!==0){const l=Gu({values:r,breakpoints:e.breakpoints.values});let i;typeof l=="object"&&(i=Ky({breakpoints:e.breakpoints.values,values:l})),o=Hn({theme:e},l,(s,u)=>{var a;const f=e.spacing(s);return f!=="0px"?{marginTop:`-${Tl(f)}`,[`& > .${ms.item}`]:{paddingTop:Tl(f)}}:(a=i)!=null&&a.includes(u)?{}:{marginTop:0,[`& > .${ms.item}`]:{paddingTop:0}}})}return o}function iT({theme:e,ownerState:t}){const{container:n,columnSpacing:r}=t;let o={};if(n&&r!==0){const l=Gu({values:r,breakpoints:e.breakpoints.values});let i;typeof l=="object"&&(i=Ky({breakpoints:e.breakpoints.values,values:l})),o=Hn({theme:e},l,(s,u)=>{var a;const f=e.spacing(s);return f!=="0px"?{width:`calc(100% + ${Tl(f)})`,marginLeft:`-${Tl(f)}`,[`& > .${ms.item}`]:{paddingLeft:Tl(f)}}:(a=i)!=null&&a.includes(u)?{}:{width:"100%",marginLeft:0,[`& > .${ms.item}`]:{paddingLeft:0}}})}return o}function sT(e,t,n={}){if(!e||e<=0)return[];if(typeof e=="string"&&!Number.isNaN(Number(e))||typeof e=="number")return[n[`spacing-xs-${String(e)}`]];const r=[];return t.forEach(o=>{const l=e[o];Number(l)>0&&r.push(n[`spacing-${o}-${String(l)}`])}),r}const aT=Ue("div",{name:"MuiGrid",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e,{container:r,direction:o,item:l,spacing:i,wrap:s,zeroMinWidth:u,breakpoints:a}=n;let f=[];r&&(f=sT(i,a,t));const p=[];return a.forEach(c=>{const h=n[c];h&&p.push(t[`grid-${c}-${String(h)}`])}),[t.root,r&&t.container,l&&t.item,u&&t.zeroMinWidth,...f,o!=="row"&&t[`direction-xs-${String(o)}`],s!=="wrap"&&t[`wrap-xs-${String(s)}`],...p]}})(({ownerState:e})=>A({boxSizing:"border-box"},e.container&&{display:"flex",flexWrap:"wrap",width:"100%"},e.item&&{margin:0},e.zeroMinWidth&&{minWidth:0},e.wrap!=="wrap"&&{flexWrap:e.wrap}),oT,lT,iT,rT);function uT(e,t){if(!e||e<=0)return[];if(typeof e=="string"&&!Number.isNaN(Number(e))||typeof e=="number")return[`spacing-xs-${String(e)}`];const n=[];return t.forEach(r=>{const o=e[r];if(Number(o)>0){const l=`spacing-${r}-${String(o)}`;n.push(l)}}),n}const cT=e=>{const{classes:t,container:n,direction:r,item:o,spacing:l,wrap:i,zeroMinWidth:s,breakpoints:u}=e;let a=[];n&&(a=uT(l,u));const f=[];u.forEach(c=>{const h=e[c];h&&f.push(`grid-${c}-${String(h)}`)});const p={root:["root",n&&"container",o&&"item",s&&"zeroMinWidth",...a,r!=="row"&&`direction-xs-${String(r)}`,i!=="wrap"&&`wrap-xs-${String(i)}`,...f]};return kt(p,ZE,t)},fT=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiGrid"}),{breakpoints:o}=rc(),l=Gp(r),{className:i,columns:s,columnSpacing:u,component:a="div",container:f=!1,direction:p="row",item:c=!1,rowSpacing:h,spacing:g=0,wrap:m="wrap",zeroMinWidth:b=!1}=l,w=ve(l,nT),v=h||g,x=u||g,_=$.useContext(z0),C=f?s||12:_,M={},E=A({},w);o.keys.forEach(P=>{w[P]!=null&&(M[P]=w[P],delete E[P])});const O=A({},l,{columns:C,container:f,direction:p,item:c,rowSpacing:v,columnSpacing:x,wrap:m,zeroMinWidth:b,spacing:g},M,{breakpoints:o.keys}),z=cT(O);return R.jsx(z0.Provider,{value:C,children:R.jsx(aT,A({ownerState:O,className:fe(z.root,i),as:a,ref:n},E))})}),pt=fT;function dT(e){return gt("MuiTab",e)}const pT=vt("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper"]),ho=pT,hT=["className","disabled","disableFocusRipple","fullWidth","icon","iconPosition","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"],mT=e=>{const{classes:t,textColor:n,fullWidth:r,wrapped:o,icon:l,label:i,selected:s,disabled:u}=e,a={root:["root",l&&i&&"labelIcon",`textColor${Be(n)}`,r&&"fullWidth",o&&"wrapped",s&&"selected",u&&"disabled"],iconWrapper:["iconWrapper"]};return kt(a,dT,t)},gT=Ue(eh,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.label&&n.icon&&t.labelIcon,t[`textColor${Be(n.textColor)}`],n.fullWidth&&t.fullWidth,n.wrapped&&t.wrapped]}})(({theme:e,ownerState:t})=>A({},e.typography.button,{maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center"},t.label&&{flexDirection:t.iconPosition==="top"||t.iconPosition==="bottom"?"column":"row"},{lineHeight:1.25},t.icon&&t.label&&{minHeight:72,paddingTop:9,paddingBottom:9,[`& > .${ho.iconWrapper}`]:A({},t.iconPosition==="top"&&{marginBottom:6},t.iconPosition==="bottom"&&{marginTop:6},t.iconPosition==="start"&&{marginRight:e.spacing(1)},t.iconPosition==="end"&&{marginLeft:e.spacing(1)})},t.textColor==="inherit"&&{color:"inherit",opacity:.6,[`&.${ho.selected}`]:{opacity:1},[`&.${ho.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}},t.textColor==="primary"&&{color:(e.vars||e).palette.text.secondary,[`&.${ho.selected}`]:{color:(e.vars||e).palette.primary.main},[`&.${ho.disabled}`]:{color:(e.vars||e).palette.text.disabled}},t.textColor==="secondary"&&{color:(e.vars||e).palette.text.secondary,[`&.${ho.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&.${ho.disabled}`]:{color:(e.vars||e).palette.text.disabled}},t.fullWidth&&{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},t.wrapped&&{fontSize:e.typography.pxToRem(12)})),vT=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTab"}),{className:o,disabled:l=!1,disableFocusRipple:i=!1,fullWidth:s,icon:u,iconPosition:a="top",indicator:f,label:p,onChange:c,onClick:h,onFocus:g,selected:m,selectionFollowsFocus:b,textColor:w="inherit",value:v,wrapped:x=!1}=r,_=ve(r,hT),C=A({},r,{disabled:l,disableFocusRipple:i,selected:m,icon:!!u,iconPosition:a,label:!!p,fullWidth:s,textColor:w,wrapped:x}),M=mT(C),E=u&&p&&$.isValidElement(u)?$.cloneElement(u,{className:fe(M.iconWrapper,u.props.className)}):u,O=P=>{!m&&c&&c(P,v),h&&h(P)},z=P=>{b&&!m&&c&&c(P,v),g&&g(P)};return R.jsxs(gT,A({focusRipple:!i,className:fe(M.root,o),ref:n,role:"tab","aria-selected":m,disabled:l,onClick:O,onFocus:z,ownerState:C,tabIndex:m?0:-1},_,{children:[a==="top"||a==="start"?R.jsxs($.Fragment,{children:[E,p]}):R.jsxs($.Fragment,{children:[p,E]}),f]}))}),pf=vT,yT=$.createContext(),Gy=yT;function wT(e){return gt("MuiTable",e)}vt("MuiTable",["root","stickyHeader"]);const xT=["className","component","padding","size","stickyHeader"],ST=e=>{const{classes:t,stickyHeader:n}=e;return kt({root:["root",n&&"stickyHeader"]},wT,t)},bT=Ue("table",{name:"MuiTable",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.stickyHeader&&t.stickyHeader]}})(({theme:e,ownerState:t})=>A({display:"table",width:"100%",borderCollapse:"collapse",borderSpacing:0,"& caption":A({},e.typography.body2,{padding:e.spacing(2),color:(e.vars||e).palette.text.secondary,textAlign:"left",captionSide:"bottom"})},t.stickyHeader&&{borderCollapse:"separate"})),A0="table",kT=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTable"}),{className:o,component:l=A0,padding:i="normal",size:s="medium",stickyHeader:u=!1}=r,a=ve(r,xT),f=A({},r,{component:l,padding:i,size:s,stickyHeader:u}),p=ST(f),c=$.useMemo(()=>({padding:i,size:s,stickyHeader:u}),[i,s,u]);return R.jsx(Gy.Provider,{value:c,children:R.jsx(bT,A({as:l,role:l===A0?null:"table",ref:n,className:fe(p.root,o),ownerState:f},a))})}),_T=kT,CT=$.createContext(),lc=CT;function ET(e){return gt("MuiTableBody",e)}vt("MuiTableBody",["root"]);const TT=["className","component"],MT=e=>{const{classes:t}=e;return kt({root:["root"]},ET,t)},PT=Ue("tbody",{name:"MuiTableBody",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"table-row-group"}),RT={variant:"body"},L0="tbody",$T=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTableBody"}),{className:o,component:l=L0}=r,i=ve(r,TT),s=A({},r,{component:l}),u=MT(s);return R.jsx(lc.Provider,{value:RT,children:R.jsx(PT,A({className:fe(u.root,o),as:l,ref:n,role:l===L0?null:"rowgroup",ownerState:s},i))})}),OT=$T;function NT(e){return gt("MuiTableCell",e)}const zT=vt("MuiTableCell",["root","head","body","footer","sizeSmall","sizeMedium","paddingCheckbox","paddingNone","alignLeft","alignCenter","alignRight","alignJustify","stickyHeader"]),AT=zT,LT=["align","className","component","padding","scope","size","sortDirection","variant"],DT=e=>{const{classes:t,variant:n,align:r,padding:o,size:l,stickyHeader:i}=e,s={root:["root",n,i&&"stickyHeader",r!=="inherit"&&`align${Be(r)}`,o!=="normal"&&`padding${Be(o)}`,`size${Be(l)}`]};return kt(s,NT,t)},BT=Ue("td",{name:"MuiTableCell",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t[`size${Be(n.size)}`],n.padding!=="normal"&&t[`padding${Be(n.padding)}`],n.align!=="inherit"&&t[`align${Be(n.align)}`],n.stickyHeader&&t.stickyHeader]}})(({theme:e,ownerState:t})=>A({},e.typography.body2,{display:"table-cell",verticalAlign:"inherit",borderBottom:e.vars?`1px solid ${e.vars.palette.TableCell.border}`:`1px solid - ${e.palette.mode==="light"?jy(jl(e.palette.divider,1),.88):By(jl(e.palette.divider,1),.68)}`,textAlign:"left",padding:16},t.variant==="head"&&{color:(e.vars||e).palette.text.primary,lineHeight:e.typography.pxToRem(24),fontWeight:e.typography.fontWeightMedium},t.variant==="body"&&{color:(e.vars||e).palette.text.primary},t.variant==="footer"&&{color:(e.vars||e).palette.text.secondary,lineHeight:e.typography.pxToRem(21),fontSize:e.typography.pxToRem(12)},t.size==="small"&&{padding:"6px 16px",[`&.${AT.paddingCheckbox}`]:{width:24,padding:"0 12px 0 16px","& > *":{padding:0}}},t.padding==="checkbox"&&{width:48,padding:"0 0 0 4px"},t.padding==="none"&&{padding:0},t.align==="left"&&{textAlign:"left"},t.align==="center"&&{textAlign:"center"},t.align==="right"&&{textAlign:"right",flexDirection:"row-reverse"},t.align==="justify"&&{textAlign:"justify"},t.stickyHeader&&{position:"sticky",top:0,zIndex:2,backgroundColor:(e.vars||e).palette.background.default})),jT=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTableCell"}),{align:o="inherit",className:l,component:i,padding:s,scope:u,size:a,sortDirection:f,variant:p}=r,c=ve(r,LT),h=$.useContext(Gy),g=$.useContext(lc),m=g&&g.variant==="head";let b;i?b=i:b=m?"th":"td";let w=u;b==="td"?w=void 0:!w&&m&&(w="col");const v=p||g&&g.variant,x=A({},r,{align:o,component:b,padding:s||(h&&h.padding?h.padding:"normal"),size:a||(h&&h.size?h.size:"medium"),sortDirection:f,stickyHeader:v==="head"&&h&&h.stickyHeader,variant:v}),_=DT(x);let C=null;return f&&(C=f==="asc"?"ascending":"descending"),R.jsx(BT,A({as:b,ref:n,className:fe(_.root,l),"aria-sort":C,scope:w,ownerState:x},c))}),oa=jT;function FT(e){return gt("MuiTableContainer",e)}vt("MuiTableContainer",["root"]);const IT=["className","component"],HT=e=>{const{classes:t}=e;return kt({root:["root"]},FT,t)},WT=Ue("div",{name:"MuiTableContainer",slot:"Root",overridesResolver:(e,t)=>t.root})({width:"100%",overflowX:"auto"}),UT=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTableContainer"}),{className:o,component:l="div"}=r,i=ve(r,IT),s=A({},r,{component:l}),u=HT(s);return R.jsx(WT,A({ref:n,as:l,className:fe(u.root,o),ownerState:s},i))}),VT=UT;function KT(e){return gt("MuiTableHead",e)}vt("MuiTableHead",["root"]);const GT=["className","component"],YT=e=>{const{classes:t}=e;return kt({root:["root"]},KT,t)},QT=Ue("thead",{name:"MuiTableHead",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"table-header-group"}),XT={variant:"head"},D0="thead",ZT=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTableHead"}),{className:o,component:l=D0}=r,i=ve(r,GT),s=A({},r,{component:l}),u=YT(s);return R.jsx(lc.Provider,{value:XT,children:R.jsx(QT,A({as:l,className:fe(u.root,o),ref:n,role:l===D0?null:"rowgroup",ownerState:s},i))})}),qT=ZT;function JT(e){return gt("MuiToolbar",e)}vt("MuiToolbar",["root","gutters","regular","dense"]);const eM=["className","component","disableGutters","variant"],tM=e=>{const{classes:t,disableGutters:n,variant:r}=e;return kt({root:["root",!n&&"gutters",r]},JT,t)},nM=Ue("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(({theme:e,ownerState:t})=>A({position:"relative",display:"flex",alignItems:"center"},!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}},t.variant==="dense"&&{minHeight:48}),({theme:e,ownerState:t})=>t.variant==="regular"&&e.mixins.toolbar),rM=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiToolbar"}),{className:o,component:l="div",disableGutters:i=!1,variant:s="regular"}=r,u=ve(r,eM),a=A({},r,{component:l,disableGutters:i,variant:s}),f=tM(a);return R.jsx(nM,A({as:l,className:fe(f.root,o),ref:n,ownerState:a},u))}),oM=rM,lM=Uy(R.jsx("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),iM=Uy(R.jsx("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");function sM(e){return gt("MuiTableRow",e)}const aM=vt("MuiTableRow",["root","selected","hover","head","footer"]),B0=aM,uM=["className","component","hover","selected"],cM=e=>{const{classes:t,selected:n,hover:r,head:o,footer:l}=e;return kt({root:["root",n&&"selected",r&&"hover",o&&"head",l&&"footer"]},sM,t)},fM=Ue("tr",{name:"MuiTableRow",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.head&&t.head,n.footer&&t.footer]}})(({theme:e})=>({color:"inherit",display:"table-row",verticalAlign:"middle",outline:0,[`&.${B0.hover}:hover`]:{backgroundColor:(e.vars||e).palette.action.hover},[`&.${B0.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:jl(e.palette.primary.main,e.palette.action.selectedOpacity),"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:jl(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity)}}})),j0="tr",dM=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTableRow"}),{className:o,component:l=j0,hover:i=!1,selected:s=!1}=r,u=ve(r,uM),a=$.useContext(lc),f=A({},r,{component:l,hover:i,selected:s,head:a&&a.variant==="head",footer:a&&a.variant==="footer"}),p=cM(f);return R.jsx(fM,A({as:l,ref:n,className:fe(p.root,o),role:l===j0?null:"row",ownerState:f},u))}),F0=dM;function pM(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function hM(e,t,n,r={},o=()=>{}){const{ease:l=pM,duration:i=300}=r;let s=null;const u=t[e];let a=!1;const f=()=>{a=!0},p=c=>{if(a){o(new Error("Animation cancelled"));return}s===null&&(s=c);const h=Math.min(1,(c-s)/i);if(t[e]=l(h)*(n-u)+u,h>=1){requestAnimationFrame(()=>{o(null)});return}requestAnimationFrame(p)};return u===n?(o(new Error("Element already at target position")),f):(requestAnimationFrame(p),f)}const mM=["onChange"],gM={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function vM(e){const{onChange:t}=e,n=ve(e,mM),r=$.useRef(),o=$.useRef(null),l=()=>{r.current=o.current.offsetHeight-o.current.clientHeight};return fy(()=>{const i=ay(()=>{const u=r.current;l(),u!==r.current&&t(r.current)}),s=cy(o.current);return s.addEventListener("resize",i),()=>{i.clear(),s.removeEventListener("resize",i)}},[t]),$.useEffect(()=>{l(),t(r.current)},[t]),R.jsx("div",A({style:gM,ref:o},n))}function yM(e){return gt("MuiTabScrollButton",e)}const wM=vt("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),xM=wM,SM=["className","slots","slotProps","direction","orientation","disabled"],bM=e=>{const{classes:t,orientation:n,disabled:r}=e;return kt({root:["root",n,r&&"disabled"]},yM,t)},kM=Ue(eh,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.orientation&&t[n.orientation]]}})(({ownerState:e})=>A({width:40,flexShrink:0,opacity:.8,[`&.${xM.disabled}`]:{opacity:0}},e.orientation==="vertical"&&{width:"100%",height:40,"& svg":{transform:`rotate(${e.isRtl?-90:90}deg)`}})),_M=$.forwardRef(function(t,n){var r,o;const l=yt({props:t,name:"MuiTabScrollButton"}),{className:i,slots:s={},slotProps:u={},direction:a}=l,f=ve(l,SM),c=rc().direction==="rtl",h=A({isRtl:c},l),g=bM(h),m=(r=s.StartScrollButtonIcon)!=null?r:lM,b=(o=s.EndScrollButtonIcon)!=null?o:iM,w=Ja({elementType:m,externalSlotProps:u.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:h}),v=Ja({elementType:b,externalSlotProps:u.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:h});return R.jsx(kM,A({component:"div",className:fe(g.root,i),ref:n,role:null,ownerState:h,tabIndex:null},f,{children:a==="left"?R.jsx(m,A({},w)):R.jsx(b,A({},v))}))}),CM=_M;function EM(e){return gt("MuiTabs",e)}const TM=vt("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),hf=TM,MM=["aria-label","aria-labelledby","action","centered","children","className","component","allowScrollButtonsMobile","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","slots","slotProps","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar"],I0=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,H0=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,la=(e,t,n)=>{let r=!1,o=n(e,t);for(;o;){if(o===e.firstChild){if(r)return;r=!0}const l=o.disabled||o.getAttribute("aria-disabled")==="true";if(!o.hasAttribute("tabindex")||l)o=n(e,o);else{o.focus();return}}},PM=e=>{const{vertical:t,fixed:n,hideScrollbar:r,scrollableX:o,scrollableY:l,centered:i,scrollButtonsHideMobile:s,classes:u}=e;return kt({root:["root",t&&"vertical"],scroller:["scroller",n&&"fixed",r&&"hideScrollbar",o&&"scrollableX",l&&"scrollableY"],flexContainer:["flexContainer",t&&"flexContainerVertical",i&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",s&&"scrollButtonsHideMobile"],scrollableX:[o&&"scrollableX"],hideScrollbar:[r&&"hideScrollbar"]},EM,u)},RM=Ue("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${hf.scrollButtons}`]:t.scrollButtons},{[`& .${hf.scrollButtons}`]:n.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,n.vertical&&t.vertical]}})(({ownerState:e,theme:t})=>A({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},e.vertical&&{flexDirection:"column"},e.scrollButtonsHideMobile&&{[`& .${hf.scrollButtons}`]:{[t.breakpoints.down("sm")]:{display:"none"}}})),$M=Ue("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.scroller,n.fixed&&t.fixed,n.hideScrollbar&&t.hideScrollbar,n.scrollableX&&t.scrollableX,n.scrollableY&&t.scrollableY]}})(({ownerState:e})=>A({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},e.fixed&&{overflowX:"hidden",width:"100%"},e.hideScrollbar&&{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},e.scrollableX&&{overflowX:"auto",overflowY:"hidden"},e.scrollableY&&{overflowY:"auto",overflowX:"hidden"})),OM=Ue("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.flexContainer,n.vertical&&t.flexContainerVertical,n.centered&&t.centered]}})(({ownerState:e})=>A({display:"flex"},e.vertical&&{flexDirection:"column"},e.centered&&{justifyContent:"center"})),NM=Ue("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(e,t)=>t.indicator})(({ownerState:e,theme:t})=>A({position:"absolute",height:2,bottom:0,width:"100%",transition:t.transitions.create()},e.indicatorColor==="primary"&&{backgroundColor:(t.vars||t).palette.primary.main},e.indicatorColor==="secondary"&&{backgroundColor:(t.vars||t).palette.secondary.main},e.vertical&&{height:"100%",width:2,right:0})),zM=Ue(vM,{name:"MuiTabs",slot:"ScrollbarSize"})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),W0={},AM=$.forwardRef(function(t,n){const r=yt({props:t,name:"MuiTabs"}),o=rc(),l=o.direction==="rtl",{"aria-label":i,"aria-labelledby":s,action:u,centered:a=!1,children:f,className:p,component:c="div",allowScrollButtonsMobile:h=!1,indicatorColor:g="primary",onChange:m,orientation:b="horizontal",ScrollButtonComponent:w=CM,scrollButtons:v="auto",selectionFollowsFocus:x,slots:_={},slotProps:C={},TabIndicatorProps:M={},TabScrollButtonProps:E={},textColor:O="primary",value:z,variant:P="standard",visibleScrollbar:L=!1}=r,U=ve(r,MM),W=P==="scrollable",G=b==="vertical",Y=G?"scrollTop":"scrollLeft",le=G?"top":"left",oe=G?"bottom":"right",j=G?"clientHeight":"clientWidth",X=G?"height":"width",H=A({},r,{component:c,allowScrollButtonsMobile:h,indicatorColor:g,orientation:b,vertical:G,scrollButtons:v,textColor:O,variant:P,visibleScrollbar:L,fixed:!W,hideScrollbar:W&&!L,scrollableX:W&&!G,scrollableY:W&&G,centered:a&&!W,scrollButtonsHideMobile:!h}),J=PM(H),V=Ja({elementType:_.StartScrollButtonIcon,externalSlotProps:C.startScrollButtonIcon,ownerState:H}),ye=Ja({elementType:_.EndScrollButtonIcon,externalSlotProps:C.endScrollButtonIcon,ownerState:H}),[q,ae]=$.useState(!1),[Ne,wt]=$.useState(W0),[qt,st]=$.useState(!1),[un,Jt]=$.useState(!1),[Nn,Nr]=$.useState(!1),[wn,yr]=$.useState({overflow:"hidden",scrollbarWidth:0}),nr=new Map,xt=$.useRef(null),ot=$.useRef(null),rr=()=>{const Q=xt.current;let ie;if(Q){const xe=Q.getBoundingClientRect();ie={clientWidth:Q.clientWidth,scrollLeft:Q.scrollLeft,scrollTop:Q.scrollTop,scrollLeftNormalized:Cb(Q,o.direction),scrollWidth:Q.scrollWidth,top:xe.top,bottom:xe.bottom,left:xe.left,right:xe.right}}let pe;if(Q&&z!==!1){const xe=ot.current.children;if(xe.length>0){const Tt=xe[nr.get(z)];pe=Tt?Tt.getBoundingClientRect():null}}return{tabsMeta:ie,tabMeta:pe}},Ct=ko(()=>{const{tabsMeta:Q,tabMeta:ie}=rr();let pe=0,xe;if(G)xe="top",ie&&Q&&(pe=ie.top-Q.top+Q.scrollTop);else if(xe=l?"right":"left",ie&&Q){const or=l?Q.scrollLeftNormalized+Q.clientWidth-Q.scrollWidth:Q.scrollLeft;pe=(l?-1:1)*(ie[xe]-Q[xe]+or)}const Tt={[xe]:pe,[X]:ie?ie[X]:0};if(isNaN(Ne[xe])||isNaN(Ne[X]))wt(Tt);else{const or=Math.abs(Ne[xe]-Tt[xe]),Io=Math.abs(Ne[X]-Tt[X]);(or>=1||Io>=1)&&wt(Tt)}}),en=(Q,{animation:ie=!0}={})=>{ie?hM(Y,xt.current,Q,{duration:o.transitions.duration.standard}):xt.current[Y]=Q},ce=Q=>{let ie=xt.current[Y];G?ie+=Q:(ie+=Q*(l?-1:1),ie*=l&&dy()==="reverse"?-1:1),en(ie)},ee=()=>{const Q=xt.current[j];let ie=0;const pe=Array.from(ot.current.children);for(let xe=0;xeQ){xe===0&&(ie=Q);break}ie+=Tt[j]}return ie},be=()=>{ce(-1*ee())},Le=()=>{ce(ee())},Je=$.useCallback(Q=>{yr({overflow:null,scrollbarWidth:Q})},[]),at=()=>{const Q={};Q.scrollbarSizeListener=W?R.jsx(zM,{onChange:Je,className:fe(J.scrollableX,J.hideScrollbar)}):null;const pe=W&&(v==="auto"&&(qt||un)||v===!0);return Q.scrollButtonStart=pe?R.jsx(w,A({slots:{StartScrollButtonIcon:_.StartScrollButtonIcon},slotProps:{startScrollButtonIcon:V},orientation:b,direction:l?"right":"left",onClick:be,disabled:!qt},E,{className:fe(J.scrollButtons,E.className)})):null,Q.scrollButtonEnd=pe?R.jsx(w,A({slots:{EndScrollButtonIcon:_.EndScrollButtonIcon},slotProps:{endScrollButtonIcon:ye},orientation:b,direction:l?"left":"right",onClick:Le,disabled:!un},E,{className:fe(J.scrollButtons,E.className)})):null,Q},Ye=ko(Q=>{const{tabsMeta:ie,tabMeta:pe}=rr();if(!(!pe||!ie)){if(pe[le]ie[oe]){const xe=ie[Y]+(pe[oe]-ie[oe]);en(xe,{animation:Q})}}}),te=ko(()=>{W&&v!==!1&&Nr(!Nn)});$.useEffect(()=>{const Q=ay(()=>{xt.current&&Ct()}),ie=cy(xt.current);ie.addEventListener("resize",Q);let pe;return typeof ResizeObserver<"u"&&(pe=new ResizeObserver(Q),Array.from(ot.current.children).forEach(xe=>{pe.observe(xe)})),()=>{Q.clear(),ie.removeEventListener("resize",Q),pe&&pe.disconnect()}},[Ct]),$.useEffect(()=>{const Q=Array.from(ot.current.children),ie=Q.length;if(typeof IntersectionObserver<"u"&&ie>0&&W&&v!==!1){const pe=Q[0],xe=Q[ie-1],Tt={root:xt.current,threshold:.99},or=Un=>{st(!Un[0].isIntersecting)},Io=new IntersectionObserver(or,Tt);Io.observe(pe);const mc=Un=>{Jt(!Un[0].isIntersecting)},se=new IntersectionObserver(mc,Tt);return se.observe(xe),()=>{Io.disconnect(),se.disconnect()}}},[W,v,Nn,f==null?void 0:f.length]),$.useEffect(()=>{ae(!0)},[]),$.useEffect(()=>{Ct()}),$.useEffect(()=>{Ye(W0!==Ne)},[Ye,Ne]),$.useImperativeHandle(u,()=>({updateIndicator:Ct,updateScrollButtons:te}),[Ct,te]);const ut=R.jsx(NM,A({},M,{className:fe(J.indicator,M.className),ownerState:H,style:A({},Ne,M.style)}));let Et=0;const tn=$.Children.map(f,Q=>{if(!$.isValidElement(Q))return null;const ie=Q.props.value===void 0?Et:Q.props.value;nr.set(ie,Et);const pe=ie===z;return Et+=1,$.cloneElement(Q,A({fullWidth:P==="fullWidth",indicator:pe&&!q&&ut,selected:pe,selectionFollowsFocus:x,onChange:m,textColor:O,value:ie},Et===1&&z===!1&&!Q.props.tabIndex?{tabIndex:0}:{}))}),cn=Q=>{const ie=ot.current,pe=uy(ie).activeElement;if(pe.getAttribute("role")!=="tab")return;let Tt=b==="horizontal"?"ArrowLeft":"ArrowUp",or=b==="horizontal"?"ArrowRight":"ArrowDown";switch(b==="horizontal"&&l&&(Tt="ArrowRight",or="ArrowLeft"),Q.key){case Tt:Q.preventDefault(),la(ie,pe,H0);break;case or:Q.preventDefault(),la(ie,pe,I0);break;case"Home":Q.preventDefault(),la(ie,null,I0);break;case"End":Q.preventDefault(),la(ie,null,H0);break}},uo=at();return R.jsxs(RM,A({className:fe(J.root,p),ownerState:H,ref:n,as:c},U,{children:[uo.scrollButtonStart,uo.scrollbarSizeListener,R.jsxs($M,{className:J.scroller,ownerState:H,style:{overflow:wn.overflow,[G?`margin${l?"Left":"Right"}`:"marginBottom"]:L?void 0:-wn.scrollbarWidth},ref:xt,children:[R.jsx(OM,{"aria-label":i,"aria-labelledby":s,"aria-orientation":b==="vertical"?"vertical":null,className:J.flexContainer,ownerState:H,onKeyDown:cn,ref:ot,role:"tablist",children:tn}),q&&ut]}),uo.scrollButtonEnd]}))}),LM=AM;function th(e,t,n){if(typeof t!="number")throw new TypeError("Expected value to be a number");if(n===Number.POSITIVE_INFINITY)return t;if(!Number.isInteger(n))throw new TypeError("Expected precision to be an integer");const r=e==="round"&&t<0;r&&(t=Math.abs(t));const o=10**n;let l=Math[e]((t*o).toPrecision(15))/o;return r&&(l=-l),l}const Yy=th.bind(void 0,"round");th.bind(void 0,"ceil");th.bind(void 0,"floor");const ll="time",U0="type";class Fl{constructor({capacity:t=1e4,values:n={},progress:r=0,lastEventId:o=0}={}){this.capacity=t,this.values=n,this.length=n[ll]?n[ll].length:0,this.progress=r,this.lastEventId=o}_filterDuplicate(t){const n=this.values[ll],r=t[ll];return!r||!Array.isArray(n)||n.length==0?!1:n.slice(-1)==r}pushOne(t,n){this.values.hasOwnProperty(t)?this.values[t].lengtho?r=new Fl:r=new Fl(t),r.push(n.data),r.lastEventId=o,r}}function eu(e){return ny(e,new Fl,{parser:JSON.parse,stateReducer:Fl.reducer})}const Ts=hr.createContext(new Fl);Ts.displayName="Metrics";function DM(e){return R.jsx("div",{className:"Header",children:R.jsx(_E,{position:"sticky",children:R.jsx(oM,{variant:"dense",children:R.jsx(lo,{variant:"h6",component:"div",align:"center",sx:{flexGrow:1},children:e.title})})})})}function BM(e){if(typeof e!="number")throw new TypeError("Expected a number");const t=e>0?Math.floor:Math.ceil;return{days:t(e/864e5),hours:t(e/36e5)%24,minutes:t(e/6e4)%60,seconds:t(e/1e3)%60,milliseconds:t(e)%1e3,microseconds:t(e*1e3)%1e3,nanoseconds:t(e*1e6)%1e3}}const jM=(e,t)=>t===1?e:`${e}s`,FM=1e-7;function Qy(e,t={}){if(!Number.isFinite(e))throw new TypeError("Expected a finite number");t.colonNotation&&(t.compact=!1,t.formatSubMilliseconds=!1,t.separateMilliseconds=!1,t.verbose=!1),t.compact&&(t.secondsDecimalDigits=0,t.millisecondsDecimalDigits=0);const n=[],r=(i,s)=>{const u=Math.floor(i*10**s+FM);return(Math.round(u)/10**s).toFixed(s)},o=(i,s,u,a)=>{if((n.length===0||!t.colonNotation)&&i===0&&!(t.colonNotation&&u==="m"))return;a=(a||i||"0").toString();let f,p;if(t.colonNotation){f=n.length>0?":":"",p="";const c=a.includes(".")?a.split(".")[0].length:a.length,h=n.length>0?2:1;a="0".repeat(Math.max(0,h-c))+a}else f="",p=t.verbose?" "+jM(s,i):u;n.push(f+a+p)},l=BM(e);if(o(Math.trunc(l.days/365),"year","y"),o(l.days%365,"day","d"),o(l.hours,"hour","h"),o(l.minutes,"minute","m"),t.separateMilliseconds||t.formatSubMilliseconds||!t.colonNotation&&e<1e3)if(o(l.seconds,"second","s"),t.formatSubMilliseconds)o(l.milliseconds,"millisecond","ms"),o(l.microseconds,"microsecond","µs"),o(l.nanoseconds,"nanosecond","ns");else{const i=l.milliseconds+l.microseconds/1e3+l.nanoseconds/1e6,s=typeof t.millisecondsDecimalDigits=="number"?t.millisecondsDecimalDigits:0,u=i>=1?Math.round(i):Math.ceil(i),a=s?i.toFixed(s):u;o(Number.parseFloat(a),"millisecond","ms",a)}else{const i=e/1e3%60,s=typeof t.secondsDecimalDigits=="number"?t.secondsDecimalDigits:1,u=r(i,s),a=t.keepDecimalsOnWholeSeconds?u:u.replace(/\.0+$/,"");o(Number.parseFloat(a),"second","s",a)}if(n.length===0)return"0"+(t.verbose?" milliseconds":"ms");if(t.compact)return n[0];if(typeof t.unitCount=="number"){const i=t.colonNotation?"":" ";return n.slice(0,Math.max(t.unitCount,1)).join(i)}return t.colonNotation?n.join(""):n.join(" ")}const IM=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],HM=["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],WM=["b","kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],UM=["b","kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],V0=(e,t,n)=>{let r=e;return typeof t=="string"||Array.isArray(t)?r=e.toLocaleString(t,n):(t===!0||n!==void 0)&&(r=e.toLocaleString(void 0,n)),r};function Xy(e,t){if(!Number.isFinite(e))throw new TypeError(`Expected a finite number, got ${typeof e}: ${e}`);t={bits:!1,binary:!1,space:!0,...t};const n=t.bits?t.binary?UM:WM:t.binary?HM:IM,r=t.space?" ":"";if(t.signed&&e===0)return` 0${r}${n[0]}`;const o=e<0,l=o?"-":t.signed?"+":"";o&&(e=-e);let i;if(t.minimumFractionDigits!==void 0&&(i={minimumFractionDigits:t.minimumFractionDigits}),t.maximumFractionDigits!==void 0&&(i={maximumFractionDigits:t.maximumFractionDigits,...i}),e<1){const f=V0(e,t.locale,i);return l+f+r+n[0]}const s=Math.min(Math.floor(t.binary?Math.log(e)/Math.log(1024):Math.log10(e)/3),n.length-1);e/=(t.binary?1024:1e3)**s,i||(e=e.toPrecision(3));const u=V0(Number(e),t.locale,i),a=n[s];return l+u+r+a}let Zy={};const K0=new WeakMap,G0={metric:[{from:0,to:1e3,unit:"B",long:"bytes"},{from:1e3,to:1e6,unit:"kB",long:"kilobytes"},{from:1e6,to:1e9,unit:"MB",long:"megabytes"},{from:1e9,to:1e12,unit:"GB",long:"gigabytes"},{from:1e12,to:1e15,unit:"TB",long:"terabytes"},{from:1e15,to:1e18,unit:"PB",long:"petabytes"},{from:1e18,to:1e21,unit:"EB",long:"exabytes"},{from:1e21,to:1e24,unit:"ZB",long:"zettabytes"},{from:1e24,to:1e27,unit:"YB",long:"yottabytes"}],metric_octet:[{from:0,to:1e3,unit:"o",long:"octets"},{from:1e3,to:1e6,unit:"ko",long:"kilooctets"},{from:1e6,to:1e9,unit:"Mo",long:"megaoctets"},{from:1e9,to:1e12,unit:"Go",long:"gigaoctets"},{from:1e12,to:1e15,unit:"To",long:"teraoctets"},{from:1e15,to:1e18,unit:"Po",long:"petaoctets"},{from:1e18,to:1e21,unit:"Eo",long:"exaoctets"},{from:1e21,to:1e24,unit:"Zo",long:"zettaoctets"},{from:1e24,to:1e27,unit:"Yo",long:"yottaoctets"}],iec:[{from:0,to:Math.pow(1024,1),unit:"B",long:"bytes"},{from:Math.pow(1024,1),to:Math.pow(1024,2),unit:"KiB",long:"kibibytes"},{from:Math.pow(1024,2),to:Math.pow(1024,3),unit:"MiB",long:"mebibytes"},{from:Math.pow(1024,3),to:Math.pow(1024,4),unit:"GiB",long:"gibibytes"},{from:Math.pow(1024,4),to:Math.pow(1024,5),unit:"TiB",long:"tebibytes"},{from:Math.pow(1024,5),to:Math.pow(1024,6),unit:"PiB",long:"pebibytes"},{from:Math.pow(1024,6),to:Math.pow(1024,7),unit:"EiB",long:"exbibytes"},{from:Math.pow(1024,7),to:Math.pow(1024,8),unit:"ZiB",long:"zebibytes"},{from:Math.pow(1024,8),to:Math.pow(1024,9),unit:"YiB",long:"yobibytes"}],iec_octet:[{from:0,to:Math.pow(1024,1),unit:"o",long:"octets"},{from:Math.pow(1024,1),to:Math.pow(1024,2),unit:"Kio",long:"kibioctets"},{from:Math.pow(1024,2),to:Math.pow(1024,3),unit:"Mio",long:"mebioctets"},{from:Math.pow(1024,3),to:Math.pow(1024,4),unit:"Gio",long:"gibioctets"},{from:Math.pow(1024,4),to:Math.pow(1024,5),unit:"Tio",long:"tebioctets"},{from:Math.pow(1024,5),to:Math.pow(1024,6),unit:"Pio",long:"pebioctets"},{from:Math.pow(1024,6),to:Math.pow(1024,7),unit:"Eio",long:"exbioctets"},{from:Math.pow(1024,7),to:Math.pow(1024,8),unit:"Zio",long:"zebioctets"},{from:Math.pow(1024,8),to:Math.pow(1024,9),unit:"Yio",long:"yobioctets"}]};class VM{constructor(t,n){n=Object.assign({units:"metric",precision:1,locale:void 0},Zy,n),K0.set(this,n),Object.assign(G0,n.customUnits);const r=t<0?"-":"";t=Math.abs(t);const o=G0[n.units];if(o){const l=o.find(i=>t>=i.from&&t$.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",height:24,viewBox:"0 0 24 24",width:24,fill:"white",...e},$.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),$.createElement("path",{d:"M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"})),XM=e=>$.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"white",...e},$.createElement("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"}),$.createElement("path",{d:"M0 0h24v24H0z",fill:"none"})),ZM=e=>$.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"white",...e},$.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),$.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}));function jo(e){return e==null?!1:typeof e[Symbol.iterator]=="function"}const Y0={trend:["avg","min","med","max","p(90)","p(95)","p(99)"],counter:["rate","count"],rate:["rate"],gauge:["value"]};function Yr(e){const{type:t,series:n}=e,r=$.useContext(ic),o=i=>(!jo(n)||n.includes(i))&&r.values[i].type==t,l=e.plain?"div":Jp;return R.jsx(VT,{component:l,children:R.jsxs(_T,{children:[R.jsx("caption",{children:e.caption}),R.jsx(qT,{children:R.jsxs(F0,{children:[R.jsx(oa,{children:"metric"}),Y0[t].map(i=>R.jsx(oa,{align:"right",children:i},"digest_"+t+"_"+i))]})}),R.jsx(OT,{children:Object.keys(r.values).filter(o).map(i=>R.jsxs(F0,{hover:!0,sx:{"&:last-child td, &:last-child th":{border:0}},children:[R.jsx(oa,{component:"th",scope:"row",children:i}),Y0[t].map(s=>R.jsx(oa,{align:"right",children:r.values[i].format(s)},"digest_"+t+"_value_"+s))]},i))})]})},"digest_"+t)}var tw={exports:{}};/*! @preserve - * numeral.js - * version : 2.0.6 - * author : Adam Draper - * license : MIT - * http://adamwdraper.github.com/Numeral-js/ - */(function(e){(function(t,n){e.exports?e.exports=n():t.numeral=n()})(Vr,function(){var t,n,r="2.0.6",o={},l={},i={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},s={currentLocale:i.currentLocale,zeroFormat:i.zeroFormat,nullFormat:i.nullFormat,defaultFormat:i.defaultFormat,scalePercentBy100:i.scalePercentBy100};function u(a,f){this._input=a,this._value=f}return t=function(a){var f,p,c,h;if(t.isNumeral(a))f=a.value();else if(a===0||typeof a>"u")f=0;else if(a===null||n.isNaN(a))f=null;else if(typeof a=="string")if(s.zeroFormat&&a===s.zeroFormat)f=0;else if(s.nullFormat&&a===s.nullFormat||!a.replace(/[^0-9]+/g,"").length)f=null;else{for(p in o)if(h=typeof o[p].regexps.unformat=="function"?o[p].regexps.unformat():o[p].regexps.unformat,h&&a.match(h)){c=o[p].unformat;break}c=c||t._.stringToNumber,f=c(a)}else f=Number(a)||null;return new u(a,f)},t.version=r,t.isNumeral=function(a){return a instanceof u},t._=n={numberToFormat:function(a,f,p){var c=l[t.options.currentLocale],h=!1,g=!1,m=0,b="",w=1e12,v=1e9,x=1e6,_=1e3,C="",M=!1,E,O,z,P,L,U,W;if(a=a||0,O=Math.abs(a),t._.includes(f,"(")?(h=!0,f=f.replace(/[\(|\)]/g,"")):(t._.includes(f,"+")||t._.includes(f,"-"))&&(L=t._.includes(f,"+")?f.indexOf("+"):a<0?f.indexOf("-"):-1,f=f.replace(/[\+|\-]/g,"")),t._.includes(f,"a")&&(E=f.match(/a(k|m|b|t)?/),E=E?E[1]:!1,t._.includes(f," a")&&(b=" "),f=f.replace(new RegExp(b+"a[kmbt]?"),""),O>=w&&!E||E==="t"?(b+=c.abbreviations.trillion,a=a/w):O=v&&!E||E==="b"?(b+=c.abbreviations.billion,a=a/v):O=x&&!E||E==="m"?(b+=c.abbreviations.million,a=a/x):(O=_&&!E||E==="k")&&(b+=c.abbreviations.thousand,a=a/_)),t._.includes(f,"[.]")&&(g=!0,f=f.replace("[.]",".")),z=a.toString().split(".")[0],P=f.split(".")[1],U=f.indexOf(","),m=(f.split(".")[0].split(",")[0].match(/0/g)||[]).length,P?(t._.includes(P,"[")?(P=P.replace("]",""),P=P.split("["),C=t._.toFixed(a,P[0].length+P[1].length,p,P[1].length)):C=t._.toFixed(a,P.length,p),z=C.split(".")[0],t._.includes(C,".")?C=c.delimiters.decimal+C.split(".")[1]:C="",g&&Number(C.slice(1))===0&&(C="")):z=t._.toFixed(a,0,p),b&&!E&&Number(z)>=1e3&&b!==c.abbreviations.trillion)switch(z=String(Number(z)/1e3),b){case c.abbreviations.thousand:b=c.abbreviations.million;break;case c.abbreviations.million:b=c.abbreviations.billion;break;case c.abbreviations.billion:b=c.abbreviations.trillion;break}if(t._.includes(z,"-")&&(z=z.slice(1),M=!0),z.length0;G--)z="0"+z;return U>-1&&(z=z.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+c.delimiters.thousands)),f.indexOf(".")===0&&(z=""),W=z+C+(b||""),h?W=(h&&M?"(":"")+W+(h&&M?")":""):L>=0?W=L===0?(M?"-":"+")+W:W+(M?"-":"+"):M&&(W="-"+W),W},stringToNumber:function(a){var f=l[s.currentLocale],p=a,c={thousand:3,million:6,billion:9,trillion:12},h,g,m;if(s.zeroFormat&&a===s.zeroFormat)g=0;else if(s.nullFormat&&a===s.nullFormat||!a.replace(/[^0-9]+/g,"").length)g=null;else{g=1,f.delimiters.decimal!=="."&&(a=a.replace(/\./g,"").replace(f.delimiters.decimal,"."));for(h in c)if(m=new RegExp("[^a-zA-Z]"+f.abbreviations[h]+"(?:\\)|(\\"+f.currency.symbol+")?(?:\\))?)?$"),p.match(m)){g*=Math.pow(10,c[h]);break}g*=(a.split("-").length+Math.min(a.split("(").length-1,a.split(")").length-1))%2?1:-1,a=a.replace(/[^0-9\.]+/g,""),g*=Number(a)}return g},isNaN:function(a){return typeof a=="number"&&isNaN(a)},includes:function(a,f){return a.indexOf(f)!==-1},insert:function(a,f,p){return a.slice(0,p)+f+a.slice(p)},reduce:function(a,f){if(this===null)throw new TypeError("Array.prototype.reduce called on null or undefined");if(typeof f!="function")throw new TypeError(f+" is not a function");var p=Object(a),c=p.length>>>0,h=0,g;if(arguments.length===3)g=arguments[2];else{for(;h=c)throw new TypeError("Reduce of empty array with no initial value");g=p[h++]}for(;hc?f:c},1)},toFixed:function(a,f,p,c){var h=a.toString().split("."),g=f-(c||0),m,b,w,v;return h.length===2?m=Math.min(Math.max(h[1].length,g),f):m=g,w=Math.pow(10,m),v=(p(a+"e+"+m)/w).toFixed(m),c>f-m&&(b=new RegExp("\\.?0{1,"+(c-(f-m))+"}$"),v=v.replace(b,"")),v}},t.options=s,t.formats=o,t.locales=l,t.locale=function(a){return a&&(s.currentLocale=a.toLowerCase()),s.currentLocale},t.localeData=function(a){if(!a)return l[s.currentLocale];if(a=a.toLowerCase(),!l[a])throw new Error("Unknown locale : "+a);return l[a]},t.reset=function(){for(var a in i)s[a]=i[a]},t.zeroFormat=function(a){s.zeroFormat=typeof a=="string"?a:null},t.nullFormat=function(a){s.nullFormat=typeof a=="string"?a:null},t.defaultFormat=function(a){s.defaultFormat=typeof a=="string"?a:"0.0"},t.register=function(a,f,p){if(f=f.toLowerCase(),this[a+"s"][f])throw new TypeError(f+" "+a+" already registered.");return this[a+"s"][f]=p,p},t.validate=function(a,f){var p,c,h,g,m,b,w,v;if(typeof a!="string"&&(a+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",a)),a=a.trim(),a.match(/^\d+$/))return!0;if(a==="")return!1;try{w=t.localeData(f)}catch{w=t.localeData(t.locale())}return h=w.currency.symbol,m=w.abbreviations,p=w.delimiters.decimal,w.delimiters.thousands==="."?c="\\.":c=w.delimiters.thousands,v=a.match(/^[^\d]+/),v!==null&&(a=a.substr(1),v[0]!==h)||(v=a.match(/[^\d]+$/),v!==null&&(a=a.slice(0,-1),v[0]!==m.thousand&&v[0]!==m.million&&v[0]!==m.billion&&v[0]!==m.trillion))?!1:(b=new RegExp(c+"{2}"),a.match(/[^\d.,]/g)?!1:(g=a.split(p),g.length>2?!1:g.length<2?!!g[0].match(/^\d+.*\d$/)&&!g[0].match(b):g[0].length===1?!!g[0].match(/^\d+$/)&&!g[0].match(b)&&!!g[1].match(/^\d+$/):!!g[0].match(/^\d+.*\d$/)&&!g[0].match(b)&&!!g[1].match(/^\d+$/)))},t.fn=u.prototype={clone:function(){return t(this)},format:function(a,f){var p=this._value,c=a||s.defaultFormat,h,g,m;if(f=f||Math.round,p===0&&s.zeroFormat!==null)g=s.zeroFormat;else if(p===null&&s.nullFormat!==null)g=s.nullFormat;else{for(h in o)if(c.match(o[h].regexps.format)){m=o[h].format;break}m=m||t._.numberToFormat,g=m(p,c,f)}return g},value:function(){return this._value},input:function(){return this._input},set:function(a){return this._value=Number(a),this},add:function(a){var f=n.correctionFactor.call(null,this._value,a);function p(c,h,g,m){return c+Math.round(f*h)}return this._value=n.reduce([this._value,a],p,0)/f,this},subtract:function(a){var f=n.correctionFactor.call(null,this._value,a);function p(c,h,g,m){return c-Math.round(f*h)}return this._value=n.reduce([a],p,Math.round(this._value*f))/f,this},multiply:function(a){function f(p,c,h,g){var m=n.correctionFactor(p,c);return Math.round(p*m)*Math.round(c*m)/Math.round(m*m)}return this._value=n.reduce([this._value,a],f,1),this},divide:function(a){function f(p,c,h,g){var m=n.correctionFactor(p,c);return Math.round(p*m)/Math.round(c*m)}return this._value=n.reduce([this._value,a],f),this},difference:function(a){return Math.abs(t(this._value).subtract(a).value())}},t.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(a){var f=a%10;return~~(a%100/10)===1?"th":f===1?"st":f===2?"nd":f===3?"rd":"th"},currency:{symbol:"$"}}),function(){t.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(a,f,p){var c=t._.includes(f," BPS")?" ":"",h;return a=a*1e4,f=f.replace(/\s?BPS/,""),h=t._.numberToFormat(a,f,p),t._.includes(h,")")?(h=h.split(""),h.splice(-1,0,c+"BPS"),h=h.join("")):h=h+c+"BPS",h},unformat:function(a){return+(t._.stringToNumber(a)*1e-4).toFixed(15)}})}(),function(){var a={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},f={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},p=a.suffixes.concat(f.suffixes.filter(function(h){return a.suffixes.indexOf(h)<0})),c=p.join("|");c="("+c.replace("B","B(?!PS)")+")",t.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(c)},format:function(h,g,m){var b,w=t._.includes(g,"ib")?f:a,v=t._.includes(g," b")||t._.includes(g," ib")?" ":"",x,_,C;for(g=g.replace(/\s?i?b/,""),x=0;x<=w.suffixes.length;x++)if(_=Math.pow(w.base,x),C=Math.pow(w.base,x+1),h===null||h===0||h>=_&&h0&&(h=h/_);break}return b=t._.numberToFormat(h,g,m),b+v},unformat:function(h){var g=t._.stringToNumber(h),m,b;if(g){for(m=a.suffixes.length-1;m>=0;m--){if(t._.includes(h,a.suffixes[m])){b=Math.pow(a.base,m);break}if(t._.includes(h,f.suffixes[m])){b=Math.pow(f.base,m);break}}g*=b||1}return g}})}(),function(){t.register("format","currency",{regexps:{format:/(\$)/},format:function(a,f,p){var c=t.locales[t.options.currentLocale],h={before:f.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:f.match(/([\+|\-|\)|\s|\$]*)$/)[0]},g,m,b;for(f=f.replace(/\s?\$\s?/,""),g=t._.numberToFormat(a,f,p),a>=0?(h.before=h.before.replace(/[\-\(]/,""),h.after=h.after.replace(/[\-\)]/,"")):a<0&&!t._.includes(h.before,"-")&&!t._.includes(h.before,"(")&&(h.before="-"+h.before),b=0;b=0;b--)switch(m=h.after[b],m){case"$":g=b===h.after.length-1?g+c.currency.symbol:t._.insert(g,c.currency.symbol,-(h.after.length-(1+b)));break;case" ":g=b===h.after.length-1?g+" ":t._.insert(g," ",-(h.after.length-(1+b)+c.currency.symbol.length-1));break}return g}})}(),function(){t.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(a,f,p){var c,h=typeof a=="number"&&!t._.isNaN(a)?a.toExponential():"0e+0",g=h.split("e");return f=f.replace(/e[\+|\-]{1}0/,""),c=t._.numberToFormat(Number(g[0]),f,p),c+"e"+g[1]},unformat:function(a){var f=t._.includes(a,"e+")?a.split("e+"):a.split("e-"),p=Number(f[0]),c=Number(f[1]);c=t._.includes(a,"e-")?c*=-1:c;function h(g,m,b,w){var v=t._.correctionFactor(g,m),x=g*v*(m*v)/(v*v);return x}return t._.reduce([p,Math.pow(10,c)],h,1)}})}(),function(){t.register("format","ordinal",{regexps:{format:/(o)/},format:function(a,f,p){var c=t.locales[t.options.currentLocale],h,g=t._.includes(f," o")?" ":"";return f=f.replace(/\s?o/,""),g+=c.ordinal(a),h=t._.numberToFormat(a,f,p),h+g}})}(),function(){t.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(a,f,p){var c=t._.includes(f," %")?" ":"",h;return t.options.scalePercentBy100&&(a=a*100),f=f.replace(/\s?\%/,""),h=t._.numberToFormat(a,f,p),t._.includes(h,")")?(h=h.split(""),h.splice(-1,0,c+"%"),h=h.join("")):h=h+c+"%",h},unformat:function(a){var f=t._.stringToNumber(a);return t.options.scalePercentBy100?f*.01:f}})}(),function(){t.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(a,f,p){var c=Math.floor(a/60/60),h=Math.floor((a-c*60*60)/60),g=Math.round(a-c*60*60-h*60);return c+":"+(h<10?"0"+h:h)+":"+(g<10?"0"+g:g)},unformat:function(a){var f=a.split(":"),p=0;return f.length===3?(p=p+Number(f[0])*60*60,p=p+Number(f[1])*60,p=p+Number(f[2])):f.length===2&&(p=p+Number(f[0])*60,p=p+Number(f[1])),Number(p)}})}(),t})})(tw);var qM=tw.exports;const Q0=Ad(qM),JM=!0,_t="u-",eP="uplot",tP=_t+"hz",nP=_t+"vt",rP=_t+"title",oP=_t+"wrap",lP=_t+"under",iP=_t+"over",sP=_t+"axis",wo=_t+"off",aP=_t+"select",uP=_t+"cursor-x",cP=_t+"cursor-y",fP=_t+"cursor-pt",dP=_t+"legend",pP=_t+"live",hP=_t+"inline",mP=_t+"series",gP=_t+"marker",X0=_t+"label",vP=_t+"value",Ni="width",zi="height",Ti="top",Z0="bottom",rl="left",mf="right",nh="#000",q0=nh+"0",J0="mousemove",eg="mousedown",gf="mouseup",tg="mouseenter",ng="mouseleave",rg="dblclick",yP="resize",wP="scroll",og="change",tu="dppxchange",rh="--",Jl=typeof window<"u",_d=Jl?document:null,Ml=Jl?window:null,xP=Jl?navigator:null;let Ee,ia;function Cd(){let e=devicePixelRatio;Ee!=e&&(Ee=e,ia&&Td(og,ia,Cd),ia=matchMedia(`(min-resolution: ${Ee-.001}dppx) and (max-resolution: ${Ee+.001}dppx)`),To(og,ia,Cd),Ml.dispatchEvent(new CustomEvent(tu)))}function xn(e,t){if(t!=null){let n=e.classList;!n.contains(t)&&n.add(t)}}function Ed(e,t){let n=e.classList;n.contains(t)&&n.remove(t)}function Ke(e,t,n){e.style[t]=n+"px"}function Qn(e,t,n,r){let o=_d.createElement(e);return t!=null&&xn(o,t),n!=null&&n.insertBefore(o,r),o}function zn(e,t){return Qn("div",e,t)}const lg=new WeakMap;function ol(e,t,n,r,o){let l="translate("+t+"px,"+n+"px)",i=lg.get(e);l!=i&&(e.style.transform=l,lg.set(e,l),t<0||n<0||t>r||n>o?xn(e,wo):Ed(e,wo))}const ig=new WeakMap;function SP(e,t,n){let r=t+n,o=ig.get(e);r!=o&&(ig.set(e,r),e.style.background=t,e.style.borderColor=n)}const sg=new WeakMap;function bP(e,t,n,r){let o=t+""+n,l=sg.get(e);o!=l&&(sg.set(e,o),e.style.height=n+"px",e.style.width=t+"px",e.style.marginLeft=r?-t/2+"px":0,e.style.marginTop=r?-n/2+"px":0)}const oh={passive:!0},nw={...oh,capture:!0};function To(e,t,n,r){t.addEventListener(e,n,r?nw:oh)}function Td(e,t,n,r){t.removeEventListener(e,n,r?nw:oh)}Jl&&Cd();function jr(e,t,n,r){let o;n=n||0,r=r||t.length-1;let l=r<=2147483647;for(;r-n>1;)o=l?n+r>>1:Tn((n+r)/2),t[o]=t&&o<=n;o+=r)if(e[o]!=null)return o;return-1}function kP(e,t,n,r){let o=ge,l=-ge;if(r==1)o=e[t],l=e[n];else if(r==-1)o=e[n],l=e[t];else for(let i=t;i<=n;i++){let s=e[i];s!=null&&(sl&&(l=s))}return[o,l]}function _P(e,t,n){let r=ge,o=-ge;for(let l=t;l<=n;l++){let i=e[l];i!=null&&i>0&&(io&&(o=i))}return[r==ge?1:r,o==-ge?10:o]}function sc(e,t,n,r){let o=cg(e),l=cg(t),i=n==10?Er:rw;e==t&&(o==-1?(e*=n,t/=n):(e/=n,t*=n));let s=o==1?Tn:Hl,u=l==1?Hl:Tn,a=s(i(Nt(e))),f=u(i(Nt(t))),p=Wl(n,a),c=Wl(n,f);return n==10&&(a<0&&(p=ze(p,-a)),f<0&&(c=ze(c,-f))),r||n==2?(e=p*o,t=c*l):(e=lw(e,p),t=Vl(t,c)),[e,t]}function lh(e,t,n,r){let o=sc(e,t,n,r);return e==0&&(o[0]=0),t==0&&(o[1]=0),o}const ih=.1,ag={mode:3,pad:ih},Ki={pad:0,soft:null,mode:0},CP={min:Ki,max:Ki};function nu(e,t,n,r){return ac(n)?ug(e,t,n):(Ki.pad=n,Ki.soft=r?0:null,Ki.mode=r?3:0,ug(e,t,CP))}function Te(e,t){return e??t}function EP(e,t,n){for(t=Te(t,0),n=Te(n,e.length-1);t<=n;){if(e[t]!=null)return!0;t++}return!1}function ug(e,t,n){let r=n.min,o=n.max,l=Te(r.pad,0),i=Te(o.pad,0),s=Te(r.hard,-ge),u=Te(o.hard,ge),a=Te(r.soft,ge),f=Te(o.soft,-ge),p=Te(r.mode,0),c=Te(o.mode,0),h=t-e,g=Er(h),m=zt(Nt(e),Nt(t)),b=Er(m),w=Nt(b-g);(h<1e-9||w>10)&&(h=0,(e==0||t==0)&&(h=1e-9,p==2&&a!=ge&&(l=0),c==2&&f!=-ge&&(i=0)));let v=h||m||1e3,x=Er(v),_=Wl(10,Tn(x)),C=v*(h==0?e==0?.1:1:l),M=ze(lw(e-C,_/10),9),E=e>=a&&(p==1||p==3&&M<=a||p==2&&M>=a)?a:ge,O=zt(s,M=E?E:kn(E,M)),z=v*(h==0?t==0?.1:1:i),P=ze(Vl(t+z,_/10),9),L=t<=f&&(c==1||c==3&&P>=f||c==2&&P<=f)?f:-ge,U=kn(u,P>L&&t<=L?L:zt(L,P));return O==U&&O==0&&(U=100),[O,U]}const TP=new Intl.NumberFormat(Jl?xP.language:"en-US"),sh=e=>TP.format(e),On=Math,Ca=On.PI,Nt=On.abs,Tn=On.floor,It=On.round,Hl=On.ceil,kn=On.min,zt=On.max,Wl=On.pow,cg=On.sign,Er=On.log10,rw=On.log2,MP=(e,t=1)=>On.sinh(e)*t,vf=(e,t=1)=>On.asinh(e/t),ge=1/0;function fg(e){return(Er((e^e>>31)-(e>>31))|0)+1}function dg(e,t,n){return kn(zt(e,t),n)}function me(e){return typeof e=="function"?e:()=>e}const PP=()=>{},RP=e=>e,ow=(e,t)=>t,$P=e=>null,pg=e=>!0,hg=(e,t)=>e==t,Ul=e=>ze(e,14);function vo(e,t){return Ul(ze(Ul(e/t))*t)}function Vl(e,t){return Ul(Hl(Ul(e/t))*t)}function lw(e,t){return Ul(Tn(Ul(e/t))*t)}function ze(e,t=0){if(OP(e))return e;let n=10**t,r=e*n*(1+Number.EPSILON);return It(r)/n}const Kl=new Map;function iw(e){return((""+e).split(".")[1]||"").length}function gs(e,t,n,r){let o=[],l=r.map(iw);for(let i=t;i=0&&i>=0?0:s)+(i>=l[a]?0:l[a]),c=ze(f,p);o.push(c),Kl.set(c,p)}}return o}const Gi={},sw=[],Gl=[null,null],Hr=Array.isArray,OP=Number.isInteger,NP=e=>e===void 0;function mg(e){return typeof e=="string"}function ac(e){let t=!1;if(e!=null){let n=e.constructor;t=n==null||n==Object}return t}function gg(e){return e!=null&&typeof e=="object"}const zP=Object.getPrototypeOf(Uint8Array);function Mo(e,t=ac){let n;if(Hr(e)){let r=e.find(o=>o!=null);if(Hr(r)||t(r)){n=Array(e.length);for(let o=0;ol){for(o=i-1;o>=0&&e[o]==null;)e[o--]=null;for(o=i+1;oi-s)],o=r[0].length,l=new Map;for(let i=0;i"u"?e=>Promise.resolve().then(e):queueMicrotask;function IP(e){let t=e[0],n=t.length,r=Array(n);for(let l=0;lt[l]-t[i]);let o=[];for(let l=0;l=r&&e[o]==null;)o--;if(o<=r)return!0;const l=zt(1,Tn((o-r+1)/t));for(let i=e[r],s=r+l;s<=o;s+=l){const u=e[s];if(u!=null){if(u<=i)return!1;i=u}}return!0}const aw=["January","February","March","April","May","June","July","August","September","October","November","December"],uw=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function cw(e){return e.slice(0,3)}const UP=uw.map(cw),VP=aw.map(cw),KP={MMMM:aw,MMM:VP,WWWW:uw,WWW:UP};function Mi(e){return(e<10?"0":"")+e}function GP(e){return(e<10?"00":e<100?"0":"")+e}const YP={YYYY:e=>e.getFullYear(),YY:e=>(e.getFullYear()+"").slice(2),MMMM:(e,t)=>t.MMMM[e.getMonth()],MMM:(e,t)=>t.MMM[e.getMonth()],MM:e=>Mi(e.getMonth()+1),M:e=>e.getMonth()+1,DD:e=>Mi(e.getDate()),D:e=>e.getDate(),WWWW:(e,t)=>t.WWWW[e.getDay()],WWW:(e,t)=>t.WWW[e.getDay()],HH:e=>Mi(e.getHours()),H:e=>e.getHours(),h:e=>{let t=e.getHours();return t==0?12:t>12?t-12:t},AA:e=>e.getHours()>=12?"PM":"AM",aa:e=>e.getHours()>=12?"pm":"am",a:e=>e.getHours()>=12?"p":"a",mm:e=>Mi(e.getMinutes()),m:e=>e.getMinutes(),ss:e=>Mi(e.getSeconds()),s:e=>e.getSeconds(),fff:e=>GP(e.getMilliseconds())};function ah(e,t){t=t||KP;let n=[],r=/\{([a-z]+)\}|[^{]+/gi,o;for(;o=r.exec(e);)n.push(o[0][0]=="{"?YP[o[1]]:o[0]);return l=>{let i="";for(let s=0;se%1==0,ru=[1,2,2.5,5],ZP=gs(10,-16,0,ru),dw=gs(10,0,16,ru),qP=dw.filter(fw),JP=ZP.concat(dw),uh=` -`,pw="{YYYY}",vg=uh+pw,hw="{M}/{D}",Ai=uh+hw,sa=Ai+"/{YY}",mw="{aa}",e3="{h}:{mm}",il=e3+mw,yg=uh+il,wg=":{ss}",Me=null;function gw(e){let t=e*1e3,n=t*60,r=n*60,o=r*24,l=o*30,i=o*365,u=(e==1?gs(10,0,3,ru).filter(fw):gs(10,-3,0,ru)).concat([t,t*5,t*10,t*15,t*30,n,n*5,n*10,n*15,n*30,r,r*2,r*3,r*4,r*6,r*8,r*12,o,o*2,o*3,o*4,o*5,o*6,o*7,o*8,o*9,o*10,o*15,l,l*2,l*3,l*4,l*6,i,i*2,i*5,i*10,i*25,i*50,i*100]);const a=[[i,pw,Me,Me,Me,Me,Me,Me,1],[o*28,"{MMM}",vg,Me,Me,Me,Me,Me,1],[o,hw,vg,Me,Me,Me,Me,Me,1],[r,"{h}"+mw,sa,Me,Ai,Me,Me,Me,1],[n,il,sa,Me,Ai,Me,Me,Me,1],[t,wg,sa+" "+il,Me,Ai+" "+il,Me,yg,Me,1],[e,wg+".{fff}",sa+" "+il,Me,Ai+" "+il,Me,yg,Me,1]];function f(p){return(c,h,g,m,b,w)=>{let v=[],x=b>=i,_=b>=l&&b=o?o:b,P=Tn(g)-Tn(M),L=O+P+Vl(M-O,z);v.push(L);let U=p(L),W=U.getHours()+U.getMinutes()/n+U.getSeconds()/r,G=b/r,Y=c.axes[h]._space,le=w/Y;for(;L=ze(L+b,e==1?0:3),!(L>m);)if(G>1){let oe=Tn(ze(W+G,6))%24,H=p(L).getHours()-oe;H>1&&(H=-1),L-=H*r,W=(W+G)%24;let J=v[v.length-1];ze((L-J)/b,3)*le>=.7&&v.push(L)}else v.push(L)}return v}}return[u,a,f]}const[t3,n3,r3]=gw(1),[o3,l3,i3]=gw(.001);gs(2,-53,53,[1]);function xg(e,t){return e.map(n=>n.map((r,o)=>o==0||o==8||r==null?r:t(o==1||n[8]==0?r:n[1]+r)))}function Sg(e,t){return(n,r,o,l,i)=>{let s=t.find(g=>i>=g[0])||t[t.length-1],u,a,f,p,c,h;return r.map(g=>{let m=e(g),b=m.getFullYear(),w=m.getMonth(),v=m.getDate(),x=m.getHours(),_=m.getMinutes(),C=m.getSeconds(),M=b!=u&&s[2]||w!=a&&s[3]||v!=f&&s[4]||x!=p&&s[5]||_!=c&&s[6]||C!=h&&s[7]||s[1];return u=b,a=w,f=v,p=x,c=_,h=C,M(m)})}}function s3(e,t){let n=ah(t);return(r,o,l,i,s)=>o.map(u=>n(e(u)))}function yf(e,t,n){return new Date(e,t,n)}function bg(e,t){return t(e)}const a3="{YYYY}-{MM}-{DD} {h}:{mm}{aa}";function kg(e,t){return(n,r,o,l)=>l==null?rh:t(e(r))}function u3(e,t){let n=e.series[t];return n.width?n.stroke(e,t):n.points.width?n.points.stroke(e,t):null}function c3(e,t){return e.series[t].fill(e,t)}const f3={show:!0,live:!0,isolate:!1,mount:PP,markers:{show:!0,width:2,stroke:u3,fill:c3,dash:"solid"},idx:null,idxs:null,values:[]};function d3(e,t){let n=e.cursor.points,r=zn(),o=n.size(e,t);Ke(r,Ni,o),Ke(r,zi,o);let l=o/-2;Ke(r,"marginLeft",l),Ke(r,"marginTop",l);let i=n.width(e,t,o);return i&&Ke(r,"borderWidth",i),r}function p3(e,t){let n=e.series[t].points;return n._fill||n._stroke}function h3(e,t){let n=e.series[t].points;return n._stroke||n._fill}function m3(e,t){return e.series[t].points.size}function g3(e,t,n){return n}const wf=[0,0];function v3(e,t,n){return wf[0]=t,wf[1]=n,wf}function aa(e,t,n,r=!0){return o=>{o.button==0&&(!r||o.target==t)&&n(o)}}function xf(e,t,n,r=!0){return o=>{(!r||o.target==t)&&n(o)}}const y3={show:!0,x:!0,y:!0,lock:!1,move:v3,points:{show:d3,size:m3,width:0,stroke:h3,fill:p3},bind:{mousedown:aa,mouseup:aa,click:aa,dblclick:aa,mousemove:xf,mouseleave:xf,mouseenter:xf},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,click:(e,t)=>{t.stopPropagation(),t.stopImmediatePropagation()},_x:!1,_y:!1},focus:{prox:-1,bias:0},left:-10,top:-10,idx:null,dataIdx:g3,idxs:null,event:null},vw={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},ch=dt({},vw,{filter:ow}),yw=dt({},ch,{size:10}),ww=dt({},vw,{show:!1}),fh='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',xw="bold "+fh,Sw=1.5,_g={show:!0,scale:"x",stroke:nh,space:50,gap:5,size:50,labelGap:0,labelSize:30,labelFont:xw,side:2,grid:ch,ticks:yw,border:ww,font:fh,lineGap:Sw,rotate:0},w3="Value",x3="Time",Cg={show:!0,scale:"x",auto:!1,sorted:1,min:ge,max:-ge,idxs:[]};function S3(e,t,n,r,o){return t.map(l=>l==null?"":sh(l))}function b3(e,t,n,r,o,l,i){let s=[],u=Kl.get(o)||0;n=i?n:ze(Vl(n,o),u);for(let a=n;a<=r;a=ze(a+o,u))s.push(Object.is(a,-0)?0:a);return s}function Md(e,t,n,r,o,l,i){const s=[],u=e.scales[e.axes[t].scale].log,a=u==10?Er:rw,f=Tn(a(n));o=Wl(u,f),u==10&&f<0&&(o=ze(o,-f));let p=n;do s.push(p),p=p+o,u==10&&(p=ze(p,Kl.get(o))),p>=o*u&&(o=p);while(p<=r);return s}function k3(e,t,n,r,o,l,i){let u=e.scales[e.axes[t].scale].asinh,a=r>u?Md(e,t,zt(u,n),r,o):[u],f=r>=0&&n<=0?[0]:[];return(n<-u?Md(e,t,zt(u,-r),-n,o):[u]).reverse().map(c=>-c).concat(f,a)}const bw=/./,_3=/[12357]/,C3=/[125]/,Eg=/1/,Pd=(e,t,n,r)=>e.map((o,l)=>t==4&&o==0||l%r==0&&n.test(o.toExponential()[o<0?1:0])?o:null);function E3(e,t,n,r,o){let l=e.axes[n],i=l.scale,s=e.scales[i],u=e.valToPos,a=l._space,f=u(10,i),p=u(9,i)-f>=a?bw:u(7,i)-f>=a?_3:u(5,i)-f>=a?C3:Eg;if(p==Eg){let c=Nt(u(1,i)-f);if(co,Pg={show:!0,auto:!0,sorted:0,gaps:kw,alpha:1,facets:[dt({},Mg,{scale:"x"}),dt({},Mg,{scale:"y"})]},Rg={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:kw,alpha:1,points:{show:R3,filter:null},values:null,min:ge,max:-ge,idxs:[],path:null,clip:null};function $3(e,t,n,r,o){return n/10}const _w={time:JM,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},O3=dt({},_w,{time:!1,ori:1}),$g={};function Cw(e,t){let n=$g[e];return n||(n={key:e,plots:[],sub(r){n.plots.push(r)},unsub(r){n.plots=n.plots.filter(o=>o!=r)},pub(r,o,l,i,s,u,a){for(let f=0;f{let w=i.pxRound;const v=a.dir*(a.ori==0?1:-1),x=a.ori==0?ei:ti;let _,C;v==1?(_=n,C=r):(_=r,C=n);let M=w(p(s[_],a,m,h)),E=w(c(u[_],f,b,g)),O=w(p(s[C],a,m,h)),z=w(c(l==1?f.max:f.min,f,b,g)),P=new Path2D(o);return x(P,O,z),x(P,M,z),x(P,M,E),P})}function cc(e,t,n,r,o,l){let i=null;if(e.length>0){i=new Path2D;const s=t==0?pc:ph;let u=n;for(let p=0;pc[0]){let h=c[0]-u;h>0&&s(i,u,r,h,r+l),u=c[1]}}let a=n+o-u,f=10;a>0&&s(i,u,r-f/2,a,r+l+f)}return i}function z3(e,t,n){let r=e[e.length-1];r&&r[0]==t?r[1]=n:e.push([t,n])}function dh(e,t,n,r,o,l,i){let s=[],u=e.length;for(let a=o==1?n:r;a>=n&&a<=r;a+=o)if(t[a]===null){let p=a,c=a;if(o==1)for(;++a<=r&&t[a]===null;)c=a;else for(;--a>=n&&t[a]===null;)c=a;let h=l(e[p]),g=c==p?h:l(e[c]),m=p-o;h=i<=0&&m>=0&&m=0&&w>=0&&w=h&&s.push([h,g])}return s}function Og(e){return e==0?RP:e==1?It:t=>vo(t,e)}function Ew(e){let t=e==0?fc:dc,n=e==0?(o,l,i,s,u,a)=>{o.arcTo(l,i,s,u,a)}:(o,l,i,s,u,a)=>{o.arcTo(i,l,u,s,a)},r=e==0?(o,l,i,s,u)=>{o.rect(l,i,s,u)}:(o,l,i,s,u)=>{o.rect(i,l,u,s)};return(o,l,i,s,u,a=0,f=0)=>{a==0&&f==0?r(o,l,i,s,u):(a=kn(a,s/2,u/2),f=kn(f,s/2,u/2),t(o,l+a,i),n(o,l+s,i,l+s,i+u,a),n(o,l+s,i+u,l,i+u,f),n(o,l,i+u,l,i,f),n(o,l,i,l+s,i,a),o.closePath())}}const fc=(e,t,n)=>{e.moveTo(t,n)},dc=(e,t,n)=>{e.moveTo(n,t)},ei=(e,t,n)=>{e.lineTo(t,n)},ti=(e,t,n)=>{e.lineTo(n,t)},pc=Ew(0),ph=Ew(1),Tw=(e,t,n,r,o,l)=>{e.arc(t,n,r,o,l)},Mw=(e,t,n,r,o,l)=>{e.arc(n,t,r,o,l)},Pw=(e,t,n,r,o,l,i)=>{e.bezierCurveTo(t,n,r,o,l,i)},Rw=(e,t,n,r,o,l,i)=>{e.bezierCurveTo(n,t,o,r,i,l)};function $w(e){return(t,n,r,o,l)=>Fo(t,n,(i,s,u,a,f,p,c,h,g,m,b)=>{let{pxRound:w,points:v}=i,x,_;a.ori==0?(x=fc,_=Tw):(x=dc,_=Mw);const C=ze(v.width*Ee,3);let M=(v.size-v.width)/2*Ee,E=ze(M*2,3),O=new Path2D,z=new Path2D,{left:P,top:L,width:U,height:W}=t.bbox;pc(z,P-E,L-E,U+E*2,W+E*2);const G=Y=>{if(u[Y]!=null){let le=w(p(s[Y],a,m,h)),oe=w(c(u[Y],f,b,g));x(O,le+M,oe),_(O,le,oe,M,0,Ca*2)}};if(l)l.forEach(G);else for(let Y=r;Y<=o;Y++)G(Y);return{stroke:C>0?O:null,fill:O,clip:z,flags:Ao|ou}})}function Ow(e){return(t,n,r,o,l,i)=>{r!=o&&(l!=r&&i!=r&&e(t,n,r),l!=o&&i!=o&&e(t,n,o),e(t,n,i))}}const A3=Ow(ei),L3=Ow(ti);function Nw(e){const t=Te(e==null?void 0:e.alignGaps,0);return(n,r,o,l)=>Fo(n,r,(i,s,u,a,f,p,c,h,g,m,b)=>{let w=i.pxRound,v=V=>w(p(V,a,m,h)),x=V=>w(c(V,f,b,g)),_,C;a.ori==0?(_=ei,C=A3):(_=ti,C=L3);const M=a.dir*(a.ori==0?1:-1),E={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Ao},O=E.stroke;let z=ge,P=-ge,L,U,W,G=v(s[M==1?o:l]),Y=Il(u,o,l,1*M),le=Il(u,o,l,-1*M),oe=v(s[Y]),j=v(s[le]),X=!1;for(let V=M==1?o:l;V>=o&&V<=l;V+=M){let ye=v(s[V]),q=u[V];ye==G?q!=null?(U=x(q),z==ge&&(_(O,ye,U),L=U),z=kn(U,z),P=zt(U,P)):q===null&&(X=!0):(z!=ge&&(C(O,G,z,P,L,U),W=G),q!=null?(U=x(q),_(O,ye,U),z=P=L=U):(z=ge,P=-ge,q===null&&(X=!0)),G=ye)}z!=ge&&z!=P&&W!=G&&C(O,G,z,P,L,U);let[H,J]=uc(n,r);if(i.fill!=null||H!=0){let V=E.fill=new Path2D(O),ye=i.fillTo(n,r,i.min,i.max,H),q=x(ye);_(V,j,q),_(V,oe,q)}if(!i.spanGaps){let V=[];X&&V.push(...dh(s,u,o,l,M,v,t)),E.gaps=V=i.gaps(n,r,o,l,V),E.clip=cc(V,a.ori,h,g,m,b)}return J!=0&&(E.band=J==2?[Tr(n,r,o,l,O,-1),Tr(n,r,o,l,O,1)]:Tr(n,r,o,l,O,J)),E})}function D3(e){const t=Te(e.align,1),n=Te(e.ascDesc,!1),r=Te(e.alignGaps,0),o=Te(e.extend,!1);return(l,i,s,u)=>Fo(l,i,(a,f,p,c,h,g,m,b,w,v,x)=>{let _=a.pxRound,{left:C,width:M}=l.bbox,E=H=>_(g(H,c,v,b)),O=H=>_(m(H,h,x,w)),z=c.ori==0?ei:ti;const P={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Ao},L=P.stroke,U=c.dir*(c.ori==0?1:-1);s=Il(p,s,u,1),u=Il(p,s,u,-1);let W=O(p[U==1?s:u]),G=E(f[U==1?s:u]),Y=G,le=G;o&&t==-1&&(le=C,z(L,le,W)),z(L,G,W);for(let H=U==1?s:u;H>=s&&H<=u;H+=U){let J=p[H];if(J==null)continue;let V=E(f[H]),ye=O(J);t==1?z(L,V,W):z(L,Y,ye),z(L,V,ye),W=ye,Y=V}let oe=Y;o&&t==1&&(oe=C+M,z(L,oe,W));let[j,X]=uc(l,i);if(a.fill!=null||j!=0){let H=P.fill=new Path2D(L),J=a.fillTo(l,i,a.min,a.max,j),V=O(J);z(H,oe,V),z(H,le,V)}if(!a.spanGaps){let H=[];H.push(...dh(f,p,s,u,U,E,r));let J=a.width*Ee/2,V=n||t==1?J:-J,ye=n||t==-1?-J:J;H.forEach(q=>{q[0]+=V,q[1]+=ye}),P.gaps=H=a.gaps(l,i,s,u,H),P.clip=cc(H,c.ori,b,w,v,x)}return X!=0&&(P.band=X==2?[Tr(l,i,s,u,L,-1),Tr(l,i,s,u,L,1)]:Tr(l,i,s,u,L,X)),P})}function B3(e){e=e||Gi;const t=Te(e.size,[.6,ge,1]),n=e.align||0,r=(e.gap||0)*Ee;let o=e.radius;o=o==null?[0,0]:typeof o=="number"?[o,0]:o;const l=me(o),i=1-t[0],s=Te(t[1],ge)*Ee,u=Te(t[2],1)*Ee,a=Te(e.disp,Gi),f=Te(e.each,h=>{}),{fill:p,stroke:c}=a;return(h,g,m,b)=>Fo(h,g,(w,v,x,_,C,M,E,O,z,P,L)=>{let U=w.pxRound,W,G;_.ori==0?[W,G]=l(h,g):[G,W]=l(h,g);const Y=_.dir*(_.ori==0?1:-1),le=C.dir*(C.ori==1?1:-1);let oe=_.ori==0?pc:ph,j=_.ori==0?f:(ee,be,Le,Je,at,Ye,te)=>{f(ee,be,Le,at,Je,te,Ye)},[X,H]=uc(h,g),J=C.distr==3?X==1?C.max:C.min:0,V=E(J,C,L,z),ye,q,ae=U(w.width*Ee),Ne=!1,wt=null,qt=null,st=null,un=null;p!=null&&(ae==0||c!=null)&&(Ne=!0,wt=p.values(h,g,m,b),qt=new Map,new Set(wt).forEach(ee=>{ee!=null&&qt.set(ee,new Path2D)}),ae>0&&(st=c.values(h,g,m,b),un=new Map,new Set(st).forEach(ee=>{ee!=null&&un.set(ee,new Path2D)})));let{x0:Jt,size:Nn}=a,Nr=!0;if(Jt!=null&&Nn!=null){v=Jt.values(h,g,m,b),Jt.unit==2&&(v=v.map(be=>h.posToVal(O+be*P,_.key,!0)));let ee=Nn.values(h,g,m,b);Nn.unit==2?q=ee[0]*P:q=M(ee[0],_,P,O)-M(0,_,P,O),q=U(q-ae),ye=Y==1?-ae/2:q+ae/2}else{let ee=P;if(v.length>1){let Le=null;for(let Je=0,at=1/0;Jeee&&(Nr=!1)}const wn={stroke:null,fill:null,clip:null,band:null,gaps:null,flags:Ao|ou};let yr;H!=0&&(wn.band=new Path2D,yr=U(E(H==1?C.max:C.min,C,L,z)));const nr=Ne?null:new Path2D,xt=wn.band;let{y0:ot,y1:rr}=a,Ct=null;ot!=null&&rr!=null&&(x=rr.values(h,g,m,b),Ct=ot.values(h,g,m,b));let en=W*q,ce=G*q;for(let ee=Y==1?m:b;ee>=m&&ee<=b;ee+=Y){let be=x[ee];if(be===void 0)continue;let Le=_.distr!=2||a!=null?v[ee]:ee,Je=M(Le,_,P,O),at=E(Te(be,J),C,L,z);Ct!=null&&be!=null&&(V=E(Ct[ee],C,L,z));let Ye=U(Je-ye),te=U(zt(at,V)),ut=U(kn(at,V)),Et=te-ut;if(be!=null){let tn=be<0?ce:en,cn=be<0?en:ce;Ne?(ae>0&&st[ee]!=null&&oe(un.get(st[ee]),Ye,ut+Tn(ae/2),q,zt(0,Et-ae),tn,cn),wt[ee]!=null&&oe(qt.get(wt[ee]),Ye,ut+Tn(ae/2),q,zt(0,Et-ae),tn,cn)):oe(nr,Ye,ut+Tn(ae/2),q,zt(0,Et-ae),tn,cn),j(h,g,ee,Ye-ae/2,ut,q+ae,Et)}H!=0&&(be!=null||Nr)&&(le*H==1?(te=ut,ut=yr):(ut=te,te=yr),Et=te-ut,oe(xt,Ye-ae/2,ut,q+ae,zt(0,Et),0,0))}return ae>0&&(wn.stroke=Ne?un:nr),wn.fill=Ne?qt:nr,wn})}function j3(e,t){const n=Te(t==null?void 0:t.alignGaps,0);return(r,o,l,i)=>Fo(r,o,(s,u,a,f,p,c,h,g,m,b,w)=>{let v=s.pxRound,x=oe=>v(c(oe,f,b,g)),_=oe=>v(h(oe,p,w,m)),C,M,E;f.ori==0?(C=fc,E=ei,M=Pw):(C=dc,E=ti,M=Rw);const O=f.dir*(f.ori==0?1:-1);l=Il(a,l,i,1),i=Il(a,l,i,-1);let z=x(u[O==1?l:i]),P=z,L=[],U=[];for(let oe=O==1?l:i;oe>=l&&oe<=i;oe+=O)if(a[oe]!=null){let X=u[oe],H=x(X);L.push(P=H),U.push(_(a[oe]))}const W={stroke:e(L,U,C,E,M,v),fill:null,clip:null,band:null,gaps:null,flags:Ao},G=W.stroke;let[Y,le]=uc(r,o);if(s.fill!=null||Y!=0){let oe=W.fill=new Path2D(G),j=s.fillTo(r,o,s.min,s.max,Y),X=_(j);E(oe,P,X),E(oe,z,X)}if(!s.spanGaps){let oe=[];oe.push(...dh(u,a,l,i,O,x,n)),W.gaps=oe=s.gaps(r,o,l,i,oe),W.clip=cc(oe,f.ori,g,m,b,w)}return le!=0&&(W.band=le==2?[Tr(r,o,l,i,G,-1),Tr(r,o,l,i,G,1)]:Tr(r,o,l,i,G,le)),W})}function F3(e){return j3(I3,e)}function I3(e,t,n,r,o,l){const i=e.length;if(i<2)return null;const s=new Path2D;if(n(s,e[0],t[0]),i==2)r(s,e[1],t[1]);else{let u=Array(i),a=Array(i-1),f=Array(i-1),p=Array(i-1);for(let c=0;c0!=a[c]>0?u[c]=0:(u[c]=3*(p[c-1]+p[c])/((2*p[c]+p[c-1])/a[c-1]+(p[c]+2*p[c-1])/a[c]),isFinite(u[c])||(u[c]=0));u[i-1]=a[i-2];for(let c=0;c{Lt.pxRatio=Ee}));const H3=Nw(),W3=$w();function zg(e,t,n,r){return(r?[e[0],e[1]].concat(e.slice(2)):[e[0]].concat(e.slice(1))).map((l,i)=>$d(l,i,t,n))}function U3(e,t){return e.map((n,r)=>r==0?null:dt({},t,n))}function $d(e,t,n,r){return dt({},t==0?n:r,e)}function zw(e,t,n){return t==null?Gl:[t,n]}const V3=zw;function K3(e,t,n){return t==null?Gl:nu(t,n,ih,!0)}function Aw(e,t,n,r){return t==null?Gl:sc(t,n,e.scales[r].log,!1)}const G3=Aw;function Lw(e,t,n,r){return t==null?Gl:lh(t,n,e.scales[r].log,!1)}const Y3=Lw;function Q3(e,t,n,r,o){let l=zt(fg(e),fg(t)),i=t-e,s=jr(o/r*i,n);do{let u=n[s],a=r*u/i;if(a>=o&&l+(u<5?Kl.get(u):0)<=17)return[u,a]}while(++s(t=It((n=+o)*Ee))+"px"),[e,t,n]}function X3(e){e.show&&[e.font,e.labelFont].forEach(t=>{let n=ze(t[2]*Ee,1);t[0]=t[0].replace(/[0-9.]+px/,n+"px"),t[1]=n})}function Lt(e,t,n){const r={mode:Te(e.mode,1)},o=r.mode;function l(d,y){return((y.distr==3?Er(d>0?d:y.clamp(r,d,y.min,y.max,y.key)):y.distr==4?vf(d,y.asinh):d)-y._min)/(y._max-y._min)}function i(d,y,S,k){let T=l(d,y);return k+S*(y.dir==-1?1-T:T)}function s(d,y,S,k){let T=l(d,y);return k+S*(y.dir==-1?T:1-T)}function u(d,y,S,k){return y.ori==0?i(d,y,S,k):s(d,y,S,k)}r.valToPosH=i,r.valToPosV=s;let a=!1;r.status=0;const f=r.root=zn(eP);if(e.id!=null&&(f.id=e.id),xn(f,e.class),e.title){let d=zn(rP,f);d.textContent=e.title}const p=Qn("canvas"),c=r.ctx=p.getContext("2d"),h=zn(oP,f);To("click",h,d=>{d.target===m&&(je!=Wo||Fe!=Uo)&&jt.click(r,d)},!0);const g=r.under=zn(lP,h);h.appendChild(p);const m=r.over=zn(iP,h);e=Mo(e);const b=+Te(e.pxAlign,1),w=Og(b);(e.plugins||[]).forEach(d=>{d.opts&&(e=d.opts(r,e)||e)});const v=e.ms||.001,x=r.series=o==1?zg(e.series||[],Cg,Rg,!1):U3(e.series||[null],Pg),_=r.axes=zg(e.axes||[],_g,Tg,!0),C=r.scales={},M=r.bands=e.bands||[];M.forEach(d=>{d.fill=me(d.fill||null),d.dir=Te(d.dir,-1)});const E=o==2?x[1].facets[0].scale:x[0].scale,O={axes:rx,series:qw},z=(e.drawOrder||["axes","series"]).map(d=>O[d]);function P(d){let y=C[d];if(y==null){let S=(e.scales||Gi)[d]||Gi;if(S.from!=null)P(S.from),C[d]=dt({},C[S.from],S,{key:d});else{y=C[d]=dt({},d==E?_w:O3,S),y.key=d;let k=y.time,T=y.range,N=Hr(T);if((d!=E||o==2&&!k)&&(N&&(T[0]==null||T[1]==null)&&(T={min:T[0]==null?ag:{mode:1,hard:T[0],soft:T[0]},max:T[1]==null?ag:{mode:1,hard:T[1],soft:T[1]}},N=!1),!N&&ac(T))){let D=T;T=(I,K,re)=>K==null?Gl:nu(K,re,D)}y.range=me(T||(k?V3:d==E?y.distr==3?G3:y.distr==4?Y3:zw:y.distr==3?Aw:y.distr==4?Lw:K3)),y.auto=me(N?!1:y.auto),y.clamp=me(y.clamp||$3),y._min=y._max=null}}}P("x"),P("y"),o==1&&x.forEach(d=>{P(d.scale)}),_.forEach(d=>{P(d.scale)});for(let d in e.scales)P(d);const L=C[E],U=L.distr;let W,G;L.ori==0?(xn(f,tP),W=i,G=s):(xn(f,nP),W=s,G=i);const Y={};for(let d in C){let y=C[d];(y.min!=null||y.max!=null)&&(Y[d]={min:y.min,max:y.max},y.min=y.max=null)}const le=e.tzDate||(d=>new Date(It(d/v))),oe=e.fmtDate||ah,j=v==1?r3(le):i3(le),X=Sg(le,xg(v==1?n3:l3,oe)),H=kg(le,bg(a3,oe)),J=[],V=r.legend=dt({},f3,e.legend),ye=V.show,q=V.markers;V.idxs=J,q.width=me(q.width),q.dash=me(q.dash),q.stroke=me(q.stroke),q.fill=me(q.fill);let ae,Ne,wt,qt=[],st=[],un,Jt=!1,Nn={};if(V.live){const d=x[1]?x[1].values:null;Jt=d!=null,un=Jt?d(r,1,0):{_:0};for(let y in un)Nn[y]=rh}if(ye)if(ae=Qn("table",dP,f),wt=Qn("tbody",null,ae),V.mount(r,ae),Jt){Ne=Qn("thead",null,ae,wt);let d=Qn("tr",null,Ne);Qn("th",null,d);for(var Nr in un)Qn("th",X0,d).textContent=Nr}else xn(ae,hP),V.live&&xn(ae,pP);const wn={show:!0},yr={show:!1};function nr(d,y){if(y==0&&(Jt||!V.live||o==2))return Gl;let S=[],k=Qn("tr",mP,wt,wt.childNodes[y]);xn(k,d.class),d.show||xn(k,wo);let T=Qn("th",null,k);if(q.show){let I=zn(gP,T);if(y>0){let K=q.width(r,y);K&&(I.style.border=K+"px "+q.dash(r,y)+" "+q.stroke(r,y)),I.style.background=q.fill(r,y)}}let N=zn(X0,T);N.textContent=d.label,y>0&&(q.show||(N.style.color=d.width>0?q.stroke(r,y):q.fill(r,y)),ot("click",T,I=>{if(se._lock)return;Un(I);let K=x.indexOf(d);if((I.ctrlKey||I.metaKey)!=V.isolate){let re=x.some((F,ne)=>ne>0&&ne!=K&&F.show);x.forEach((F,ne)=>{ne>0&&ir(ne,re?ne==K?wn:yr:wn,!0,ct.setSeries)})}else ir(K,{show:!d.show},!0,ct.setSeries)},!1),ri&&ot(tg,T,I=>{se._lock||(Un(I),ir(x.indexOf(d),Go,!0,ct.setSeries))},!1));for(var D in un){let I=Qn("td",vP,k);I.textContent="--",S.push(I)}return[k,S]}const xt=new Map;function ot(d,y,S,k=!0){const T=xt.get(y)||{},N=se.bind[d](r,y,S,k);N&&(To(d,y,T[d]=N),xt.set(y,T))}function rr(d,y,S){const k=xt.get(y)||{};for(let T in k)(d==null||T==d)&&(Td(T,y,k[T]),delete k[T]);d==null&&xt.delete(y)}let Ct=0,en=0,ce=0,ee=0,be=0,Le=0,Je=0,at=0,Ye=0,te=0;r.bbox={};let ut=!1,Et=!1,tn=!1,cn=!1,uo=!1,Q=!1;function ie(d,y,S){(S||d!=r.width||y!=r.height)&&pe(d,y),ii(!1),tn=!0,Et=!0,se.left>=0&&(cn=Q=!0),fo()}function pe(d,y){r.width=Ct=ce=d,r.height=en=ee=y,be=Le=0,Io(),mc();let S=r.bbox;Je=S.left=vo(be*Ee,.5),at=S.top=vo(Le*Ee,.5),Ye=S.width=vo(ce*Ee,.5),te=S.height=vo(ee*Ee,.5)}const xe=3;function Tt(){let d=!1,y=0;for(;!d;){y++;let S=tx(y),k=nx(y);d=y==xe||S&&k,d||(pe(r.width,r.height),Et=!0)}}function or({width:d,height:y}){ie(d,y)}r.setSize=or;function Io(){let d=!1,y=!1,S=!1,k=!1;_.forEach((T,N)=>{if(T.show&&T._show){let{side:D,_size:I}=T,K=D%2,re=T.label!=null?T.labelSize:0,F=I+re;F>0&&(K?(ce-=F,D==3?(be+=F,k=!0):S=!0):(ee-=F,D==0?(Le+=F,d=!0):y=!0))}}),co[0]=d,co[1]=S,co[2]=y,co[3]=k,ce-=zr[1]+zr[3],be+=zr[3],ee-=zr[2]+zr[0],Le+=zr[0]}function mc(){let d=be+ce,y=Le+ee,S=be,k=Le;function T(N,D){switch(N){case 1:return d+=D,d-D;case 2:return y+=D,y-D;case 3:return S-=D,S+D;case 0:return k-=D,k+D}}_.forEach((N,D)=>{if(N.show&&N._show){let I=N.side;N._pos=T(I,N._size),N.label!=null&&(N._lpos=T(I,N.labelSize))}})}const se=r.cursor=dt({},y3,{drag:{y:o==2}},e.cursor),Un=d=>{se.event=d};se.idxs=J,se._lock=!1;let lr=se.points;lr.show=me(lr.show),lr.size=me(lr.size),lr.stroke=me(lr.stroke),lr.width=me(lr.width),lr.fill=me(lr.fill);const ni=r.focus=dt({},e.focus||{alpha:.3},se.focus),ri=ni.prox>=0;let fn=[null];function Kw(d,y){if(y>0){let S=se.points.show(r,y);if(S)return xn(S,fP),xn(S,d.class),ol(S,-10,-10,ce,ee),m.insertBefore(S,fn[y]),S}}function gh(d,y){if(o==1||y>0){let S=o==1&&C[d.scale].time,k=d.value;d.value=S?mg(k)?kg(le,bg(k,oe)):k||H:k||M3,d.label=d.label||(S?x3:w3)}if(y>0){d.width=d.width==null?1:d.width,d.paths=d.paths||H3||$P,d.fillTo=me(d.fillTo||N3),d.pxAlign=+Te(d.pxAlign,b),d.pxRound=Og(d.pxAlign),d.stroke=me(d.stroke||null),d.fill=me(d.fill||null),d._stroke=d._fill=d._paths=d._focus=null;let S=P3(zt(1,d.width),1),k=d.points=dt({},{size:S,width:zt(1,S*.2),stroke:d.stroke,space:S*2,paths:W3,_stroke:null,_fill:null},d.points);k.show=me(k.show),k.filter=me(k.filter),k.fill=me(k.fill),k.stroke=me(k.stroke),k.paths=me(k.paths),k.pxAlign=d.pxAlign}if(ye){let S=nr(d,y);qt.splice(y,0,S[0]),st.splice(y,0,S[1]),V.values.push(null)}if(se.show){J.splice(y,0,null);let S=Kw(d,y);S&&fn.splice(y,0,S)}Ft("addSeries",y)}function Gw(d,y){y=y??x.length,d=o==1?$d(d,y,Cg,Rg):$d(d,y,null,Pg),x.splice(y,0,d),gh(x[y],y)}r.addSeries=Gw;function Yw(d){if(x.splice(d,1),ye){V.values.splice(d,1),st.splice(d,1);let y=qt.splice(d,1)[0];rr(null,y.firstChild),y.remove()}se.show&&(J.splice(d,1),fn.length>1&&fn.splice(d,1)[0].remove()),Ft("delSeries",d)}r.delSeries=Yw;const co=[!1,!1,!1,!1];function Qw(d,y){if(d._show=d.show,d.show){let S=d.side%2,k=C[d.scale];k==null&&(d.scale=S?x[1].scale:E,k=C[d.scale]);let T=k.time;d.size=me(d.size),d.space=me(d.space),d.rotate=me(d.rotate),Hr(d.incrs)&&d.incrs.forEach(D=>{!Kl.has(D)&&Kl.set(D,iw(D))}),d.incrs=me(d.incrs||(k.distr==2?qP:T?v==1?t3:o3:JP)),d.splits=me(d.splits||(T&&k.distr==1?j:k.distr==3?Md:k.distr==4?k3:b3)),d.stroke=me(d.stroke),d.grid.stroke=me(d.grid.stroke),d.ticks.stroke=me(d.ticks.stroke),d.border.stroke=me(d.border.stroke);let N=d.values;d.values=Hr(N)&&!Hr(N[0])?me(N):T?Hr(N)?Sg(le,xg(N,oe)):mg(N)?s3(le,N):N||X:N||S3,d.filter=me(d.filter||(k.distr>=3&&k.log==10?E3:k.distr==3&&k.log==2?T3:ow)),d.font=Ag(d.font),d.labelFont=Ag(d.labelFont),d._size=d.size(r,null,y,0),d._space=d._rotate=d._incrs=d._found=d._splits=d._values=null,d._size>0&&(co[y]=!0,d._el=zn(sP,h))}}function oi(d,y,S,k){let[T,N,D,I]=S,K=y%2,re=0;return K==0&&(I||N)&&(re=y==0&&!T||y==2&&!D?It(_g.size/3):0),K==1&&(T||D)&&(re=y==1&&!N||y==3&&!I?It(Tg.size/2):0),re}const vh=r.padding=(e.padding||[oi,oi,oi,oi]).map(d=>me(Te(d,oi))),zr=r._padding=vh.map((d,y)=>d(r,y,co,0));let Bt,Mt=null,Pt=null;const Ms=o==1?x[0].idxs:null;let Vn=null,Ps=!1;function yh(d,y){if(t=d==null?[]:Mo(d,gg),o==2){Bt=0;for(let S=1;S=0,Q=!0,fo()}}r.setData=yh;function gc(){Ps=!0;let d,y;o==1&&(Bt>0?(Mt=Ms[0]=0,Pt=Ms[1]=Bt-1,d=t[0][Mt],y=t[0][Pt],U==2?(d=Mt,y=Pt):d==y&&(U==3?[d,y]=sc(d,d,L.log,!1):U==4?[d,y]=lh(d,d,L.log,!1):L.time?y=d+It(86400/v):[d,y]=nu(d,y,ih,!0))):(Mt=Ms[0]=d=null,Pt=Ms[1]=y=null)),Vo(E,d,y)}let Rs,Ho,vc,yc,wc,xc,Sc,bc,kc,li;function wh(d,y,S,k,T,N){d??(d=q0),S??(S=sw),k??(k="butt"),T??(T=q0),N??(N="round"),d!=Rs&&(c.strokeStyle=Rs=d),T!=Ho&&(c.fillStyle=Ho=T),y!=vc&&(c.lineWidth=vc=y),N!=wc&&(c.lineJoin=wc=N),k!=xc&&(c.lineCap=xc=k),S!=yc&&c.setLineDash(yc=S)}function xh(d,y,S,k){y!=Ho&&(c.fillStyle=Ho=y),d!=Sc&&(c.font=Sc=d),S!=bc&&(c.textAlign=bc=S),k!=kc&&(c.textBaseline=kc=k)}function _c(d,y,S,k,T=0){if(k.length>0&&d.auto(r,Ps)&&(y==null||y.min==null)){let N=Te(Mt,0),D=Te(Pt,k.length-1),I=S.min==null?d.distr==3?_P(k,N,D):kP(k,N,D,T):[S.min,S.max];d.min=kn(d.min,S.min=I[0]),d.max=zt(d.max,S.max=I[1])}}function Xw(){let d=Mo(C,gg);for(let k in d){let T=d[k],N=Y[k];if(N!=null&&N.min!=null)dt(T,N),k==E&&ii(!0);else if(k!=E||o==2)if(Bt==0&&T.from==null){let D=T.range(r,null,null,k);T.min=D[0],T.max=D[1]}else T.min=ge,T.max=-ge}if(Bt>0){x.forEach((k,T)=>{if(o==1){let N=k.scale,D=d[N],I=Y[N];if(T==0){let K=D.range(r,D.min,D.max,N);D.min=K[0],D.max=K[1],Mt=jr(D.min,t[0]),Pt=jr(D.max,t[0]),Pt-Mt>1&&(t[0][Mt]D.max&&Pt--),k.min=Vn[Mt],k.max=Vn[Pt]}else k.show&&k.auto&&_c(D,I,k,t[T],k.sorted);k.idxs[0]=Mt,k.idxs[1]=Pt}else if(T>0&&k.show&&k.auto){let[N,D]=k.facets,I=N.scale,K=D.scale,[re,F]=t[T];_c(d[I],Y[I],N,re,N.sorted),_c(d[K],Y[K],D,F,D.sorted),k.min=D.min,k.max=D.max}});for(let k in d){let T=d[k],N=Y[k];if(T.from==null&&(N==null||N.min==null)){let D=T.range(r,T.min==ge?null:T.min,T.max==-ge?null:T.max,k);T.min=D[0],T.max=D[1]}}}for(let k in d){let T=d[k];if(T.from!=null){let N=d[T.from];if(N.min==null)T.min=T.max=null;else{let D=T.range(r,N.min,N.max,k);T.min=D[0],T.max=D[1]}}}let y={},S=!1;for(let k in d){let T=d[k],N=C[k];if(N.min!=T.min||N.max!=T.max){N.min=T.min,N.max=T.max;let D=N.distr;N._min=D==3?Er(N.min):D==4?vf(N.min,N.asinh):N.min,N._max=D==3?Er(N.max):D==4?vf(N.max,N.asinh):N.max,y[k]=S=!0}}if(S){x.forEach((k,T)=>{o==2?T>0&&y.y&&(k._paths=null):y[k.scale]&&(k._paths=null)});for(let k in y)tn=!0,Ft("setScale",k);se.show&&se.left>=0&&(cn=Q=!0)}for(let k in Y)Y[k]=null}function Zw(d){let y=dg(Mt-1,0,Bt-1),S=dg(Pt+1,0,Bt-1);for(;d[y]==null&&y>0;)y--;for(;d[S]==null&&S0&&(x.forEach((d,y)=>{if(y>0&&d.show&&d._paths==null){let S=o==2?[0,t[y][0].length-1]:Zw(t[y]);d._paths=d.paths(r,y,S[0],S[1])}}),x.forEach((d,y)=>{if(y>0&&d.show){li!=d.alpha&&(c.globalAlpha=li=d.alpha),Sh(y,!1),d._paths&&bh(y,!1);{Sh(y,!0);let S=d._paths?d._paths.gaps:null,k=d.points.show(r,y,Mt,Pt,S),T=d.points.filter(r,y,k,S);(k||T)&&(d.points._paths=d.points.paths(r,y,Mt,Pt,T),bh(y,!0))}li!=1&&(c.globalAlpha=li=1),Ft("drawSeries",y)}}))}function Sh(d,y){let S=y?x[d].points:x[d];S._stroke=S.stroke(r,d),S._fill=S.fill(r,d)}function bh(d,y){let S=y?x[d].points:x[d],k=S._stroke,T=S._fill,{stroke:N,fill:D,clip:I,flags:K}=S._paths,re=null,F=ze(S.width*Ee,3),ne=F%2/2;y&&T==null&&(T=F>0?"#fff":k);let ue=S.pxAlign==1&&ne>0;if(ue&&c.translate(ne,ne),!y){let et=Je-F/2,he=at-F/2,ke=Ye+F,Se=te+F;re=new Path2D,re.rect(et,he,ke,Se)}y?Cc(k,F,S.dash,S.cap,T,N,D,K,I):Jw(d,k,F,S.dash,S.cap,T,N,D,K,re,I),ue&&c.translate(-ne,-ne)}function Jw(d,y,S,k,T,N,D,I,K,re,F){let ne=!1;M.forEach((ue,et)=>{if(ue.series[0]==d){let he=x[ue.series[1]],ke=t[ue.series[1]],Se=(he._paths||Gi).band;Hr(Se)&&(Se=ue.dir==1?Se[0]:Se[1]);let Re,Qe=null;he.show&&Se&&EP(ke,Mt,Pt)?(Qe=ue.fill(r,et)||N,Re=he._paths.clip):Se=null,Cc(y,S,k,T,Qe,D,I,K,re,F,Re,Se),ne=!0}}),ne||Cc(y,S,k,T,N,D,I,K,re,F)}const kh=Ao|ou;function Cc(d,y,S,k,T,N,D,I,K,re,F,ne){wh(d,y,S,k,T),(K||re||ne)&&(c.save(),K&&c.clip(K),re&&c.clip(re)),ne?(I&kh)==kh?(c.clip(ne),F&&c.clip(F),Os(T,D),$s(d,N,y)):I&ou?(Os(T,D),c.clip(ne),$s(d,N,y)):I&Ao&&(c.save(),c.clip(ne),F&&c.clip(F),Os(T,D),c.restore(),$s(d,N,y)):(Os(T,D),$s(d,N,y)),(K||re||ne)&&c.restore()}function $s(d,y,S){S>0&&(y instanceof Map?y.forEach((k,T)=>{c.strokeStyle=Rs=T,c.stroke(k)}):y!=null&&d&&c.stroke(y))}function Os(d,y){y instanceof Map?y.forEach((S,k)=>{c.fillStyle=Ho=k,c.fill(S)}):y!=null&&d&&c.fill(y)}function ex(d,y,S,k){let T=_[d],N;if(k<=0)N=[0,0];else{let D=T._space=T.space(r,d,y,S,k),I=T._incrs=T.incrs(r,d,y,S,k,D);N=Q3(y,S,I,k,D)}return T._found=N}function Ec(d,y,S,k,T,N,D,I,K,re){let F=D%2/2;b==1&&c.translate(F,F),wh(I,D,K,re,I),c.beginPath();let ne,ue,et,he,ke=T+(k==0||k==3?-N:N);S==0?(ue=T,he=ke):(ne=T,et=ke);for(let Se=0;Se{if(!S.show)return;let T=C[S.scale];if(T.min==null){S._show&&(y=!1,S._show=!1,ii(!1));return}else S._show||(y=!1,S._show=!0,ii(!1));let N=S.side,D=N%2,{min:I,max:K}=T,[re,F]=ex(k,I,K,D==0?ce:ee);if(F==0)return;let ne=T.distr==2,ue=S._splits=S.splits(r,k,I,K,re,F,ne),et=T.distr==2?ue.map(Re=>Vn[Re]):ue,he=T.distr==2?Vn[ue[1]]-Vn[ue[0]]:re,ke=S._values=S.values(r,S.filter(r,et,k,F,he),k,F,he);S._rotate=N==2?S.rotate(r,ke,k,F):0;let Se=S._size;S._size=Hl(S.size(r,ke,k,d)),Se!=null&&S._size!=Se&&(y=!1)}),y}function nx(d){let y=!0;return vh.forEach((S,k)=>{let T=S(r,k,co,d);T!=zr[k]&&(y=!1),zr[k]=T}),y}function rx(){for(let d=0;d<_.length;d++){let y=_[d];if(!y.show||!y._show)continue;let S=y.side,k=S%2,T,N,D=y.stroke(r,d),I=S==0||S==3?-1:1;if(y.label){let Gn=y.labelGap*I,wr=It((y._lpos+Gn)*Ee);xh(y.labelFont[0],D,"center",S==2?Ti:Z0),c.save(),k==1?(T=N=0,c.translate(wr,It(at+te/2)),c.rotate((S==3?-Ca:Ca)/2)):(T=It(Je+Ye/2),N=wr),c.fillText(y.label,T,N),c.restore()}let[K,re]=y._found;if(re==0)continue;let F=C[y.scale],ne=k==0?Ye:te,ue=k==0?Je:at,et=It(y.gap*Ee),he=y._splits,ke=F.distr==2?he.map(Gn=>Vn[Gn]):he,Se=F.distr==2?Vn[he[1]]-Vn[he[0]]:K,Re=y.ticks,Qe=y.border,dn=Re.show?It(Re.size*Ee):0,Ie=y._rotate*-Ca/180,ft=w(y._pos*Ee),Kt=(dn+et)*I,lt=ft+Kt;N=k==0?lt:0,T=k==1?lt:0;let rn=y.font[0],Kn=y.align==1?rl:y.align==2?mf:Ie>0?rl:Ie<0?mf:k==0?"center":S==3?mf:rl,Dr=Ie||k==1?"middle":S==2?Ti:Z0;xh(rn,D,Kn,Dr);let Hh=y.font[1]*y.lineGap,Bs=he.map(Gn=>w(u(Gn,F,ne,ue))),Wh=y._values;for(let Gn=0;Gn{S>0&&(y._paths=null,d&&(o==1?(y.min=null,y.max=null):y.facets.forEach(k=>{k.min=null,k.max=null})))})}let Tc=!1;function fo(){Tc||(FP(ox),Tc=!0)}function ox(){ut&&(Xw(),ut=!1),tn&&(Tt(),tn=!1),Et&&(Ke(g,rl,be),Ke(g,Ti,Le),Ke(g,Ni,ce),Ke(g,zi,ee),Ke(m,rl,be),Ke(m,Ti,Le),Ke(m,Ni,ce),Ke(m,zi,ee),Ke(h,Ni,Ct),Ke(h,zi,en),p.width=It(Ct*Ee),p.height=It(en*Ee),_.forEach(({_el:d,_show:y,_size:S,_pos:k,side:T})=>{if(d!=null)if(y){let N=T===3||T===0?S:0,D=T%2==1;Ke(d,D?"left":"top",k-N),Ke(d,D?"width":"height",S),Ke(d,D?"top":"left",D?Le:be),Ke(d,D?"height":"width",D?ee:ce),Ed(d,wo)}else xn(d,wo)}),Rs=Ho=vc=wc=xc=Sc=bc=kc=yc=null,li=1,di(!0),Ft("setSize"),Et=!1),Ct>0&&en>0&&(c.clearRect(0,0,p.width,p.height),Ft("drawClear"),z.forEach(d=>d()),Ft("draw")),nn.show&&uo&&(As(nn),uo=!1),se.show&&cn&&(po(null,!0,!1),cn=!1),V.show&&V.live&&Q&&($c(),Q=!1),a||(a=!0,r.status=1,Ft("ready")),Ps=!1,Tc=!1}r.redraw=(d,y)=>{tn=y||!1,d!==!1?Vo(E,L.min,L.max):fo()};function Mc(d,y){let S=C[d];if(S.from==null){if(Bt==0){let k=S.range(r,y.min,y.max,d);y.min=k[0],y.max=k[1]}if(y.min>y.max){let k=y.min;y.min=y.max,y.max=k}if(Bt>1&&y.min!=null&&y.max!=null&&y.max-y.min<1e-16)return;d==E&&S.distr==2&&Bt>0&&(y.min=jr(y.min,t[0]),y.max=jr(y.max,t[0]),y.min==y.max&&y.max++),Y[d]=y,ut=!0,fo()}}r.setScale=Mc;let Pc,Rc,Ns,zs,_h,Ch,Wo,Uo,Eh,Th,je,Fe,Ar=!1;const jt=se.drag;let Rt=jt.x,$t=jt.y;se.show&&(se.x&&(Pc=zn(uP,m)),se.y&&(Rc=zn(cP,m)),L.ori==0?(Ns=Pc,zs=Rc):(Ns=Rc,zs=Pc),je=se.left,Fe=se.top);const nn=r.select=dt({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),si=nn.show?zn(aP,nn.over?m:g):null;function As(d,y){if(nn.show){for(let S in d)nn[S]=d[S],S in $h&&Ke(si,S,d[S]);y!==!1&&Ft("setSelect")}}r.setSelect=As;function lx(d,y){let S=x[d],k=ye?qt[d]:null;S.show?k&&Ed(k,wo):(k&&xn(k,wo),fn.length>1&&ol(fn[d],-10,-10,ce,ee))}function Vo(d,y,S){Mc(d,{min:y,max:S})}function ir(d,y,S,k){y.focus!=null&&cx(d),y.show!=null&&x.forEach((T,N)=>{N>0&&(d==N||d==null)&&(T.show=y.show,lx(N,y.show),Vo(o==2?T.facets[1].scale:T.scale,null,null),fo())}),S!==!1&&Ft("setSeries",d,y),k&&pi("setSeries",r,d,y)}r.setSeries=ir;function ix(d,y){dt(M[d],y)}function sx(d,y){d.fill=me(d.fill||null),d.dir=Te(d.dir,-1),y=y??M.length,M.splice(y,0,d)}function ax(d){d==null?M.length=0:M.splice(d,1)}r.addBand=sx,r.setBand=ix,r.delBand=ax;function ux(d,y){x[d].alpha=y,se.show&&fn[d]&&(fn[d].style.opacity=y),ye&&qt[d]&&(qt[d].style.opacity=y)}let Ko,ai,ui;const Go={focus:!0};function cx(d){if(d!=ui){let y=d==null,S=ni.alpha!=1;x.forEach((k,T)=>{let N=y||T==0||T==d;k._focus=y?null:N,S&&ux(T,N?1:ni.alpha)}),ui=d,S&&fo()}}ye&&ri&&ot(ng,ae,d=>{se._lock||(Un(d),ui!=null&&ir(null,Go,!0,ct.setSeries))});function sr(d,y,S){let k=C[y];S&&(d=d/Ee-(k.ori==1?Le:be));let T=ce;k.ori==1&&(T=ee,d=T-d),k.dir==-1&&(d=T-d);let N=k._min,D=k._max,I=d/T,K=N+(D-N)*I,re=k.distr;return re==3?Wl(10,K):re==4?MP(K,k.asinh):K}function fx(d,y){let S=sr(d,E,y);return jr(S,t[0],Mt,Pt)}r.valToIdx=d=>jr(d,t[0]),r.posToIdx=fx,r.posToVal=sr,r.valToPos=(d,y,S)=>C[y].ori==0?i(d,C[y],S?Ye:ce,S?Je:0):s(d,C[y],S?te:ee,S?at:0);function dx(d){d(r),fo()}r.batch=dx,r.setCursor=(d,y,S)=>{je=d.left,Fe=d.top,po(null,y,S)};function Mh(d,y){Ke(si,rl,nn.left=d),Ke(si,Ni,nn.width=y)}function Ph(d,y){Ke(si,Ti,nn.top=d),Ke(si,zi,nn.height=y)}let ci=L.ori==0?Mh:Ph,fi=L.ori==1?Mh:Ph;function px(){if(ye&&V.live)for(let d=o==2?1:0;d{J[k]=S}):NP(d.idx)||J.fill(d.idx),V.idx=J[0]);for(let S=0;S0||o==1&&!Jt)&&hx(S,J[S]);ye&&V.live&&px(),Q=!1,y!==!1&&Ft("setLegend")}r.setLegend=$c;function hx(d,y){let S=x[d],k=d==0&&U==2?Vn:t[d],T;Jt?T=S.values(r,d,y)??Nn:(T=S.value(r,y==null?null:k[y],d,y),T=T==null?Nn:{_:T}),V.values[d]=T}function po(d,y,S){Eh=je,Th=Fe,[je,Fe]=se.move(r,je,Fe),se.show&&(Ns&&ol(Ns,It(je),0,ce,ee),zs&&ol(zs,0,It(Fe),ce,ee));let k,T=Mt>Pt;Ko=ge;let N=L.ori==0?ce:ee,D=L.ori==1?ce:ee;if(je<0||Bt==0||T){k=null;for(let I=0;I0&&fn.length>1&&ol(fn[I],-10,-10,ce,ee);ri&&ir(null,Go,!0,d==null&&ct.setSeries),V.live&&(J.fill(k),Q=!0)}else{let I,K,re;o==1&&(I=L.ori==0?je:Fe,K=sr(I,E),k=jr(K,t[0],Mt,Pt),re=W(t[0][k],L,N,0));for(let F=o==2?1:0;F0&&ne.show){let Re=ke==null?-10:Vl(G(ke,o==1?C[ne.scale]:C[ne.facets[1].scale],D,0),1);if(ri&&Re>=0&&o==1){let Ie=Nt(Re-Fe);if(Ie=0?1:-1,Kn=lt>=0?1:-1;Kn==rn&&(Kn==1?ft==1?ke>=lt:ke<=lt:ft==1?ke<=lt:ke>=lt)&&(Ko=Ie,ai=F)}else Ko=Ie,ai=F}}let Qe,dn;if(L.ori==0?(Qe=Se,dn=Re):(Qe=Re,dn=Se),Q&&fn.length>1){SP(fn[F],se.points.fill(r,F),se.points.stroke(r,F));let Ie,ft,Kt,lt,rn=!0,Kn=se.points.bbox;if(Kn!=null){rn=!1;let Dr=Kn(r,F);Kt=Dr.left,lt=Dr.top,Ie=Dr.width,ft=Dr.height}else Kt=Qe,lt=dn,Ie=ft=se.points.size(r,F);bP(fn[F],Ie,ft,rn),ol(fn[F],Kt,lt,ce,ee)}}}}if(se.idx=k,se.left=je,se.top=Fe,Q&&(V.idx=k,$c()),nn.show&&Ar)if(d!=null){let[I,K]=ct.scales,[re,F]=ct.match,[ne,ue]=d.cursor.sync.scales,et=d.cursor.drag;if(Rt=et._x,$t=et._y,Rt||$t){let{left:he,top:ke,width:Se,height:Re}=d.select,Qe=d.scales[I].ori,dn=d.posToVal,Ie,ft,Kt,lt,rn,Kn=I!=null&&re(I,ne),Dr=K!=null&&F(K,ue);Kn&&Rt?(Qe==0?(Ie=he,ft=Se):(Ie=ke,ft=Re),Kt=C[I],lt=W(dn(Ie,ne),Kt,N,0),rn=W(dn(Ie+ft,ne),Kt,N,0),ci(kn(lt,rn),Nt(rn-lt))):ci(0,N),Dr&&$t?(Qe==1?(Ie=he,ft=Se):(Ie=ke,ft=Re),Kt=C[K],lt=G(dn(Ie,ue),Kt,D,0),rn=G(dn(Ie+ft,ue),Kt,D,0),fi(kn(lt,rn),Nt(rn-lt))):fi(0,D)}else Ls()}else{let I=Nt(Eh-_h),K=Nt(Th-Ch);if(L.ori==1){let ue=I;I=K,K=ue}Rt=jt.x&&I>=jt.dist,$t=jt.y&&K>=jt.dist;let re=jt.uni;re!=null?Rt&&$t&&(Rt=I>=re,$t=K>=re,!Rt&&!$t&&(K>I?$t=!0:Rt=!0)):jt.x&&jt.y&&(Rt||$t)&&(Rt=$t=!0);let F,ne;Rt&&(L.ori==0?(F=Wo,ne=je):(F=Uo,ne=Fe),ci(kn(F,ne),Nt(ne-F)),$t||fi(0,D)),$t&&(L.ori==1?(F=Wo,ne=je):(F=Uo,ne=Fe),fi(kn(F,ne),Nt(ne-F)),Rt||ci(0,N)),!Rt&&!$t&&(ci(0,0),fi(0,0))}if(jt._x=Rt,jt._y=$t,d==null){if(S){if(Ih!=null){let[I,K]=ct.scales;ct.values[0]=I!=null?sr(L.ori==0?je:Fe,I):null,ct.values[1]=K!=null?sr(L.ori==1?je:Fe,K):null}pi(J0,r,je,Fe,ce,ee,k)}if(ri){let I=S&&ct.setSeries,K=ni.prox;ui==null?Ko<=K&&ir(ai,Go,!0,I):Ko>K?ir(null,Go,!0,I):ai!=ui&&ir(ai,Go,!0,I)}}y!==!1&&Ft("setCursor")}let Lr=null;Object.defineProperty(r,"rect",{get(){return Lr==null&&di(!1),Lr}});function di(d=!1){d?Lr=null:(Lr=m.getBoundingClientRect(),Ft("syncRect",Lr))}function Rh(d,y,S,k,T,N,D){se._lock||Ar&&d!=null&&d.movementX==0&&d.movementY==0||(Oc(d,y,S,k,T,N,D,!1,d!=null),d!=null?po(null,!0,!0):po(y,!0,!1))}function Oc(d,y,S,k,T,N,D,I,K){if(Lr==null&&di(!1),Un(d),d!=null)S=d.clientX-Lr.left,k=d.clientY-Lr.top;else{if(S<0||k<0){je=-10,Fe=-10;return}let[re,F]=ct.scales,ne=y.cursor.sync,[ue,et]=ne.values,[he,ke]=ne.scales,[Se,Re]=ct.match,Qe=y.axes[0].side%2==1,dn=L.ori==0?ce:ee,Ie=L.ori==1?ce:ee,ft=Qe?N:T,Kt=Qe?T:N,lt=Qe?k:S,rn=Qe?S:k;if(he!=null?S=Se(re,he)?u(ue,C[re],dn,0):-10:S=dn*(lt/ft),ke!=null?k=Re(F,ke)?u(et,C[F],Ie,0):-10:k=Ie*(rn/Kt),L.ori==1){let Kn=S;S=k,k=Kn}}K&&((S<=1||S>=ce-1)&&(S=vo(S,ce)),(k<=1||k>=ee-1)&&(k=vo(k,ee))),I?(_h=S,Ch=k,[Wo,Uo]=se.move(r,S,k)):(je=S,Fe=k)}const $h={width:0,height:0,left:0,top:0};function Ls(){As($h,!1)}let Oh,Nh,zh,Ah;function Lh(d,y,S,k,T,N,D){Ar=!0,Rt=$t=jt._x=jt._y=!1,Oc(d,y,S,k,T,N,D,!0,!1),d!=null&&(ot(gf,_d,Dh,!1),pi(eg,r,Wo,Uo,ce,ee,null));let{left:I,top:K,width:re,height:F}=nn;Oh=I,Nh=K,zh=re,Ah=F,Ls()}function Dh(d,y,S,k,T,N,D){Ar=jt._x=jt._y=!1,Oc(d,y,S,k,T,N,D,!1,!0);let{left:I,top:K,width:re,height:F}=nn,ne=re>0||F>0,ue=Oh!=I||Nh!=K||zh!=re||Ah!=F;if(ne&&ue&&As(nn),jt.setScale&&ne&&ue){let et=I,he=re,ke=K,Se=F;if(L.ori==1&&(et=K,he=F,ke=I,Se=re),Rt&&Vo(E,sr(et,E),sr(et+he,E)),$t)for(let Re in C){let Qe=C[Re];Re!=E&&Qe.from==null&&Qe.min!=ge&&Vo(Re,sr(ke+Se,Re),sr(ke,Re))}Ls()}else se.lock&&(se._lock=!se._lock,se._lock||po(null,!0,!1));d!=null&&(rr(gf,_d),pi(gf,r,je,Fe,ce,ee,null))}function mx(d,y,S,k,T,N,D){if(se._lock)return;Un(d);let I=Ar;if(Ar){let K=!0,re=!0,F=10,ne,ue;L.ori==0?(ne=Rt,ue=$t):(ne=$t,ue=Rt),ne&&ue&&(K=je<=F||je>=ce-F,re=Fe<=F||Fe>=ee-F),ne&&K&&(je=je{let T=ct.match[2];S=T(r,y,S),S!=-1&&ir(S,k,!0,!1)},se.show&&(ot(eg,m,Lh),ot(J0,m,Rh),ot(tg,m,d=>{Un(d),di(!1)}),ot(ng,m,mx),ot(rg,m,Bh),Rd.add(r),r.syncRect=di);const Ds=r.hooks=e.hooks||{};function Ft(d,y,S){d in Ds&&Ds[d].forEach(k=>{k.call(null,r,y,S)})}(e.plugins||[]).forEach(d=>{for(let y in d.hooks)Ds[y]=(Ds[y]||[]).concat(d.hooks[y])});const Fh=(d,y,S)=>S,ct=dt({key:null,setSeries:!1,filters:{pub:pg,sub:pg},scales:[E,x[1]?x[1].scale:null],match:[hg,hg,Fh],values:[null,null]},se.sync);ct.match.length==2&&ct.match.push(Fh),se.sync=ct;const Ih=ct.key,Nc=Cw(Ih);function pi(d,y,S,k,T,N,D){ct.filters.pub(d,y,S,k,T,N,D)&&Nc.pub(d,y,S,k,T,N,D)}Nc.sub(r);function gx(d,y,S,k,T,N,D){ct.filters.sub(d,y,S,k,T,N,D)&&Yo[d](null,y,S,k,T,N,D)}r.pub=gx;function vx(){Nc.unsub(r),Rd.delete(r),xt.clear(),Td(tu,Ml,jh),f.remove(),ae==null||ae.remove(),Ft("destroy")}r.destroy=vx;function zc(){Ft("init",e,t),yh(t||e.data,!1),Y[E]?Mc(E,Y[E]):gc(),uo=nn.show,cn=Q=!0,ie(e.width,e.height)}return x.forEach(gh),_.forEach(Qw),n?n instanceof HTMLElement?(n.appendChild(f),zc()):n(r,zc):zc(),r}Lt.assign=dt;Lt.fmtNum=sh;Lt.rangeNum=nu;Lt.rangeLog=sc;Lt.rangeAsinh=lh;Lt.orient=Fo;Lt.pxRatio=Ee;Lt.join=jP;Lt.fmtDate=ah,Lt.tzDate=XP;Lt.sync=Cw;{Lt.addGap=z3,Lt.clipGaps=cc;let e=Lt.paths={points:$w};e.linear=Nw,e.stepped=D3,e.bars=B3,e.spline=F3}const Z3=Object.freeze(Object.defineProperty({__proto__:null,default:Lt},Symbol.toStringTag,{value:"Module"}));function q3(e,t){return Qy(e,{formatSubMilliseconds:!0,compact:t}).split(" ").slice(0,2).join(" ")}function Lg(e){return Xy(e)}const Dg=Lt.fmtDate("{YYYY}-{MM}-{DD} {HH}:{mm}:{ss}");function hh(e,t,n){switch(e){case"duration":return q3(t,n);case"bytes":return Lg(t);case"bps":return Lg(t)+"/s";case"counter":return Q0(t).format("0.[0]a");case"rps":return Q0(t).format("0.[00]a")+"/s";case"date":return Dg(t);case"timestamp":return Dg(new Date(t*1e3));default:return isNaN(t)||t==null?"0":t.toFixed(2)}}const Sf=["#7b65fa","#65d1fa","#af8b47","#fa7765","#4792af","#af5347","#4f5aaf","#9e65fa","#d95f02","#1b9e77","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"];function Bg(e){return function(t,n,r,o){return o==null?"--":n==null?"":hh(e,n)}}class vs{constructor(t,n){this.data=vs.buildData(t,n),this.series=vs.buildSeries(this.data,n)}static buildData(t,n){const r=t.values;let o=[],l=r[ll];if(!Array.isArray(l))return o;o.push(l);for(var i in n){if(!Array.isArray(r[i])){o.push(Array(l.length));continue}o.push(r[i])}return o}static buildSeries(t,n){const r=[{value:Bg("timestamp")}],o=Object.keys(n);for(var l=0;ll&&Array.isArray(t[l+1])})}return r}}var Dw={exports:{}};const J3=wx(Z3);(function(e,t){(function(r,o){e.exports=o($,J3)})(Vr,(n,r)=>(()=>{var o={"./common/index.ts":(u,a,f)=>{f.r(a),f.d(a,{dataMatch:()=>h,optionsUpdateState:()=>c});var p=function(g,m){var b={};for(var w in g)Object.prototype.hasOwnProperty.call(g,w)&&m.indexOf(w)<0&&(b[w]=g[w]);if(g!=null&&typeof Object.getOwnPropertySymbols=="function")for(var v=0,w=Object.getOwnPropertySymbols(g);v{u.exports=n},uplot:u=>{u.exports=r}},l={};function i(u){var a=l[u];if(a!==void 0)return a.exports;var f=l[u]={exports:{}};return o[u](f,f.exports,i),f.exports}i.n=u=>{var a=u&&u.__esModule?()=>u.default:()=>u;return i.d(a,{a}),a},i.d=(u,a)=>{for(var f in a)i.o(a,f)&&!i.o(u,f)&&Object.defineProperty(u,f,{enumerable:!0,get:a[f]})},i.o=(u,a)=>Object.prototype.hasOwnProperty.call(u,a),i.r=u=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(u,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(u,"__esModule",{value:!0})};var s={};return(()=>{/*!*******************************!*\ - !*** ./react/uplot-react.tsx ***! - \*******************************/i.r(s),i.d(s,{default:()=>h});var u=i("react"),a=i.n(u),f=i("uplot"),p=i.n(f),c=i("./common/index.ts");function h(g){var m=g.options,b=g.data,w=g.target,v=g.onDelete,x=g.onCreate,_=g.resetScales,C=_===void 0?!0:_,M=(0,u.useRef)(null),E=(0,u.useRef)(null),O=(0,u.useRef)(m),z=(0,u.useRef)(w),P=(0,u.useRef)(b),L=(0,u.useRef)(x),U=(0,u.useRef)(v);(0,u.useEffect)(function(){L.current=x,U.current=v});var W=(0,u.useCallback)(function(Y){var le;Y&&((le=U.current)===null||le===void 0||le.call(U,Y),Y.destroy(),M.current=null)},[]),G=(0,u.useCallback)(function(){var Y,le=new(p())(O.current,P.current,z.current||E.current);M.current=le,(Y=L.current)===null||Y===void 0||Y.call(L,le)},[]);return(0,u.useEffect)(function(){return G(),function(){W(M.current)}},[G,W]),(0,u.useEffect)(function(){if(O.current!==m){var Y=(0,c.optionsUpdateState)(O.current,m);O.current=m,!M.current||Y==="create"?(W(M.current),G()):Y==="update"&&M.current.setSize({width:m.width,height:m.height})}},[m,G,W]),(0,u.useEffect)(function(){P.current!==b&&(M.current?(0,c.dataMatch)(P.current,b)||(C?M.current.setData(b,!0):(M.current.setData(b,!1),M.current.redraw())):(P.current=b,G()),P.current=b)},[b,C,G]),(0,u.useEffect)(function(){return z.current!==w&&(z.current=w,G()),function(){return W(M.current)}},[w,G,W]),w?null:a().createElement("div",{ref:E})}})(),s=s.default,s})())})(Dw);var eR=Dw.exports;const Od=Ad(eR);function tR(e){let t;function n(l){t=document.createElement("div"),t.className="u-tooltip",t.style.display="none",l.over.appendChild(t),l.over.onmouseleave=()=>{t.style.display="none"}}function r(l){o(l)}function o(l){const i=l.over.getBoundingClientRect();t.style.display="block";let s=nR(l);if(!s){t.style.display="none";return}t.innerHTML=s;const{left:u,top:a}=l.cursor;t.innerHTML=s,ul.over.focus()}}}function nR(e){const{idx:t}=e.cursor;if(t==null)return"";let r=``;for(var o=1;o`}return r+="
${e.legend.values[0]._}
${rR(l,i)}${s}${u}
",r}function rR(e,t){return``}var Bw=function(){if(typeof Map<"u")return Map;function e(t,n){var r=-1;return t.some(function(o,l){return o[0]===n?(r=l,!0):!1}),r}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(n){var r=e(this.__entries__,n),o=this.__entries__[r];return o&&o[1]},t.prototype.set=function(n,r){var o=e(this.__entries__,n);~o?this.__entries__[o][1]=r:this.__entries__.push([n,r])},t.prototype.delete=function(n){var r=this.__entries__,o=e(r,n);~o&&r.splice(o,1)},t.prototype.has=function(n){return!!~e(this.__entries__,n)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(n,r){r===void 0&&(r=null);for(var o=0,l=this.__entries__;o0},e.prototype.connect_=function(){!Nd||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),uR?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Nd||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var n=t.propertyName,r=n===void 0?"":n,o=aR.some(function(l){return!!~r.indexOf(l)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),jw=function(e,t){for(var n=0,r=Object.keys(t);n"u"||!(Element instanceof Object))){if(!(t instanceof Yl(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(t)||(n.set(t,new yR(t)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(t instanceof Yl(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(t)&&(n.delete(t),n.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(n){n.isActive()&&t.activeObservations_.push(n)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,n=this.activeObservations_.map(function(r){return new wR(r.target,r.broadcastRect())});this.callback_.call(t,n,t),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),Iw=typeof WeakMap<"u"?new WeakMap:new Bw,Hw=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=cR.getInstance(),r=new xR(t,n,this);Iw.set(this,r)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Hw.prototype[e]=function(){var t;return(t=Iw.get(this))[e].apply(t,arguments)}});var SR=function(){return typeof lu.ResizeObserver<"u"?lu.ResizeObserver:Hw}();function bR(e,t,n){var r=this,o=$.useRef(null),l=$.useRef(0),i=$.useRef(null),s=$.useRef([]),u=$.useRef(),a=$.useRef(),f=$.useRef(e),p=$.useRef(!0);$.useEffect(function(){f.current=e},[e]);var c=!t&&t!==0&&typeof window<"u";if(typeof e!="function")throw new TypeError("Expected a function");t=+t||0;var h=!!(n=n||{}).leading,g=!("trailing"in n)||!!n.trailing,m="maxWait"in n,b=m?Math.max(+n.maxWait||0,t):null;$.useEffect(function(){return p.current=!0,function(){p.current=!1}},[]);var w=$.useMemo(function(){var v=function(O){var z=s.current,P=u.current;return s.current=u.current=null,l.current=O,a.current=f.current.apply(P,z)},x=function(O,z){c&&cancelAnimationFrame(i.current),i.current=c?requestAnimationFrame(O):setTimeout(O,z)},_=function(O){if(!p.current)return!1;var z=O-o.current;return!o.current||z>=t||z<0||m&&O-l.current>=b},C=function(O){return i.current=null,g&&s.current?v(O):(s.current=u.current=null,a.current)},M=function O(){var z=Date.now();if(_(z))return C(z);if(p.current){var P=t-(z-o.current),L=m?Math.min(P,b-(z-l.current)):P;x(O,L)}},E=function(){var O=Date.now(),z=_(O);if(s.current=[].slice.call(arguments),u.current=r,o.current=O,z){if(!i.current&&p.current)return l.current=o.current,x(M,t),h?v(o.current):a.current;if(m)return x(M,t),v(o.current)}return i.current||x(M,t),a.current};return E.cancel=function(){i.current&&(c?cancelAnimationFrame(i.current):clearTimeout(i.current)),l.current=0,s.current=o.current=u.current=i.current=null},E.isPending=function(){return!!i.current},E.flush=function(){return i.current?C(Date.now()):a.current},E},[h,m,t,b,g,c]);return w}var Ww={},zd={};(function(e){var t=Vr&&Vr.__assign||function(){return t=Object.assign||function(c){for(var h,g=1,m=arguments.length;g"u"||c===null){var m=typeof g=="function"?g():g,b=i.errorCreator(n.NoValue,h,m);throw i.errorReporter&&i.errorReporter(n.NoValue,b,h,m),b}return c},f=function(c,h,g){var m=i.warningReporter;if(typeof c=="boolean"){if(!c){var b=typeof g=="function"?g():g;e.assert(m,"assert.soft must have warningReporter configured, see https://www.npmjs.com/package/assert-ts#configuration")(n.Condition,h,b)}return c}if(c==null){var b=typeof g=="function"?g():g;return e.assert(m,"assert.soft must have warningReporter configured, see https://www.npmjs.com/package/assert-ts#configuration")(n.NoValue,h,b),!1}return!0},p=a;p.soft=f,e.assert=p})(zd);(function(e){var t=Vr&&Vr.__createBinding||(Object.create?function(o,l,i,s){s===void 0&&(s=i),Object.defineProperty(o,s,{enumerable:!0,get:function(){return l[i]}})}:function(o,l,i,s){s===void 0&&(s=i),o[s]=l[i]}),n=Vr&&Vr.__exportStar||function(o,l){for(var i in o)i!=="default"&&!Object.prototype.hasOwnProperty.call(l,i)&&t(l,o,i)};Object.defineProperty(e,"__esModule",{value:!0});var r=zd;n(zd,e),e.default=r.assert})(Ww);const kR=e=>e==null;var Fg,Ig;(function(e){e.GET="get",e.POST="post",e.PUT="put",e.DELETE="delete"})(Fg||(Fg={})),function(e){e[e.Ok=200]="Ok",e[e.Created=201]="Created",e[e.Accepted=202]="Accepted",e[e.NoContent=204]="NoContent",e[e.MovedPermanently=301]="MovedPermanently",e[e.Found=302]="Found",e[e.SeeOther=303]="SeeOther",e[e.BadRequest=400]="BadRequest",e[e.Unauthorised=401]="Unauthorised",e[e.PaymentRequired=402]="PaymentRequired",e[e.Forbidden=403]="Forbidden",e[e.NotFound=404]="NotFound",e[e.InternalServerError=500]="InternalServerError",e[e.NotImplemented=501]="NotImplemented",e[e.BadGateway=502]="BadGateway",e[e.ServiceUnavailable=503]="ServiceUnavailable",e[e.GatewayTimeout=504]="GatewayTimeout"}(Ig||(Ig={}));const _R=e=>e;var Lo;(function(e){e.development="development",e.test="test",e.production="production"})(Lo||(Lo={}));const mh=Lo.production||Lo.development;Lo.development;Lo.test;Lo.production;const Uw=(e,{debounceDelay:t=0,initialValues:n={width:0,height:0},transformFunc:r=_R,maxDifference:o=10}={})=>{const[{width:l,height:i},s]=$.useState({width:n.width,height:n.height}),u=$.useRef({width:n.width,height:n.height}),a=$.useCallback(r,[r]);Ww.assert(!!e,"You must pass a valid ref to useParentSize");const f=bR(c=>{s(c)},t,{leading:!0}),p=e.current;return $.useLayoutEffect(()=>{if(kR(p))return void s({width:l,height:i});const c=new SR(h=>{if(!Array.isArray(h)||h.length!==1)return;const g=h[0],m=Math.round(g.contentRect.width),b=Math.round(g.contentRect.height),w={width:m,height:b},v=Math.abs(m-u.current.width),x=Math.abs(b-u.current.height);(v>o||x>o)&&(u.current.height=b,u.current.width=m,f(w))});return requestAnimationFrame(()=>c.observe(p)),()=>{p&&(c==null||c.unobserve(p))}},[o,f,i,p,l]),$.useMemo(()=>a({width:l,height:i}),[i,a,l])},CR=Lt.sync("chart");function Vw(e){const t=new vs($.useContext(Ts),e.series),n=$.useRef(null),{width:r}=Uw(n);if(t.data.lengthu.map(a=>hh(i,a)),o.axes[l].size=70)}}return e.plain?(o.cursor.show=!1,R.jsx(Od,{options:o,data:t.data})):R.jsx(Vy,{ref:n,children:R.jsx(Od,{options:o,data:t.data})})}const ER=[[3600*24*365,"{YYYY}",null,null,null,null,null,null,1],[3600*24*28,"{MMM}",` -{YYYY}`,null,null,null,null,null,1],[3600*24,"{MM}-{DD}",` -{YYYY}`,null,null,null,null,null,1],[3600,"{HH}",` -{YYYY}-{MM}-{DD}`,null,` -{MM}-{DD}`,null,null,null,1],[60,"{HH}:{mm}",` -{YYYY}-{MM}-{DD}`,null,` -{MM}-{DD}`,null,null,null,1],[1,":{ss}",` -{YYYY}-{MM}-{DD} {HH}:{mm}`,null,` -{MM}-{DD} {HH}:{mm}`,null,` -{HH}:{mm}`,null,1],[.001,":{ss}.{fff}",` -{YYYY}-{MM}-{DD} {HH}:{mm}`,null,` -{MM}-{DD} {HH}:{mm}`,null,` -{HH}:{mm}`,null,1]];function TR(e){const t=[];if(!jo(e))return t;let n={snapshot:eu("snapshot"),cumulative:eu("cumulative")};for(let r=0;r :not(style)":{m:1}},children:[R.jsx(df,{color:"primary","aria-label":"Print",size:"small",onClick:window.print,children:R.jsx(QM,{})}),R.jsx(df,{color:"primary","aria-label":"Download",size:"small",download:"k6-report.html",href:"/report",children:R.jsx(XM,{})}),R.jsx(df,{color:"primary","aria-label":"Open",size:"small",onClick:()=>window.open("/report"),children:R.jsx(ZM,{})})]}),R.jsxs("div",{className:"Report",children:[R.jsx(lo,{className:"PageHeader",component:"div",children:"k6 report"}),TR(e.tabs),R.jsx(RR,{title:"Summary",description:"This section provides a summary of the test run metrics. The tables contains the aggregated values of the metrics for the entire test run."})]})]})}function OR(e){return R.jsx(R.Fragment,{children:R.jsx("div",{className:"Summary",children:R.jsx(ic.Provider,{value:ew(),children:R.jsxs(pt,{container:!0,spacing:3,columns:12,children:[R.jsx(pt,{item:!0,xs:12,children:R.jsx(Yr,{type:"trend",caption:"Trends"})},"trends"),R.jsx(pt,{item:!0,xs:7,children:R.jsx(Yr,{type:"counter",caption:"Counters"})},"counters"),R.jsx(pt,{item:!0,xs:5,children:R.jsxs(pt,{container:!0,spacing:3,columns:1,children:[R.jsx(pt,{item:!0,xs:1,children:R.jsx(Yr,{type:"rate",caption:"Rates"})},"rates"),R.jsx(pt,{item:!0,xs:1,children:R.jsx(Yr,{type:"gauge",caption:"Gauges"})},"gauges")]})})]})},"summary")})})}function NR(e){const t=rc(),n=$.useContext(Ts),r={};r[e.metric]={label:""};const o=new vs(n,r),l=$.useRef(null),{width:i,height:s}=Uw(l),u=n.values[e.metric];var a=Array.isArray(u)&&u.length!=0?Number(u.slice(-1)):0;a=hh(e.format,a,!0);let f={width:i,height:32,title:a,series:o.series,axes:[{show:!1},{show:!1}],legend:{show:!1},cursor:{show:!1}};const p=e.failure?t.palette.error.main:t.palette.primary.main;return f.series[1].points={show:!1},f.series[1].stroke=p,f.series[1].fill=p+"40",R.jsx(Vy,{className:"summary-panel",sx:{color:p},children:R.jsxs(WE,{children:[R.jsx(lo,{sx:{fontSize:"0.8rem"},color:"text.secondary",gutterBottom:!0,align:"center",children:e.title}),R.jsx("div",{ref:l,children:R.jsx(Od,{options:f,data:o.data})})]})})}function zR(e){const t=[];if(!jo(e))return t;for(const n of e)t.push(R.jsx(pt,{item:!0,xs:1,children:NR(n)},n.title));return t}function AR(e){const t=[];if(!jo(e))return t;for(const n of e)t.push(R.jsx(pt,{item:!0,lg:6,xs:12,children:Vw(n)},n.title));return t}function LR(e){return R.jsxs(R.Fragment,{children:[R.jsx(Es,{children:R.jsx(pt,{container:!0,spacing:1,marginBottom:1,columns:6,children:zR(e.panels)})}),R.jsx(pt,{container:!0,spacing:1,children:AR(e.charts)})]})}function Ea(e){const{children:t,value:n,index:r,...o}=e;return R.jsx(lo,{component:"div",role:"tabpanel",hidden:n!==r,id:`scrollable-auto-tabpanel-${r}`,"aria-labelledby":`scrollable-auto-tab-${r}`,...o,children:R.jsx(Es,{p:3,children:t})})}Ea.propTypes={children:af.PropTypes.node,index:af.PropTypes.any.isRequired,value:af.PropTypes.any.isRequired};function bf(e){return{id:`scrollable-auto-tab-${e}`,"aria-controls":`scrollable-auto-tabpanel-${e}`}}function DR(e,t){const n=[];if(!jo(e))return n;let r={snapshot:eu("snapshot"),cumulative:eu("cumulative")};for(let l=0;l { - for (const item of collection) { - if (item.id == id) { - return item - } - } - - let item = { id: id } - collection.push(item) - - return item - } - - tab.chart = id => lookup(tab.charts, id) - tab.panel = id => lookup(tab.panels, id) - - return tab - } -} - -window.defaultConfig = defaultConfig diff --git a/assets/ui/config.js b/assets/ui/config.js deleted file mode 100644 index 0e44faf..0000000 --- a/assets/ui/config.js +++ /dev/null @@ -1 +0,0 @@ -export default defaultConfig diff --git a/assets/ui/init.js b/assets/ui/init.js deleted file mode 100644 index 6508920..0000000 --- a/assets/ui/init.js +++ /dev/null @@ -1,3 +0,0 @@ -import config from "./config.js" - -window.config = config diff --git a/assets/yarn.lock b/assets/yarn.lock index dbdb8b8..3f12e52 100644 --- a/assets/yarn.lock +++ b/assets/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -24,24 +29,24 @@ integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== "@babel/core@^7.21.3", "@babel/core@^7.22.1": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35" - integrity sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw== + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.11.tgz#8033acaa2aa24c3f814edaaa057f3ce0ba559c24" + integrity sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.10" "@babel/generator" "^7.22.10" "@babel/helper-compilation-targets" "^7.22.10" "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.10" - "@babel/parser" "^7.22.10" + "@babel/helpers" "^7.22.11" + "@babel/parser" "^7.22.11" "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.10" - "@babel/types" "^7.22.10" + "@babel/traverse" "^7.22.11" + "@babel/types" "^7.22.11" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.2" + json5 "^2.2.3" semver "^6.3.1" "@babel/generator@^7.22.10": @@ -144,14 +149,14 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== -"@babel/helpers@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.10.tgz#ae6005c539dfbcb5cd71fb51bfc8a52ba63bc37a" - integrity sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw== +"@babel/helpers@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.11.tgz#b02f5d5f2d7abc21ab59eeed80de410ba70b056a" + integrity sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg== dependencies: "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.10" - "@babel/types" "^7.22.10" + "@babel/traverse" "^7.22.11" + "@babel/types" "^7.22.11" "@babel/highlight@^7.22.10": version "7.22.10" @@ -162,10 +167,10 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.22.10", "@babel/parser@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" - integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== +"@babel/parser@^7.22.11", "@babel/parser@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.11.tgz#becf8ee33aad2a35ed5607f521fe6e72a615f905" + integrity sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g== "@babel/plugin-syntax-jsx@^7.22.5": version "7.22.5" @@ -192,10 +197,10 @@ "@babel/plugin-syntax-jsx" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/runtime@^7.1.5", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" - integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== +"@babel/runtime@^7.1.5", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.22.10", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.11.tgz#7a9ba3bbe406ad6f9e8dd4da2ece453eb23a77a4" + integrity sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA== dependencies: regenerator-runtime "^0.14.0" @@ -208,10 +213,10 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/traverse@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.10.tgz#20252acb240e746d27c2e82b4484f199cf8141aa" - integrity sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig== +"@babel/traverse@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.11.tgz#71ebb3af7a05ff97280b83f05f8865ac94b2027c" + integrity sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ== dependencies: "@babel/code-frame" "^7.22.10" "@babel/generator" "^7.22.10" @@ -219,15 +224,15 @@ "@babel/helper-function-name" "^7.22.5" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.10" - "@babel/types" "^7.22.10" + "@babel/parser" "^7.22.11" + "@babel/types" "^7.22.11" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.21.3", "@babel/types@^7.22.10", "@babel/types@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" - integrity sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg== +"@babel/types@^7.21.3", "@babel/types@^7.22.10", "@babel/types@^7.22.11", "@babel/types@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.11.tgz#0e65a6a1d4d9cbaa892b2213f6159485fe632ea2" + integrity sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg== dependencies: "@babel/helper-string-parser" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.5" @@ -472,6 +477,84 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.0", "@eslint-community/regexpp@^4.6.1": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005" + integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg== + +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.48.0": + version "8.48.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" + integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== + +"@floating-ui/core@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.4.1.tgz#0d633f4b76052668afb932492ac452f7ebe97f17" + integrity sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ== + dependencies: + "@floating-ui/utils" "^0.1.1" + +"@floating-ui/dom@^1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.1.tgz#88b70defd002fe851f17b4a25efb2d3c04d7a8d7" + integrity sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw== + dependencies: + "@floating-ui/core" "^1.4.1" + "@floating-ui/utils" "^0.1.1" + +"@floating-ui/react-dom@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.2.tgz#fab244d64db08e6bed7be4b5fcce65315ef44d20" + integrity sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ== + dependencies: + "@floating-ui/dom" "^1.5.1" + +"@floating-ui/utils@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.1.tgz#1a5b1959a528e374e8037c4396c3e825d6cf4a83" + integrity sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw== + +"@humanwhocodes/config-array@^0.11.10": + version "0.11.10" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" + integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "@hutson/parse-repository-url@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" @@ -489,10 +572,10 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@jest/schemas@^29.6.0": - version "29.6.0" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040" - integrity sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ== +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: "@sinclair/typebox" "^0.27.8" @@ -607,36 +690,37 @@ yargs "16.2.0" yargs-parser "20.2.4" -"@mui/base@5.0.0-beta.11": - version "5.0.0-beta.11" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.11.tgz#0124d336f1931c6cd5f0008d015df5bd8fafd3a8" - integrity sha512-FdKZGPd8qmC3ZNke7CNhzcEgToc02M6WYZc9hcBsNQ17bgAd3s9F//1bDDYgMVBYxDM71V0sv/hBHlOY4I1ZVA== +"@mui/base@5.0.0-beta.12": + version "5.0.0-beta.12" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.12.tgz#131882930bdbe236dd835867bf6222a993b8d219" + integrity sha512-tZjjXNAyUpwSDT1uRliZMhRQkWYzELJ8Qi61EuOMRpi36HIwnK2T7Nr4RI423Sv8G2EEikDAZj7je33eNd73NQ== dependencies: - "@babel/runtime" "^7.22.6" + "@babel/runtime" "^7.22.10" "@emotion/is-prop-valid" "^1.2.1" + "@floating-ui/react-dom" "^2.0.1" "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.5" + "@mui/utils" "^5.14.6" "@popperjs/core" "^2.11.8" clsx "^2.0.0" prop-types "^15.8.1" react-is "^18.2.0" -"@mui/core-downloads-tracker@^5.14.5": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.5.tgz#c5854b89d57520c77253a79b20b784d5c2903fb6" - integrity sha512-+wpGH1USwPcKMFPMvXqYPC6fEvhxM3FzxC8lyDiNK/imLyyJ6y2DPb1Oue7OGIKJWBmYBqrWWtfovrxd1aJHTA== +"@mui/core-downloads-tracker@^5.14.6": + version "5.14.6" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.6.tgz#8cbc3441a630e1810a945e408e5025bdc99ea2f7" + integrity sha512-QZEU3pyGWLuaHbxvOlShol7U1FVgzWBR0OH9H8D7L8w4/vto5N5jJVvlqFQS3T0zbR6YGHxFaiL6Ky87jQg7aw== "@mui/material@^5.13.0": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.5.tgz#4610b381fd159cd208c28e1d1f29c303ea24a518" - integrity sha512-4qa4GMfuZH0Ai3mttk5ccXP8a3sf7aPlAJwyMrUSz6h9hPri6BPou94zeu3rENhhmKLby9S/W1y+pmficy8JKA== - dependencies: - "@babel/runtime" "^7.22.6" - "@mui/base" "5.0.0-beta.11" - "@mui/core-downloads-tracker" "^5.14.5" - "@mui/system" "^5.14.5" + version "5.14.6" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.6.tgz#12cbb716a7f70859764be310bb9b2f5ffc0da818" + integrity sha512-C3UgGrmtvcGkQkm0ONBU7bTdapTjQc2Se3b2354xMmU7lgSgW7VM6EP9wIH5XqqoJ60m9l/s9kbTWX0Y+EaWvA== + dependencies: + "@babel/runtime" "^7.22.10" + "@mui/base" "5.0.0-beta.12" + "@mui/core-downloads-tracker" "^5.14.6" + "@mui/system" "^5.14.6" "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.5" + "@mui/utils" "^5.14.6" "@types/react-transition-group" "^4.4.6" clsx "^2.0.0" csstype "^3.1.2" @@ -644,35 +728,35 @@ react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.14.5": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.5.tgz#834e1569c31e2644665f98d902def79014053017" - integrity sha512-cC4C5RrpXpDaaZyH9QwmPhRLgz+f2SYbOty3cPkk4qPSOSfif2ZEcDD9HTENKDDd9deB+xkPKzzZhi8cxIx8Ig== +"@mui/private-theming@^5.14.6": + version "5.14.6" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.6.tgz#bd80c91bea94b6e54a74764f8d3fb0d4ec418acb" + integrity sha512-3VBLFGizBXfofyk33bwRg6t9L648aKnLmOKPfY1wFuiXq3AEYwobK65iDci/tHKxm/VKbZ6A7PFjLejvB3EvRQ== dependencies: - "@babel/runtime" "^7.22.6" - "@mui/utils" "^5.14.5" + "@babel/runtime" "^7.22.10" + "@mui/utils" "^5.14.6" prop-types "^15.8.1" -"@mui/styled-engine@^5.13.2": - version "5.13.2" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.13.2.tgz#c87bd61c0ab8086d34828b6defe97c02bcd642ef" - integrity sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw== +"@mui/styled-engine@^5.14.6": + version "5.14.6" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.6.tgz#a4034ab51981ecf673275b2c1d1da71deb94317f" + integrity sha512-I6zeu/OP1Hk4NsX1Oj85TiYl1dER0JMsLJVn76J1Ihl24A5EbiZQKJp3Mn+ufA79ypkdAvM9aQCAQyiVBFcUHg== dependencies: - "@babel/runtime" "^7.21.0" + "@babel/runtime" "^7.22.10" "@emotion/cache" "^11.11.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/system@^5.14.5": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.5.tgz#614394c4183d90df82c540e0e736ba72c1f95f8e" - integrity sha512-mextXZHDeGcR7E1kx43TRARrVXy+gI4wzpUgNv7MqZs1dvTVXQGVeAT6ydj9d6FUqHBPMNLGV/21vJOrpqsL+w== +"@mui/system@^5.14.6": + version "5.14.6" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.6.tgz#621eae10c4dde0a2ab566ac09c26f7becfb7ba80" + integrity sha512-/n0ae1MegWjiV1BpRU8jgg4E0zBjeB2VYsT/68ag/xaDuq3/TaDKJeT9REIvyBvwlG3CI3S2O+tRELktxCD1kg== dependencies: - "@babel/runtime" "^7.22.6" - "@mui/private-theming" "^5.14.5" - "@mui/styled-engine" "^5.13.2" + "@babel/runtime" "^7.22.10" + "@mui/private-theming" "^5.14.6" + "@mui/styled-engine" "^5.14.6" "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.5" + "@mui/utils" "^5.14.6" clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" @@ -682,12 +766,12 @@ resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.4.tgz#b6fade19323b754c5c6de679a38f068fd50b9328" integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA== -"@mui/utils@^5.14.5": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.5.tgz#98fb6060610b793a8478e70ffe5e4ed5bd922dba" - integrity sha512-6Hzw63VR9C5xYv+CbjndoRLU6Gntal8rJ5W+GUzkyHrGWIyYPWZPa6AevnyGioySNETATe1H9oXS8f/7qgIHJA== +"@mui/utils@^5.14.6": + version "5.14.6" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.6.tgz#614338f781faf21535fbf1094b6691aaee1ff472" + integrity sha512-AznpqLu6hrFnpHgcvsSSMCG+cDbkcCYfo+daUwBVReNYv4l+NQ8+wvBAF4aUMi155N7xWbbgh0cyKs6Wdsm3aA== dependencies: - "@babel/runtime" "^7.22.6" + "@babel/runtime" "^7.22.10" "@types/prop-types" "^15.7.5" "@types/react-is" "^18.2.1" prop-types "^15.8.1" @@ -706,7 +790,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -766,82 +850,83 @@ read-package-json-fast "^3.0.0" which "^3.0.0" -"@nrwl/devkit@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.6.0.tgz#f44afd175743fc293606f90f8d67f93f149326df" - integrity sha512-xZEN6wfA1uJwv+FVRQFOHsCcpvGvIYGx2zutbzungDodWkfzlJ3tzIGqYjIpPCBVT83erM6Gscnka2W46AuKfA== +"@nrwl/devkit@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.7.4.tgz#c69e3ae4455447dc3a0cc5515c149692aadba940" + integrity sha512-Gt2q3cqDWzGP1woavGIo4bl8g9YaXic/Xfsl7qPq0LHJedLj49p1vXetB0wawkavSE2MTyo7yDh6YDK/38XoLw== dependencies: - "@nx/devkit" "16.6.0" + "@nx/devkit" "16.7.4" -"@nrwl/tao@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.6.0.tgz#7920111d53b02cbb41b71deaf887745c1b0df61d" - integrity sha512-NQkDhmzlR1wMuYzzpl4XrKTYgyIzELdJ+dVrNKf4+p4z5WwKGucgRBj60xMQ3kdV25IX95/fmMDB8qVp/pNQ0Q== +"@nrwl/tao@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.7.4.tgz#2b2e2cc26ce6c50884da63e69ba8ccf0fcbb9455" + integrity sha512-hH03oF+yVmaf19UZfyLDSuVEh0KasU5YfYezuNsdRkXNdTU/WmpDrk4qoo0j6fVoMPrqbbPOn1YMRtulP2WyYA== dependencies: - nx "16.6.0" + nx "16.7.4" tslib "^2.3.0" -"@nx/devkit@16.6.0", "@nx/devkit@>=16.5.1 < 17": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.6.0.tgz#965668467ffb790e1c84c6853f377e7cc56f52be" - integrity sha512-rhJ0y+MSPHDuoZPxsOYdj/n5ks+gK74TIMgTb8eZgPT/uR86a4oxf62wUQXgECedR5HzLE2HunbnoLhhJXmpJw== +"@nx/devkit@16.7.4", "@nx/devkit@>=16.5.1 < 17": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.7.4.tgz#c03c308bc190a18642e0dc0c183323662c38c426" + integrity sha512-SLito+/TAeDYR+d7IIpp/sBJm41WM+nIevILv0TSQW4Pq0ylUy1nUvV8Pe7l1ohZccDrQuebMUWPwGO0hv8SeQ== dependencies: - "@nrwl/devkit" "16.6.0" + "@nrwl/devkit" "16.7.4" ejs "^3.1.7" + enquirer "~2.3.6" ignore "^5.0.4" semver "7.5.3" tmp "~0.2.1" tslib "^2.3.0" -"@nx/nx-darwin-arm64@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.6.0.tgz#5d64345403cf7806ce47e6c46ee97345a19933cf" - integrity sha512-8nJuqcWG/Ob39rebgPLpv2h/V46b9Rqqm/AGH+bYV9fNJpxgMXclyincbMIWvfYN2tW+Vb9DusiTxV6RPrLapA== - -"@nx/nx-darwin-x64@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.6.0.tgz#fc04680ed659bd73d7025cc6ca95bcff30878c2c" - integrity sha512-T4DV0/2PkPZjzjmsmQEyjPDNBEKc4Rhf7mbIZlsHXj27BPoeNjEcbjtXKuOZHZDIpGFYECGT/sAF6C2NVYgmxw== - -"@nx/nx-freebsd-x64@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.6.0.tgz#e85cf634c94269738d69df514baf42d13b21aac7" - integrity sha512-Ck/yejYgp65dH9pbExKN/X0m22+xS3rWF1DBr2LkP6j1zJaweRc3dT83BWgt5mCjmcmZVk3J8N01AxULAzUAqA== - -"@nx/nx-linux-arm-gnueabihf@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.6.0.tgz#6f8c76c1125d88a937a518ff0295230a84362f57" - integrity sha512-eyk/R1mBQ3X0PCSS+Cck3onvr3wmZVmM/+x0x9Ai02Vm6q9Eq6oZ1YtZGQsklNIyw1vk2WV9rJCStfu9mLecEw== - -"@nx/nx-linux-arm64-gnu@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.6.0.tgz#21ab044c9277133cb26dd73c4edc536965e0d15f" - integrity sha512-S0qFFdQFDmBIEZqBAJl4K47V3YuMvDvthbYE0enXrXApWgDApmhtxINXSOjSus7DNq9kMrgtSDGkBmoBot61iw== - -"@nx/nx-linux-arm64-musl@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.6.0.tgz#d4220c9deacf89753e720cec95198b812e703941" - integrity sha512-TXWY5VYtg2wX/LWxyrUkDVpqCyJHF7fWoVMUSlFe+XQnk9wp/yIbq2s0k3h8I4biYb6AgtcVqbR4ID86lSNuMA== - -"@nx/nx-linux-x64-gnu@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.6.0.tgz#8acdb3b18836c90d26ba127bd8cecb8efee97176" - integrity sha512-qQIpSVN8Ij4oOJ5v+U+YztWJ3YQkeCIevr4RdCE9rDilfq9RmBD94L4VDm7NRzYBuQL8uQxqWzGqb7ZW4mfHpw== - -"@nx/nx-linux-x64-musl@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.6.0.tgz#d7f1798ed74b4416f531d569dc42479a415b7022" - integrity sha512-EYOHe11lfVfEfZqSAIa1c39mx2Obr4mqd36dBZx+0UKhjrcmWiOdsIVYMQSb3n0TqB33BprjI4p9ZcFSDuoNbA== - -"@nx/nx-win32-arm64-msvc@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.6.0.tgz#90368c7a08609c07d25fa7004983b6821de6c65a" - integrity sha512-f1BmuirOrsAGh5+h/utkAWNuqgohvBoekQgMxYcyJxSkFN+pxNG1U68P59Cidn0h9mkyonxGVCBvWwJa3svVFA== - -"@nx/nx-win32-x64-msvc@16.6.0": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.6.0.tgz#9a6b74f923bb7113c41f078ec86994162b97df8b" - integrity sha512-UmTTjFLpv4poVZE3RdUHianU8/O9zZYBiAnTRq5spwSDwxJHnLTZBUxFFf3ztCxeHOUIfSyW9utpGfCMCptzvQ== +"@nx/nx-darwin-arm64@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.7.4.tgz#1a797805850444cc6c0aa56668bf6f832093d641" + integrity sha512-pRNjxn6KlcR6iGkU1j/1pzcogwXFv97pYiZaibpF7UV0vfdEUA3EETpDcs+hbNAcKMvVtn/TgN857/5LQ/lGUg== + +"@nx/nx-darwin-x64@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.7.4.tgz#53f681c86d9d8e8bcebfc8ba54dd7b2ec9f71207" + integrity sha512-GANXeabAAWRoF85WDla2ZPxtr8vnqvXjwyCIhRCda8hlKiVCpM98GemucN25z97G5H6MgyV9Dd9t9jrr2Fn0Og== + +"@nx/nx-freebsd-x64@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.7.4.tgz#df88ff9b6ed0b51723d76d711b9467a1a4726f00" + integrity sha512-zmBBDYjPaHhIHx1YASUJJIy+oz7mCrj5f0f3kOzfMraQOjkQZ0xYgNNUzBqmnYu1855yiphu94MkAMYJnbk0jw== + +"@nx/nx-linux-arm-gnueabihf@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.7.4.tgz#2cfac69e65237245560326039bb319691147daed" + integrity sha512-d3Cmz/vdtoSasTUANoh4ZYLJESNA3+PCP/HnXNqmrr6AEHo+T8DcI+qsamO3rmYUSFxTMAeMyoihZMU8OKGZ1A== + +"@nx/nx-linux-arm64-gnu@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.7.4.tgz#492fb66b804aa6154cd44ded6eaaf6cfcb32ea9f" + integrity sha512-W1u4O78lTHCwvUP0vakeKWFXeSZ13nYzbd6FARICnImY2my8vz41rLm6aU9TYWaiOGEGL2xKpHKSgiNwbLjhFw== + +"@nx/nx-linux-arm64-musl@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.7.4.tgz#ad32f35f05067e918eff9a97d8720f3923c034cb" + integrity sha512-Dc8IQFvhfH/Z3GmhBBNNxGd2Ehw6Y5SePEgJj1c2JyPdoVtc2OjGzkUaZkT4z5z77VKtju6Yi10T6Enps+y+kw== + +"@nx/nx-linux-x64-gnu@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.7.4.tgz#40271f7d21ef3ba0676c046b73c84cf9eb1ed94a" + integrity sha512-4B58C/pXeuovSznBOeicsxNieBApbGMoi2du8jR6Is1gYFPv4l8fFHQHHGAa1l5XJC5JuGJqFywS4elInWprNw== + +"@nx/nx-linux-x64-musl@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.7.4.tgz#8bd13692a0922df51c6305df93d69a3c66b4b716" + integrity sha512-spqqvEdGSSeV2ByJHkex5m8MRQfM6lQlnon25XgVBdPR47lKMWSikUsaWCiE7bVAFU9BFyWY2L4HfZ4+LiNY7A== + +"@nx/nx-win32-arm64-msvc@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.7.4.tgz#dfbe5b28c62c1c1ceadad12e79029f76e450d855" + integrity sha512-etNnbuCcSqAYOeDcS6si6qw0WR/IS87ovTzLS17ETKpdHcHN5nM4l02CQyupKiD58ShxrXHxXmvgBfbXxoN5Ew== + +"@nx/nx-win32-x64-msvc@16.7.4": + version "16.7.4" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.7.4.tgz#e4b270107e02e73451d7c5dc7c4237fffe18aa75" + integrity sha512-y6pugK6ino1wvo2FbgtXG2cVbEm3LzJwOSBKBRBXSWhUgjP7T92uGfOt6KVQKpaqDvS9lA9TO/2DcygcLHXh7A== "@octokit/auth-token@^3.0.0": version "3.0.4" @@ -972,6 +1057,18 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/utils@^2.3.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" + integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== + dependencies: + cross-spawn "^7.0.3" + fast-glob "^3.3.0" + is-glob "^4.0.3" + open "^9.1.0" + picocolors "^1.0.0" + tslib "^2.6.0" + "@popperjs/core@^2.11.8": version "2.11.8" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" @@ -1026,9 +1123,9 @@ picomatch "^2.2.2" "@rollup/pluginutils@^5.0.2": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.3.tgz#183126d69aeb1cfa23401d5a71cb4b8c16c4a4e0" - integrity sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g== + version "5.0.4" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.4.tgz#74f808f9053d33bafec0cc98e7b835c9667d32ba" + integrity sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" @@ -1042,9 +1139,9 @@ "@sigstore/protobuf-specs" "^0.2.0" "@sigstore/protobuf-specs@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.0.tgz#5801b2a4d10afe1577be6133be6b132b5677c18c" - integrity sha512-8ZhZKAVfXjIspDWwm3D3Kvj0ddbJ0HqDZ/pOs5cx88HpT8mVsotFrg7H1UMnXOuDHz6Zykwxn4mxG3QLuN+RUg== + version "0.2.1" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" + integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== "@sigstore/sign@^1.0.0": version "1.0.0" @@ -1150,71 +1247,78 @@ "@svgr/hast-util-to-babel-ast" "^7.0.0" svg-parser "^2.0.4" -"@swc/core-darwin-arm64@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.76.tgz#757f10c6482a44b8cea3e85b8ae714ce9b31b4b5" - integrity sha512-ovviEhZ/1E81Z9OGrO0ivLWk4VCa3I3ZzM+cd3gugglRRwVwtlIaoIYqY5S3KiCAupDd1+UCl5X7Vbio7a/V8g== - -"@swc/core-darwin-x64@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.76.tgz#edba4a4dbbc7454bc914fc8cf61545a74622d46f" - integrity sha512-tcySTDqs0SHCebtW35sCdcLWsmTEo7bEwx0gNL/spetqVT9fpFi6qU8qcnt7i2KaZHbeNl9g1aadu+Yrni+GzA== - -"@swc/core-linux-arm-gnueabihf@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.76.tgz#d998f0e51ebec03e8666f02cee3fc6e40ceaf680" - integrity sha512-apgzpGWy1AwoMF4urAAASsAjE7rEzZFIF+p6utuxhS7cNHzE0AyEVDYJbo+pzBdlZ8orBdzzsHtFwoEgKOjebA== - -"@swc/core-linux-arm64-gnu@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.76.tgz#4f4d98f699e92ebafb10ed75e468384a81ab128c" - integrity sha512-c3c0zz6S0eludqidDpuqbadE0WT3OZczyQxe9Vw8lFFXES85mvNGtwYzyGK2o7TICpsuHrndwDIoYpmpWk879g== - -"@swc/core-linux-arm64-musl@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.76.tgz#4341ca15e4a398de73af149c52c4d45b8cf5c4c8" - integrity sha512-Is3bpq7F2qtlnkzEeOD6HIZJPpOmu3q6c82lKww90Q0NnrlSluVMozTHJgwVoFZyizH7uLnk0LuNcEAWLnmJIw== - -"@swc/core-linux-x64-gnu@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.76.tgz#cc2e6f0f90f0e9d6dcb8bc62cd31172e0967b396" - integrity sha512-iwCeRzd9oSvUzqt7nU6p/ztceAWfnO9XVxBn502R5gs6QCBbE1HCKrWHDO77aKPK7ss+0NcIGHvXTd9L8/wRzw== - -"@swc/core-linux-x64-musl@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.76.tgz#ebc327df5e07aa02e41309e56590f505f1fc64c0" - integrity sha512-a671g4tW8kyFeuICsgq4uB9ukQfiIyXJT4V6YSnmqhCTz5mazWuDxZ5wKnx/1g5nXTl+U5cWH2TZaCJatp4GKA== - -"@swc/core-win32-arm64-msvc@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.76.tgz#34fb884d2ee2eec3382c01f712bde0f05e058a3b" - integrity sha512-+swEFtjdMezS0vKUhJC3psdSDtOJGY5pEOt4e8XOPvn7aQpKQ9LfF49XVtIwDSk5SGuWtVoLFzkSY3reWUJCyg== - -"@swc/core-win32-ia32-msvc@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.76.tgz#a0dc94357d72eca6572522ed1202b6476222c249" - integrity sha512-5CqwAykpGBJ3PqGLOlWGLGIPpBAG1IwWVDUfro3hhjQ7XJxV5Z1aQf5V5OJ90HJVtrEAVx2xx59UV/Dh081LOg== - -"@swc/core-win32-x64-msvc@1.3.76": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.76.tgz#eea647407895a5a410a459b2abf8572adb147927" - integrity sha512-CiMpWLLlR3Cew9067E7XxaLBwYYJ90r9EhGSO6V1pvYSWj7ET/Ppmtj1ZhzPJMqRXAP6xflfl5R5o4ee1m4WLA== +"@swc/core-darwin-arm64@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.80.tgz#18be1879ffc0a871a7397ccccf8a80278a794d60" + integrity sha512-rhoFTcQMUGfO7IkfOnopPSF6O0/aVJ58B7KueIKbvrMe6YvSfFj9QfObELFjYCcrJZTvUWBhig0QrsfPIiUphA== + +"@swc/core-darwin-x64@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.80.tgz#83413aed20751e836139be0aa2f6f419850bad41" + integrity sha512-0dOLedFpVXe+ugkKHXsqSxMKqvQYfFtibWbrZ7j8wOaErzSGPr0VpyWvepNVb9s046725kPXSw+fsGhqZR8wrw== + +"@swc/core-linux-arm-gnueabihf@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.80.tgz#caa6608103dfce820d071ca59cd52617e0c96804" + integrity sha512-QIjwP3PtDeHBDkwF6+ZZqdUsqAhORbMpxrw2jq3mHe4lQrxBttSFTq018vlMRo2mFEorOvXdadzaD9m+NymPrw== + +"@swc/core-linux-arm64-gnu@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.80.tgz#0ec3962eb196cc5f99b8540f89fafb75366092ce" + integrity sha512-cg8WriIueab58ZwkzXmIACnjSzFLzOBwxlC9k65gPXMNgCjab2YbqEYvAbjBqneuqaao02gW6tad2uhjgYaExw== + +"@swc/core-linux-arm64-musl@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.80.tgz#4c2f58fb10b6d163bf22ab517a3afacd7016d670" + integrity sha512-AhdCQ7QKx5mWrtpaOA1mFRiWWvuiiUtspvo0QSpspDetRKTND1rlf/3UB5+gp0kCeCNUTsVmJWU7fIA9ICZtXA== + +"@swc/core-linux-x64-gnu@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.80.tgz#de94d37953d46ac2321b96c35849beffaed60beb" + integrity sha512-+2e5oni1vOrLIjM5Q2/GIzK/uS2YEtuJqnjPvCK8SciRJsSl8OgVsRvyCDbmKeZNtJ2Q+o/O2AQ2w1qpAJG6jg== + +"@swc/core-linux-x64-musl@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.80.tgz#30e7dd46f30a8027bc6864c10666a98003f715ab" + integrity sha512-8OK9IlI1zpWOm7vIp1iXmZSEzLAwFpqhsGSEhxPavpOx2m54kLFdPcw/Uv3n461f6TCtszIxkGq1kSqBUdfUBA== + +"@swc/core-win32-arm64-msvc@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.80.tgz#cab6e1140c19b3576204da995f6dd719d6bb7417" + integrity sha512-RKhatwiAGlffnF6z2Mm3Ddid0v3KB+uf5m/Gc7N9zO/EUAV0PnHRuYuZSGyqodHmGFC+mK8YrCooFCEmHL9n+w== + +"@swc/core-win32-ia32-msvc@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.80.tgz#3da4715e77c6f1559a3a76cca80fddee9aa100fc" + integrity sha512-3jiiZzU/kaw7k4zUp1yMq1QiUe4wJVtCEXIhf+fKuBsIwm7rdvyK/+PIx5KHnZy4TGQnYczKBRhJA5nuBcrUCQ== + +"@swc/core-win32-x64-msvc@1.3.80": + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.80.tgz#2693dd16176b181f440127c822f7006ffba8d3ad" + integrity sha512-2eZtIoIWQBWqykfms92Zd37lveYOBWQTZjdooBGlsLHtcoQLkNpf1NXmR6TKY0yy8q6Yl3OhPvY+izjmO08MSg== "@swc/core@^1.3.61": - version "1.3.76" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.76.tgz#f5259bd718e11854d9bd3a05f91f40bca21dffbc" - integrity sha512-aYYTA2aVYkwJAZepQXtPnkUthhOfn8qd6rsh+lrJxonFrjmpI7RHt2tMDVTXP6XDX7fvnvrVtT1bwZfmBFPh0Q== + version "1.3.80" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.80.tgz#364570b0cd5bba7ff686888558bbfd6423317310" + integrity sha512-yX2xV5I/lYswHHR+44TPvzBgq3/Y8N1YWpTQADYuvSiX3Jxyvemk5Jpx3rRtigYb8WBkWAAf2i5d5ZJ2M7hhgw== + dependencies: + "@swc/types" "^0.1.3" optionalDependencies: - "@swc/core-darwin-arm64" "1.3.76" - "@swc/core-darwin-x64" "1.3.76" - "@swc/core-linux-arm-gnueabihf" "1.3.76" - "@swc/core-linux-arm64-gnu" "1.3.76" - "@swc/core-linux-arm64-musl" "1.3.76" - "@swc/core-linux-x64-gnu" "1.3.76" - "@swc/core-linux-x64-musl" "1.3.76" - "@swc/core-win32-arm64-msvc" "1.3.76" - "@swc/core-win32-ia32-msvc" "1.3.76" - "@swc/core-win32-x64-msvc" "1.3.76" + "@swc/core-darwin-arm64" "1.3.80" + "@swc/core-darwin-x64" "1.3.80" + "@swc/core-linux-arm-gnueabihf" "1.3.80" + "@swc/core-linux-arm64-gnu" "1.3.80" + "@swc/core-linux-arm64-musl" "1.3.80" + "@swc/core-linux-x64-gnu" "1.3.80" + "@swc/core-linux-x64-musl" "1.3.80" + "@swc/core-win32-arm64-msvc" "1.3.80" + "@swc/core-win32-ia32-msvc" "1.3.80" + "@swc/core-win32-x64-msvc" "1.3.80" + +"@swc/types@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.4.tgz#8d647e111dc97a8e2881bf71c2ee2d011698ff10" + integrity sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg== "@tootallnate/once@2": version "2.0.0" @@ -1239,6 +1343,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -1286,9 +1395,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^18.0.27": - version "18.2.20" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.20.tgz#1605557a83df5c8a2cc4eeb743b3dfc0eb6aaeb2" - integrity sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw== + version "18.2.21" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.21.tgz#774c37fd01b522d0b91aed04811b58e4e0514ed9" + integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -1339,6 +1448,16 @@ abbrev@^1.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -1366,6 +1485,16 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -1445,6 +1574,14 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-differ@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" @@ -1455,11 +1592,65 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== +array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array.prototype.findlastindex@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" + integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + +array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" + integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -1485,10 +1676,15 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + axios@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" - integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== + version "1.5.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.0.tgz#f02e4af823e2e46a9768cfc74691fdd0517ea267" + integrity sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -1523,6 +1719,11 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== +big-integer@^1.6.44: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -1542,6 +1743,13 @@ bootstrap@^5.3.1: resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.1.tgz#8ca07040ad15d7f75891d1504cf14c5dedfb1cfe" integrity sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g== +bplist-parser@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" + integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== + dependencies: + big-integer "^1.6.44" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1592,13 +1800,20 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== -builtins@^5.0.0: +builtins@^5.0.0, builtins@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== dependencies: semver "^7.0.0" +bundle-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" + integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== + dependencies: + run-applescript "^5.0.0" + byte-size@8.1.1, byte-size@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" @@ -1622,6 +1837,14 @@ cacache@^17.0.0: tar "^6.1.11" unique-filename "^3.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1647,9 +1870,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001517: - version "1.0.30001520" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001520.tgz#62e2b7a1c7b35269594cf296a80bdf8cb9565006" - integrity sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA== + version "1.0.30001524" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz#1e14bce4f43c41a7deaeb5ebfe86664fe8dadb80" + integrity sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA== chalk@4.1.0: version "4.1.0" @@ -1951,7 +2174,7 @@ cosmiconfig@^8.1.3, cosmiconfig@^8.2.0: parse-json "^5.0.0" path-type "^4.0.0" -cross-spawn@^7.0.0, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -1975,13 +2198,20 @@ dateformat@^3.0.3: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -debug@4, debug@^4.1.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -2000,6 +2230,29 @@ dedent@0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +default-browser-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" + integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== + dependencies: + bplist-parser "^0.2.0" + untildify "^4.0.0" + +default-browser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" + integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== + dependencies: + bundle-name "^3.0.0" + default-browser-id "^3.0.0" + execa "^7.1.1" + titleize "^3.0.0" + defaults@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" @@ -2012,6 +2265,19 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -2032,10 +2298,10 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== -diff-sequences@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" - integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== dir-glob@^3.0.1: version "3.0.1" @@ -2044,6 +2310,20 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dom-helpers@^5.0.1: version "5.2.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" @@ -2059,10 +2339,10 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -dotenv@~10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dotenv@~16.3.1: + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== duplexer@^0.1.1: version "0.1.2" @@ -2082,9 +2362,9 @@ ejs@^3.1.7: jake "^10.8.5" electron-to-chromium@^1.4.477: - version "1.4.491" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.491.tgz#53de4625bde1e75b5b7804a36c68b2c39f6a0c1f" - integrity sha512-ZzPqGKghdVzlQJ+qpfE+r6EB321zed7e5JsvHIlMM4zPFF8okXUkF5Of7h7F3l3cltPL0rG7YVmlp5Qro7RQLA== + version "1.4.503" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.503.tgz#7bd43927ea9b4198697672d28d8fbd0da016a7a1" + integrity sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA== emoji-regex@^8.0.0: version "8.0.0" @@ -2144,6 +2424,76 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.20.4, es-abstract@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" + integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + safe-array-concat "^1.0.0" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.10" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + esbuild-android-64@0.14.54: version "0.14.54" resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" @@ -2314,16 +2664,189 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +eslint-config-prettier@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" + integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== + +eslint-config-standard@^17.1.0: + version "17.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" + integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== + +eslint-import-resolver-node@^0.3.7: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-es-x@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.2.0.tgz#5779d742ad31f8fd780b9481331481e142b72311" + integrity sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA== + dependencies: + "@eslint-community/eslint-utils" "^4.1.2" + "@eslint-community/regexpp" "^4.6.0" + +eslint-plugin-import@^2.25.2: + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + dependencies: + array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.8.0" + has "^1.0.3" + is-core-module "^2.13.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" + object.values "^1.1.6" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +"eslint-plugin-n@^15.0.0 || ^16.0.0 ": + version "16.0.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.0.2.tgz#5b2c0ad8dd9b724244d30fad2cc49ff4308a2152" + integrity sha512-Y66uDfUNbBzypsr0kELWrIz+5skicECrLUqlWuXawNSLUq3ltGlCwu6phboYYOTSnoTdHgTLrc+5Ydo6KjzZog== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + builtins "^5.0.1" + eslint-plugin-es-x "^7.1.0" + ignore "^5.2.4" + is-core-module "^2.12.1" + minimatch "^3.1.2" + resolve "^1.22.2" + semver "^7.5.3" + +eslint-plugin-prettier@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" + integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" + +eslint-plugin-promise@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.0.1: + version "8.48.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" + integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.48.0" + "@humanwhocodes/config-array" "^0.11.10" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + estree-walker@^2.0.1, estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -2359,6 +2882,21 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + exponential-backoff@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" @@ -2373,6 +2911,16 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + fast-glob@3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" @@ -2384,7 +2932,7 @@ fast-glob@3.2.7: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.2.9: +fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== @@ -2395,6 +2943,16 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + fastq@^1.6.0: version "1.15.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" @@ -2409,6 +2967,13 @@ figures@3.2.0, figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + filelist@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -2443,16 +3008,45 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.1.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" + integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== + dependencies: + flatted "^3.2.7" + keyv "^4.5.3" + rimraf "^3.0.2" + flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +flatted@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + foreground-child@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" @@ -2504,15 +3098,30 @@ fs.realpath@^1.0.0: integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gauge@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" @@ -2537,6 +3146,16 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + get-pkg-repo@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" @@ -2557,11 +3176,19 @@ get-stream@6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + git-raw-commits@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-3.0.0.tgz#5432f053a9744f67e8db03dbc48add81252cfdeb" @@ -2616,6 +3243,13 @@ glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob@7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -2677,6 +3311,20 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^13.19.0: + version "13.21.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" + integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -2689,11 +3337,23 @@ globby@11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + handlebars@^4.7.6, handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" @@ -2711,6 +3371,11 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2721,6 +3386,30 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + has-unicode@2.0.1, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -2793,6 +3482,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + humanize-duration@^3.28.0: version "3.29.0" resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.29.0.tgz#beffaf7938388cd0f38c494f8970d6faebecf3c0" @@ -2838,15 +3532,15 @@ ignore-walk@^6.0.0: dependencies: minimatch "^9.0.0" -ignore@^5.0.4, ignore@^5.2.0: +ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== immutable@^4.0.0: - version "4.3.3" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.3.tgz#8934ff6826d996a7642c8dc4b46e694dd19561e3" - integrity sha512-808ZFYMsIRAjLAu5xkKo0TsbY9LBy9H5MazTKIEHerNkg0ymgilGfBPMR/3G7d/ihGmuK2Hw8S1izY2d3kd3wA== + version "4.3.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== import-fresh@^3.2.1: version "3.3.0" @@ -2926,16 +3620,41 @@ inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^6.0.1" +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + ip@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -2943,6 +3662,19 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-ci@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" @@ -2950,18 +3682,30 @@ is-ci@3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: +is-core-module@^2.12.1, is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.13.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2972,13 +3716,20 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" @@ -2989,6 +3740,18 @@ is-lambda@^1.0.1: resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -2999,6 +3762,11 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -3016,6 +3784,21 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-ssh@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" @@ -3033,6 +3816,25 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + is-text-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" @@ -3040,11 +3842,25 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -3052,6 +3868,11 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -3068,9 +3889,9 @@ isobject@^3.0.1: integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== jackspeak@^2.0.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.3.tgz#ac63c57c18d254dc78a1f4ecd1cdeb4daeb6e616" - integrity sha512-pF0kfjmg8DJLxDrizHoCZGUFz4P4czQ3HyfW4BU0ffebYkzAVlBywp5zaxW/TM+r0sGbmrQdi8EQQVTJFxnGsQ== + version "2.3.0" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.0.tgz#aa228a94de830f31d4e4f0184427ce91c4ff1493" + integrity sha512-uKmsITSsF4rUWQHzqaRUuyAir3fZfW3f202Ee34lz/gZCi970CPZwyQXLGNgWJvvZbvFyzeyGq0+4fcG/mBKZg== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -3087,19 +3908,19 @@ jake@^10.8.5: minimatch "^3.1.2" "jest-diff@>=29.4.3 < 30": - version "29.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.2.tgz#c36001e5543e82a0805051d3ceac32e6825c1c46" - integrity sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA== + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.4.tgz#85aaa6c92a79ae8cd9a54ebae8d5b6d9a513314a" + integrity sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw== dependencies: chalk "^4.0.0" - diff-sequences "^29.4.3" - jest-get-type "^29.4.3" - pretty-format "^29.6.2" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.6.3" -jest-get-type@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" - integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -3126,6 +3947,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -3141,12 +3967,29 @@ json-parse-even-better-errors@^3.0.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz#2cb2ee33069a78870a0c7e3da560026b89669cf7" integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + json-stringify-safe@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@^2.2.2: +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -3170,6 +4013,13 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +keyv@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" + integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + dependencies: + json-buffer "3.0.1" + kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -3261,6 +4111,14 @@ lerna@^7.1.5: yargs "16.2.0" yargs-parser "20.2.4" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + libnpmaccess@7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-7.0.2.tgz#7f056c8c933dd9c8ba771fa6493556b53c5aac52" @@ -3328,11 +4186,23 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -3475,6 +4345,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -3487,7 +4362,7 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -3621,7 +4496,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0: +ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -3652,6 +4527,11 @@ nanoid@^3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -3675,16 +4555,16 @@ node-fetch@2.6.7: whatwg-url "^5.0.0" node-fetch@^2.6.7: - version "2.6.12" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" - integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" node-gyp-build@^4.3.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" - integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" + integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== node-gyp@^9.0.0: version "9.4.0" @@ -3852,6 +4732,13 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + npmlog@^6.0.0, npmlog@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" @@ -3867,12 +4754,12 @@ numeral@^2.0.6: resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" integrity sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA== -nx@16.6.0, "nx@>=16.5.1 < 17": - version "16.6.0" - resolved "https://registry.yarnpkg.com/nx/-/nx-16.6.0.tgz#58bfc887a65782faaa6298461b6a7ea0fc02695f" - integrity sha512-4UaS9nRakpZs45VOossA7hzSQY2dsr035EoPRGOc81yoMFW6Sqn1Rgq4hiLbHZOY8MnWNsLMkgolNMz1jC8YUQ== +nx@16.7.4, "nx@>=16.5.1 < 17": + version "16.7.4" + resolved "https://registry.yarnpkg.com/nx/-/nx-16.7.4.tgz#355cfe9187822fa29676b88da1673a09acab990e" + integrity sha512-L0Cbikk5kO+IBH0UQ2BOAut5ndeHXBlACKzjOPOCluY8WYh2sxWYt9/N/juFBN3XXRX7ionTr1PhWUzNE0Mzqw== dependencies: - "@nrwl/tao" "16.6.0" + "@nrwl/tao" "16.7.4" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" @@ -3882,7 +4769,7 @@ nx@16.6.0, "nx@>=16.5.1 < 17": cli-cursor "3.1.0" cli-spinners "2.6.1" cliui "^7.0.2" - dotenv "~10.0.0" + dotenv "~16.3.1" enquirer "~2.3.6" fast-glob "3.2.7" figures "3.2.0" @@ -3908,22 +4795,70 @@ nx@16.6.0, "nx@>=16.5.1 < 17": yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "16.6.0" - "@nx/nx-darwin-x64" "16.6.0" - "@nx/nx-freebsd-x64" "16.6.0" - "@nx/nx-linux-arm-gnueabihf" "16.6.0" - "@nx/nx-linux-arm64-gnu" "16.6.0" - "@nx/nx-linux-arm64-musl" "16.6.0" - "@nx/nx-linux-x64-gnu" "16.6.0" - "@nx/nx-linux-x64-musl" "16.6.0" - "@nx/nx-win32-arm64-msvc" "16.6.0" - "@nx/nx-win32-x64-msvc" "16.6.0" + "@nx/nx-darwin-arm64" "16.7.4" + "@nx/nx-darwin-x64" "16.7.4" + "@nx/nx-freebsd-x64" "16.7.4" + "@nx/nx-linux-arm-gnueabihf" "16.7.4" + "@nx/nx-linux-arm64-gnu" "16.7.4" + "@nx/nx-linux-arm64-musl" "16.7.4" + "@nx/nx-linux-x64-gnu" "16.7.4" + "@nx/nx-linux-x64-musl" "16.7.4" + "@nx/nx-win32-arm64-msvc" "16.7.4" + "@nx/nx-win32-x64-msvc" "16.7.4" object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -3938,6 +4873,13 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" @@ -3947,6 +4889,28 @@ open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" +open@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" + integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== + dependencies: + default-browser "^4.0.0" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^2.2.0" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -3986,6 +4950,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -4000,6 +4971,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map-series@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" @@ -4142,6 +5120,11 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -4204,7 +5187,7 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -postcss@^8.4.13: +postcss@^8.4.13, postcss@^8.4.27: version "8.4.28" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw== @@ -4213,31 +5196,39 @@ postcss@^8.4.13: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.27: - version "8.4.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" - integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - preact@^10.16.0: version "10.17.1" resolved "https://registry.yarnpkg.com/preact/-/preact-10.17.1.tgz#0a1b3c658c019e759326b9648c62912cf5c2dde1" integrity sha512-X9BODrvQ4Ekwv9GURm9AKAGaomqXmip7NQTZgY7gcNmr7XE83adOMJvd3N42id1tMFU7ojiynRsYnY6/BRFxLA== +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.2.tgz#78fcecd6d870551aa5547437cdae39d4701dca5b" + integrity sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ== + pretty-bytes@^6.1.0: version "6.1.1" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.1.1.tgz#38cd6bb46f47afbf667c202cfc754bffd2016a3b" integrity sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ== -pretty-format@^29.6.2: - version "29.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.2.tgz#3d5829261a8a4d89d8b9769064b29c50ed486a47" - integrity sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg== +pretty-format@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.3.tgz#d432bb4f1ca6f9463410c3fb25a0ba88e594ace7" + integrity sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw== dependencies: - "@jest/schemas" "^29.6.0" + "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" react-is "^18.0.0" @@ -4297,6 +5288,11 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -4457,6 +5453,15 @@ regenerator-runtime@^0.14.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== +regexp.prototype.flags@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4484,7 +5489,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: +resolve@^1.10.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.2, resolve@^1.22.4: version "1.22.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== @@ -4533,9 +5538,9 @@ rimraf@^4.4.1: fsevents "~2.3.2" rollup@^3.27.1: - version "3.28.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.0.tgz#a3c70004b01934760c0cb8df717c7a1d932389a2" - integrity sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw== + version "3.28.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.1.tgz#fb44aa6d5e65c7e13fd5bcfff266d0c4ea9ba433" + integrity sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw== optionalDependencies: fsevents "~2.3.2" @@ -4544,6 +5549,13 @@ round-to@^6.0.0: resolved "https://registry.yarnpkg.com/round-to/-/round-to-6.0.0.tgz#c12a8dee3c78cbc981d161ba8ff0214abd6cae53" integrity sha512-jFvBgyRueGU0QVa7EqXZOkarkzrqEnF3VTCzATRcBkzxXJ4/+pzDf1iouqOqGsx6ZpnIIu5gvFDGnyzoX58ldQ== +run-applescript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" + integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== + dependencies: + execa "^5.0.0" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -4563,6 +5575,16 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" +safe-array-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" + integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -4573,6 +5595,15 @@ safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -4611,7 +5642,7 @@ semver@^6.0.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -4642,6 +5673,15 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -4789,6 +5829,33 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -4832,6 +5899,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -4839,6 +5911,11 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" @@ -4877,6 +5954,14 @@ svg-parser@^2.0.4: resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== +synckit@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" + integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q== + dependencies: + "@pkgr/utils" "^2.3.1" + tslib "^2.5.0" + tar-stream@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" @@ -4922,6 +6007,11 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -4935,6 +6025,11 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +titleize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" + integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -4971,6 +6066,16 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tsconfig-paths@^4.1.2: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" @@ -4980,10 +6085,10 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" - integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tuf-js@^1.1.7: version "1.1.7" @@ -4994,11 +6099,23 @@ tuf-js@^1.1.7: debug "^4.3.4" make-fetch-happen "^11.1.1" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -5019,21 +6136,70 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== "typescript@>=3 < 6": - version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + unique-filename@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" @@ -5058,6 +6224,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + upath@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" @@ -5081,6 +6252,13 @@ uplot@^1.6.24: resolved "https://registry.yarnpkg.com/uplot/-/uplot-1.6.25.tgz#1753f02438a93d143c7773d1c58812f894b52cc1" integrity sha512-eWLAhEaGtIcVBiS67mC2UC0yV+G6eYLS2rU67N4F2JVWjt7uBMg4xKXUYGW0dEz9G+m7fNatjCVXHts4gjyuMQ== +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + use-debounce@^9.0.4: version "9.0.4" resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-9.0.4.tgz#51d25d856fbdfeb537553972ce3943b897f1ac85" @@ -5159,7 +6337,7 @@ vite@^2.0.0: optionalDependencies: fsevents "~2.3.2" -vite@^4.1.0, vite@^4.4.5, vite@^4.4.9: +vite@^4.1.0, vite@^4.4.5: version "4.4.9" resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== @@ -5190,6 +6368,28 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.10, which-typed-array@^1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -5351,3 +6551,8 @@ yargs@^17.6.2: string-width "^4.2.3" y18n "^5.0.5" yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/assets/assets_test.go b/assets_test.go similarity index 65% rename from assets/assets_test.go rename to assets_test.go index 0195a70..3d3a624 100644 --- a/assets/assets_test.go +++ b/assets_test.go @@ -2,9 +2,10 @@ // // SPDX-License-Identifier: MIT -package assets +package dashboard import ( + "encoding/json" "testing" "github.com/stretchr/testify/assert" @@ -21,10 +22,10 @@ func Test_dir(t *testing.T) { }) } -func TestDirUI(t *testing.T) { +func Test_dirUI(t *testing.T) { t.Parallel() - fs := DirUI() + fs := dirUI() assert.NotNil(t, fs) @@ -36,10 +37,10 @@ func TestDirUI(t *testing.T) { assert.NoError(t, file.Close()) } -func TestDirBrief(t *testing.T) { +func Test_dirBrief(t *testing.T) { t.Parallel() - fs := DirBrief() + fs := dirBrief() assert.NotNil(t, fs) @@ -50,3 +51,15 @@ func TestDirBrief(t *testing.T) { assert.NoError(t, file.Close()) } + +func Test_fileConfig(t *testing.T) { + t.Parallel() + + binary := fileConfig() + + assert.NotNil(t, binary) + + conf := map[string]interface{}{} + + assert.NoError(t, json.Unmarshal(binary, &conf)) +} diff --git a/command.go b/command.go deleted file mode 100644 index b738b0d..0000000 --- a/command.go +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-FileCopyrightText: 2023 Iván Szkiba -// -// SPDX-License-Identifier: MIT - -package dashboard - -import ( - "os" - - "github.com/grafana/xk6-dashboard/assets" - "github.com/grafana/xk6-dashboard/dashboard" -) - -func init() { - if len(os.Args) == 1 || os.Args[1] != "dashboard" { - return - } - - dashboard.Execute(assets.DirUI(), assets.DirBrief()) -} diff --git a/config.d.ts b/config.d.ts new file mode 100644 index 0000000..7979905 --- /dev/null +++ b/config.d.ts @@ -0,0 +1,98 @@ +export module dashboard { + /** + * Dashboard configuration. + */ + export interface Config { + /** Dashboard title */ + title: string; + /** Tab definitions */ + tabs: Tab[]; + } + + /** + * Dashboard tab definition. + */ + export interface Tab { + /** tab id */ + id: string; + /** tab title */ + title: string; + /** short description */ + description?: string; + /** list of panel definitions */ + panels: Panel[]; + /** list of chart definitions */ + charts: Chart[]; + /** event name, "snapshot" or "cumulative" */ + event: string; + /** should the tab include in report or no */ + report?: boolean; + } + + /** + * Dashboard chart definition. + */ + export interface Chart { + /** chart id */ + id: string; + /** chart title */ + title: string; + /** series definitions */ + series: Record; // should be an array + /** axe definitions */ + axes?: Axe[]; + /** scale definitions */ + scales?: Scale[]; + /** chart hight, default 250 */ + height?: any; + } + + /** Chart data serie definition. */ + export interface Serie { + /** label used in legend */ + label: string; + /** scale reference */ + scale?: string; + /** format used in legend */ + format: string; + /** line width */ + width?: number; + /** is it a rate or not */ + rate?: boolean; + } + + /** Chart axis definition */ + export interface Axe { + /** format using in labels */ + format?: string; + /** side index (0=left, 1=right) */ + side?: number; + /** scale reference */ + scale?: string; + } + + export interface Scale {} + + /** Dashboard panel definition. */ + export interface Panel { + /** panel id */ + id: string; + /** panel title */ + title: string; + /** metric name to display */ + metric: string; + /** format */ + format?: string; + } +} + +declare global { + interface Array { + /** + * Search for an array element that has a given id property value. + * @param {string} id the id for the search + * @returns {T} the first element whose id property matches or is undefined if there are no results + */ + getById(id: string): T; + } +} diff --git a/customize/config.go b/customize/config.go new file mode 100644 index 0000000..d7bf33c --- /dev/null +++ b/customize/config.go @@ -0,0 +1,223 @@ +package customize + +import ( + "encoding/json" + "errors" + "fmt" + "os" + "reflect" + "strings" + + "github.com/dop251/goja" + "github.com/sirupsen/logrus" + "go.k6.io/k6/js/compiler" + "go.k6.io/k6/lib" +) + +type configLoader struct { + runtime *goja.Runtime + compiler *compiler.Compiler + defaultConfig *goja.Object +} + +func newConfigLoader(defaultConfig json.RawMessage, logger logrus.FieldLogger) (*configLoader, error) { + comp := compiler.New(logger) + + comp.Options.CompatibilityMode = lib.CompatibilityModeExtended + comp.Options.Strict = true + + con := newConfigConsole(logger) + + runtime := goja.New() + + runtime.SetFieldNameMapper(goja.UncapFieldNameMapper()) + + if err := runtime.Set("console", con); err != nil { + return nil, err + } + + def, err := toObject(runtime, defaultConfig) + if err != nil { + return nil, err + } + + loader := &configLoader{ + runtime: runtime, + compiler: comp, + defaultConfig: def, + } + + return loader, nil +} + +func (loader *configLoader) load(filename string) (json.RawMessage, error) { + src, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + + val, err := loader.eval(src, filename) + if err != nil { + return nil, err + } + + obj := val.ToObject(loader.runtime) + + return obj.MarshalJSON() +} + +func isObject(val goja.Value) bool { + return val != nil && val.ExportType() != nil && val.ExportType().Kind() == reflect.Map +} + +func (loader *configLoader) eval(src []byte, filename string) (*goja.Object, error) { + prog, _, err := loader.compiler.Compile(string(src), filename, false) + if err != nil { + return nil, err + } + + exports := loader.runtime.NewObject() + module := loader.runtime.NewObject() + + if err := module.Set("exports", exports); err != nil { + return nil, err + } + + val, err := loader.runtime.RunProgram(prog) + if err != nil { + return nil, err + } + + call, isCallable := goja.AssertFunction(val) + if !isCallable { + return nil, fmt.Errorf("%w, file: %s", errNotFunction, filename) + } + + _, err = call(exports, module, exports) + if err != nil { + return nil, err + } + + def := exports.Get("default") + if def == nil { + return nil, fmt.Errorf("%w, file: %s", errNoExport, filename) + } + + if call, isCallable = goja.AssertFunction(def); isCallable { + def, err = call(exports, loader.defaultConfig) + if err != nil { + return nil, err + } + + if !isObject(def) { + return nil, errConfigNotObject + } + } + + return def.ToObject(loader.runtime), nil +} + +// toObject use JavaScript JSON.parse to create native goja object +// there could be a better solution.... (but Object.UnmarshallJSON is missing). +func toObject(runtime *goja.Runtime, bin json.RawMessage) (*goja.Object, error) { + val := runtime.Get("JSON").ToObject(runtime).Get("parse") + + call, _ := goja.AssertFunction(val) + + val, err := call(runtime.GlobalObject(), runtime.ToValue(string(bin))) + if err != nil { + return nil, err + } + + return val.ToObject(runtime), nil +} + +func loadConfigJS(filename string, config json.RawMessage, logger logrus.FieldLogger) (json.RawMessage, error) { + loader, err := newConfigLoader(config, logger) + if err != nil { + return nil, err + } + + return loader.load(filename) +} + +// configConsole represents a JS configConsole implemented as a logrus.Logger. +type configConsole struct { + logger logrus.FieldLogger +} + +// Creates a console with the standard logrus logger. +func newConfigConsole(logger logrus.FieldLogger) *configConsole { + return &configConsole{logger.WithField("source", "console").WithField("extension", "dashboard")} +} + +func (c configConsole) log(level logrus.Level, args ...goja.Value) { + var strs strings.Builder + + for i := 0; i < len(args); i++ { + if i > 0 { + strs.WriteString(" ") + } + + strs.WriteString(c.valueString(args[i])) + } + + msg := strs.String() + + switch level { //nolint:exhaustive + case logrus.DebugLevel: + c.logger.Debug(msg) + + case logrus.InfoLevel: + c.logger.Info(msg) + + case logrus.WarnLevel: + c.logger.Warn(msg) + + case logrus.ErrorLevel: + c.logger.Error(msg) + + default: + c.logger.Info(msg) + } +} + +func (c configConsole) Log(args ...goja.Value) { + c.Info(args...) +} + +func (c configConsole) Debug(args ...goja.Value) { + c.log(logrus.DebugLevel, args...) +} + +func (c configConsole) Info(args ...goja.Value) { + c.log(logrus.InfoLevel, args...) +} + +func (c configConsole) Warn(args ...goja.Value) { + c.log(logrus.WarnLevel, args...) +} + +func (c configConsole) Error(args ...goja.Value) { + c.log(logrus.ErrorLevel, args...) +} + +func (c configConsole) valueString(value goja.Value) string { + mv, ok := value.(json.Marshaler) + if !ok { + return value.String() + } + + bin, err := json.Marshal(mv) + if err != nil { + return value.String() + } + + return string(bin) +} + +var ( + errNotFunction = errors.New("not a function") + errNoExport = errors.New("missing default export") + errConfigNotObject = errors.New("returned configuration is not an object") +) diff --git a/customize/config_test.go b/customize/config_test.go new file mode 100644 index 0000000..c4c7302 --- /dev/null +++ b/customize/config_test.go @@ -0,0 +1,128 @@ +package customize + +import ( + _ "embed" + "testing" + + "github.com/dop251/goja" + "github.com/sirupsen/logrus" + logtest "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/assert" + "github.com/tidwall/gjson" +) + +//go:embed testdata/config/config.json +var testconfig []byte + +func TestConfigInReadme(t *testing.T) { + t.Parallel() + + conf, err := loadConfigJS("../.dashboard.js", testconfig, logrus.StandardLogger()) + + assert.NoError(t, err) + + assert.NotNil(t, gjson.GetBytes(conf, "tabs.custom")) + + loader, err := newConfigLoader(testconfig, logrus.StandardLogger()) + + assert.NoError(t, err) + + _, err = loader.load("testdata/config-custom.js") + + assert.NoError(t, err) +} + +func assertMessageAndLevel(t *testing.T, expr string, message string, level logrus.Level) { + t.Helper() + + runtime := goja.New() + + runtime.SetFieldNameMapper(goja.UncapFieldNameMapper()) + + logger, hook := logtest.NewNullLogger() + _ = runtime.Set("console", newConfigConsole(logger)) + + logger.SetLevel(level) + + _, err := runtime.RunString(expr) + + assert.NoError(t, err) + + entry := hook.LastEntry() + assert.NotNil(t, entry) + + assert.Equal(t, message, entry.Message) + assert.Equal(t, level, entry.Level) +} + +func TestConfigConsoleLevels(t *testing.T) { + t.Parallel() + + assertMessageAndLevel(t, `console.log("a")`, "a", logrus.InfoLevel) + assertMessageAndLevel(t, `console.debug("a")`, "a", logrus.DebugLevel) + assertMessageAndLevel(t, `console.info("a")`, "a", logrus.InfoLevel) + assertMessageAndLevel(t, `console.warn("a")`, "a", logrus.WarnLevel) + assertMessageAndLevel(t, `console.error("a")`, "a", logrus.ErrorLevel) + + assertMessageAndLevel(t, `console.log("a", "b")`, "a b", logrus.InfoLevel) +} + +func TestConfigConsoleJSON(t *testing.T) { + t.Parallel() + + assertMessageAndLevel(t, `let obj = {foo:"bar"}; console.log(obj)`, `{"foo":"bar"}`, logrus.InfoLevel) +} + +func Test_loadConfigJS_error(t *testing.T) { + t.Parallel() + + conf, err := loadConfigJSON("testdata/config.json") + + assert.NoError(t, err) + + assert.NotNil(t, gjson.GetBytes(conf, "tabs.custom")) + + _, err = loadConfigJS("testdata/config-bad.json", testconfig, logrus.StandardLogger()) + + assert.Error(t, err) + + _, err = loadConfigJS("testdata/config-not-exists.json", testconfig, logrus.StandardLogger()) + + assert.Error(t, err) + + conf, err = loadConfigJS("testdata/config-custom.js", []byte("42='foo'"), logrus.StandardLogger()) + + assert.Nil(t, conf) + assert.Error(t, err) +} + +func Test_configLoader_eval_error(t *testing.T) { + t.Parallel() + + loader, err := newConfigLoader(testconfig, logrus.StandardLogger()) + + assert.NoError(t, err) + + obj, err := loader.eval([]byte("invalid script"), "") + + assert.Error(t, err) + assert.Nil(t, obj) + + // no default export + obj, err = loader.eval([]byte("let answer = 42"), "") + + assert.Error(t, err) + assert.Nil(t, obj) + + // no return value from export function + obj, err = loader.eval([]byte("export default function() {}"), "") + + assert.Error(t, err) + assert.Nil(t, obj) + + // error in default export function + obj, err = loader.eval([]byte("export default function() {throw Error()}"), "") + + assert.Error(t, err) + assert.Nil(t, obj) +} diff --git a/customize/customize.go b/customize/customize.go new file mode 100644 index 0000000..515fff5 --- /dev/null +++ b/customize/customize.go @@ -0,0 +1,65 @@ +package customize + +import ( + "encoding/json" + "errors" + "os" + "path/filepath" + + "github.com/sirupsen/logrus" +) + +const ( + defaultConfig = ".dashboard.js" + defaultAltConfig = ".dashboard.json" +) + +func findDefaultConfig() string { + if exists(defaultConfig) { + return defaultConfig + } + + if exists(defaultAltConfig) { + return defaultAltConfig + } + + return "" +} + +func Customize(uiConfig json.RawMessage) (json.RawMessage, error) { + filename := os.Getenv("XK6_DASHBOARD_CONFIG") + if len(filename) == 0 { + if filename = findDefaultConfig(); len(filename) == 0 { + return uiConfig, nil + } + } + + if filepath.Ext(filename) == ".json" { + return loadConfigJSON(filename) + } + + return loadConfigJS(filename, uiConfig, logrus.StandardLogger()) +} + +func loadConfigJSON(filename string) (json.RawMessage, error) { + bin, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + + conf := map[string]interface{}{} + + if err := json.Unmarshal(bin, &conf); err != nil { + return nil, err + } + + return json.Marshal(conf) +} + +func exists(filename string) bool { + if _, err := os.Stat(filename); errors.Is(err, os.ErrNotExist) { + return false + } + + return true +} diff --git a/customize/customize_test.go b/customize/customize_test.go new file mode 100644 index 0000000..1dab3ee --- /dev/null +++ b/customize/customize_test.go @@ -0,0 +1,50 @@ +package customize + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/tidwall/gjson" +) + +func Test_loadConfigJSON(t *testing.T) { + t.Parallel() + + conf, err := loadConfigJSON("testdata/config.json") + + assert.NoError(t, err) + + assert.NotNil(t, gjson.GetBytes(conf, "tabs.custom")) + + _, err = loadConfigJSON("testdata/config-bad.json") + + assert.Error(t, err) + + _, err = loadConfigJSON("testdata/config-not-exists.json") + + assert.Error(t, err) +} + +func TestCustomize(t *testing.T) { + t.Parallel() + + conf, err := Customize(testconfig) + + assert.NoError(t, err) + + assert.False(t, gjson.GetBytes(conf, `tabs.#(id="custom")`).Exists()) +} + +func TestCustomize_env_found(t *testing.T) { //nolint:paralleltest + t.Setenv("XK6_DASHBOARD_CONFIG", "testdata/config-custom.js") + + conf, err := Customize(testconfig) + + assert.NoError(t, err) + + assert.True(t, gjson.GetBytes(conf, `tabs.#(id="custom")`).Exists()) + + t.Setenv("XK6_DASHBOARD_CONFIG", "testdata/config.json") + + assert.NoError(t, err) +} diff --git a/customize/testdata/config-bad.json b/customize/testdata/config-bad.json new file mode 100644 index 0000000..646191c --- /dev/null +++ b/customize/testdata/config-bad.json @@ -0,0 +1,3 @@ +{ + "foo": bar +} \ No newline at end of file diff --git a/customize/testdata/config-custom.js b/customize/testdata/config-custom.js new file mode 100644 index 0000000..6dbb614 --- /dev/null +++ b/customize/testdata/config-custom.js @@ -0,0 +1,47 @@ +export default function (config) { + function getById(id) { + return this.filter( + (/** @type {{ id: string; }} */ element) => element.id == id + ).at(0); + } + + Array.prototype["getById"] = getById; + + function durationPanel(suffix) { + return { + id: `http_req_duration_${suffix}`, + title: `HTTP Request Duration ${suffix}`, + metric: `http_req_duration_trend_${suffix}`, + format: "duration", + }; + } + + const overview = config.tabs.getById("overview_snapshot"); + + const customPanels = [ + overview.panels.getById("vus"), + overview.panels.getById("http_reqs"), + durationPanel("avg"), + durationPanel("p(90)"), + durationPanel("p(95)"), + durationPanel("p(99)"), + ]; + + const durationChart = Object.assign( + {}, + overview.charts.getById("http_req_duration") + ); + + const customTab = { + id: "custom", + title: "Custom", + event: overview.event, + panels: customPanels, + charts: [overview.charts.getById("http_reqs"), durationChart], + description: "Example of customizing the display of metrics.", + }; + + config.tabs.push(customTab); + + return config; +} diff --git a/customize/testdata/config.json b/customize/testdata/config.json new file mode 100644 index 0000000..4b238ab --- /dev/null +++ b/customize/testdata/config.json @@ -0,0 +1,102 @@ +{ + "tabs": [ + { + "charts": [ + { + "axes": [ + {}, + { "scale": "n" }, + { "format": "rps", "scale": "1/s", "side": 1 } + ], + "id": "http_reqs", + "scales": [{}, {}, {}], + "series": { + "http_reqs.rate": { + "format": "rps", + "label": "HTTP request rate", + "scale": "1/s" + }, + "vus.value": { + "format": "counter", + "label": "VUs", + "scale": "n", + "width": 2 + } + }, + "title": "VUs" + }, + { + "axes": [ + {}, + { "format": "duration" }, + { "format": "duration", "side": 1 } + ], + "id": "http_req_duration", + "series": { + "http_req_duration.avg": { + "format": "duration", + "label": "avg", + "width": 2 + }, + "http_req_duration.p(90)": { + "format": "duration", + "label": "p(90)" + }, + "http_req_duration.p(95)": { + "format": "duration", + "label": "p(95)" + }, + "http_req_duration.p(99)": { + "format": "duration", + "label": "p(99)" + } + }, + "title": "HTTP Request Duration" + } + ], + "description": "Example of customizing the display of metrics.", + "event": "snapshot", + "id": "custom", + "panels": [ + { + "format": "counter", + "id": "vus", + "metric": "vus.value", + "title": "VUs" + }, + { + "format": "rps", + "id": "http_reqs", + "metric": "http_reqs.rate", + "title": "HTTP Request Rate" + }, + { + "format": "duration", + "id": "http_req_duration.avg", + "metric": "http_req_duration.avg", + "title": "HTTP Request Duration avg" + }, + { + "format": "duration", + "id": "http_req_duration.p(90)", + "metric": "http_req_duration.p(90)", + "title": "HTTP Request Duration p(90)" + }, + { + "format": "duration", + "id": "http_req_duration.p(95)", + "metric": "http_req_duration.p(95)", + "title": "HTTP Request Duration p(95)" + }, + { + "format": "duration", + "id": "http_req_duration.p(99)", + "metric": "http_req_duration.p(99)", + "title": "HTTP Request Duration p(99)" + } + ], + "title": "Custom" + } + ], + "title": "k6 dashboard" +} diff --git a/customize/testdata/config/config.json b/customize/testdata/config/config.json new file mode 100644 index 0000000..6d0f5d1 --- /dev/null +++ b/customize/testdata/config/config.json @@ -0,0 +1 @@ +{"title":"k6 dashboard","tabs":[{"id":"overview_snapshot","title":"Overview","event":"snapshot","panels":[{"id":"iterations","title":"Iteration Rate","metric":"iterations.rate","format":"rps"},{"id":"vus","title":"VUs","metric":"vus.value","format":"counter"},{"id":"http_reqs","title":"HTTP Request Rate","metric":"http_reqs.rate","format":"rps"},{"id":"http_req_duration","title":"HTTP Request Duration","metric":"http_req_duration.avg","format":"duration"},{"id":"data_received","title":"Received Rate","metric":"data_received.rate","format":"bps"},{"id":"data_sent","title":"Sent Rate","metric":"data_sent.rate","format":"bps"}],"charts":[{"id":"http_reqs","title":"VUs","series":{"vus.value":{"label":"VUs","width":2,"scale":"n","format":"counter"},"http_reqs.rate":{"label":"HTTP request rate","scale":"1/s","format":"rps"}},"axes":[{},{"scale":"n"},{"scale":"1/s","side":1,"format":"rps"}],"scales":[{},{},{}]},{"id":"data","title":"Transfer Rate","series":{"data_sent.rate":{"label":"data sent","rate":true,"scale":"sent","format":"bps"},"data_received.rate":{"label":"data received","rate":true,"width":2,"scale":"received","format":"bps"}},"axes":[{},{"scale":"sent","format":"bps"},{"scale":"received","side":1,"format":"bps"}]},{"id":"http_req_duration","title":"HTTP Request Duration","series":{"http_req_duration.avg":{"label":"avg","width":2,"format":"duration"},"http_req_duration.p(90)":{"label":"p(90)","format":"duration"},"http_req_duration.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}]},{"id":"iteration_duration","title":"Iteration Duration","series":{"iteration_duration.avg":{"label":"avg","width":2,"format":"duration"},"iteration_duration.p(90)":{"label":"p(90)","format":"duration"},"iteration_duration.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}]}],"description":"This section provides an overview of the most important metrics of the test run. Graphs plot the value of metrics over time."},{"id":"timings_snapshot","title":"Timings","event":"snapshot","charts":[{"id":"http_req_duration","title":"HTTP Request Duration","series":{"http_req_duration.avg":{"label":"avg","width":2,"format":"duration"},"http_req_duration.p(90)":{"label":"p(90)","format":"duration"},"http_req_duration.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_waiting","title":"HTTP Request Waiting","series":{"http_req_waiting.avg":{"label":"avg","width":2,"format":"duration"},"http_req_waiting.p(90)":{"label":"p(90)","format":"duration"},"http_req_waiting.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_tls_handshaking","title":"HTTP TLS handshaking","series":{"http_req_tls_handshaking.avg":{"label":"avg","width":2,"format":"duration"},"http_req_tls_handshaking.p(90)":{"label":"p(90)","format":"duration"},"http_req_tls_handshaking.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_sending","title":"HTTP Request Sending","series":{"http_req_sending.avg":{"label":"avg","width":2,"format":"duration"},"http_req_sending.p(90)":{"label":"p(90)","format":"duration"},"http_req_sending.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_connecting","title":"HTTP Request Connecting","series":{"http_req_connecting.avg":{"label":"avg","width":2,"format":"duration"},"http_req_connecting.p(90)":{"label":"p(90)","format":"duration"},"http_req_connecting.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_receiving","title":"HTTP Request Receiving","series":{"http_req_receiving.avg":{"label":"avg","width":2,"format":"duration"},"http_req_receiving.p(90)":{"label":"p(90)","format":"duration"},"http_req_receiving.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224}],"panels":[],"report":true,"description":"This section provides an overview of test run HTTP timing metrics. Graphs plot the value of metrics over time."}]} \ No newline at end of file diff --git a/dashboard/brief.go b/dashboard/brief.go index f4b7983..cb38630 100644 --- a/dashboard/brief.go +++ b/dashboard/brief.go @@ -20,14 +20,11 @@ import ( ) type briefer struct { - assets fs.FS - uiConfig []byte - output string - logger logrus.FieldLogger - buff bytes.Buffer - mu sync.RWMutex - encoder *json.Encoder - cumulative interface{} + assets fs.FS + data *briefData + output string + logger logrus.FieldLogger + mu sync.RWMutex } var ( @@ -35,16 +32,14 @@ var ( _ http.Handler = (*briefer)(nil) ) -func newBriefer(assets fs.FS, uiConfig []byte, output string, logger logrus.FieldLogger) *briefer { +func newBriefer(assets fs.FS, config json.RawMessage, output string, logger logrus.FieldLogger) *briefer { brf := &briefer{ // nolint:exhaustruct - assets: assets, - uiConfig: uiConfig, - output: output, - logger: logger, + data: newBriefData(config), + assets: assets, + output: output, + logger: logger, } - brf.encoder = json.NewEncoder(&brf.buff) - return brf } @@ -88,7 +83,23 @@ func (brf *briefer) onEvent(name string, data interface{}) { defer brf.mu.Unlock() if name == cumulativeEvent { - brf.cumulative = data + brf.data.cumulative = data + + return + } + + if name == paramEvent { + brf.data.param = data + + return + } + + if name == metricEvent { + if metrics, ok := data.(map[string]metricData); ok { + for key, value := range metrics { + brf.data.metrics[key] = value + } + } return } @@ -97,16 +108,16 @@ func (brf *briefer) onEvent(name string, data interface{}) { return } - if brf.buff.Len() != 0 { - if _, err := brf.buff.WriteRune(','); err != nil { + if brf.data.buff.Len() != 0 { + if _, err := brf.data.buff.WriteRune(','); err != nil { brf.logger.Error(err) return } } - if err := brf.encoder.Encode(data); err != nil { - brf.encoder.Encode(nil) //nolint:errcheck,errchkjson + if err := brf.data.encoder.Encode(data); err != nil { + brf.data.encoder.Encode(nil) //nolint:errcheck,errchkjson brf.logger.Error(err) } @@ -124,30 +135,7 @@ func (brf *briefer) exportJSON(out io.Writer) error { brf.mu.RLock() defer brf.mu.RUnlock() - bin, err := json.Marshal(brf.cumulative) - if err != nil { - return err - } - - if _, err := out.Write([]byte(`{"cumulative":`)); err != nil { - return err - } - - if _, err := out.Write(bin); err != nil { - return err - } - - if _, err := out.Write([]byte(`,"snapshot":[`)); err != nil { - return err - } - - if _, err := out.Write(brf.buff.Bytes()); err != nil { - return err - } - - _, err = out.Write([]byte("]}")) - - return err + return brf.data.exportJSON(out) } func (brf *briefer) exportBase64(out io.Writer) error { @@ -176,12 +164,7 @@ func (brf *briefer) exportHTML(out io.Writer) error { return err } - html, err = brf.injectConfig(out, html) - if err != nil { - return err - } - - html, err = brf.injectData(out, html) + html, err = brf.inject(out, html, dataTag, brf.exportBase64) if err != nil { return err } @@ -193,71 +176,98 @@ func (brf *briefer) exportHTML(out io.Writer) error { return nil } -func (brf *briefer) injectFile(out io.Writer, filename string) error { - file, err := brf.assets.Open(filename) - if err != nil { - return err +func (brf *briefer) inject(out io.Writer, html []byte, tag []byte, dataFunc func(io.Writer) error) ([]byte, error) { + idx := bytes.Index(html, tag) + + if idx < 0 { + panic("invalid brief HTML, no tag: " + string(tag)) } - data, err := io.ReadAll(file) - if err != nil { - return err + idx += len(tag) + + if _, err := out.Write(html[:idx]); err != nil { + return nil, err + } + + if err := dataFunc(out); err != nil { + return nil, err } - _, err = out.Write(data) + return html[idx:], nil +} - return err +type briefData struct { + config json.RawMessage + param interface{} + buff bytes.Buffer + encoder *json.Encoder + cumulative interface{} + metrics map[string]metricData } -func (brf *briefer) injectConfig(out io.Writer, html []byte) ([]byte, error) { - idx := bytes.Index(html, configTag) +func newBriefData(config []byte) *briefData { + data := new(briefData) - if idx < 0 { - panic("invalid brief HTML, no config tag") - } + data.config = config + data.metrics = make(map[string]metricData) + data.encoder = json.NewEncoder(&data.buff) - idx += len(configTag) + return data +} - if _, err := out.Write(html[:idx]); err != nil { - return nil, err +func encodeJSONprop(out io.Writer, prefix string, name string, value interface{}) error { + if _, err := out.Write([]byte(prefix + `"` + name + `":`)); err != nil { + return err } - if err := brf.injectFile(out, "boot.js"); err != nil { - return nil, err - } + if raw, ok := value.(json.RawMessage); ok { + if len(raw) == 0 { + raw = []byte("null") + } - if _, err := out.Write(brf.uiConfig); err != nil { - return nil, err + _, err := out.Write(raw) + + return err } - if err := brf.injectFile(out, "init.js"); err != nil { - return nil, err + bin, err := json.Marshal(value) + if err != nil { + return err } - return html[idx:], nil + _, err = out.Write(bin) + + return err } -func (brf *briefer) injectData(out io.Writer, html []byte) ([]byte, error) { - idx := bytes.Index(html, dataTag) +func (data *briefData) exportJSON(out io.Writer) error { + if err := encodeJSONprop(out, "{", "cumulative", data.cumulative); err != nil { + return err + } - if idx < 0 { - panic("invalid brief HTML, no data tag") + if err := encodeJSONprop(out, ",", "param", data.param); err != nil { + return err } - idx += len(dataTag) + if err := encodeJSONprop(out, ",", "config", data.config); err != nil { + return err + } - if _, err := out.Write(html[:idx]); err != nil { - return nil, err + if err := encodeJSONprop(out, ",", "metrics", data.metrics); err != nil { + return err } - if err := brf.exportBase64(out); err != nil { - return nil, err + if _, err := out.Write([]byte(`,"snapshot":[`)); err != nil { + return err } - return html[idx:], nil + if _, err := out.Write(data.buff.Bytes()); err != nil { + return err + } + + _, err := out.Write([]byte("]}")) + + return err } -var ( - configTag = []byte(` + + + + \ No newline at end of file diff --git a/dashboard/testdata/config/config.json b/dashboard/testdata/config/config.json new file mode 100644 index 0000000..6d0f5d1 --- /dev/null +++ b/dashboard/testdata/config/config.json @@ -0,0 +1 @@ +{"title":"k6 dashboard","tabs":[{"id":"overview_snapshot","title":"Overview","event":"snapshot","panels":[{"id":"iterations","title":"Iteration Rate","metric":"iterations.rate","format":"rps"},{"id":"vus","title":"VUs","metric":"vus.value","format":"counter"},{"id":"http_reqs","title":"HTTP Request Rate","metric":"http_reqs.rate","format":"rps"},{"id":"http_req_duration","title":"HTTP Request Duration","metric":"http_req_duration.avg","format":"duration"},{"id":"data_received","title":"Received Rate","metric":"data_received.rate","format":"bps"},{"id":"data_sent","title":"Sent Rate","metric":"data_sent.rate","format":"bps"}],"charts":[{"id":"http_reqs","title":"VUs","series":{"vus.value":{"label":"VUs","width":2,"scale":"n","format":"counter"},"http_reqs.rate":{"label":"HTTP request rate","scale":"1/s","format":"rps"}},"axes":[{},{"scale":"n"},{"scale":"1/s","side":1,"format":"rps"}],"scales":[{},{},{}]},{"id":"data","title":"Transfer Rate","series":{"data_sent.rate":{"label":"data sent","rate":true,"scale":"sent","format":"bps"},"data_received.rate":{"label":"data received","rate":true,"width":2,"scale":"received","format":"bps"}},"axes":[{},{"scale":"sent","format":"bps"},{"scale":"received","side":1,"format":"bps"}]},{"id":"http_req_duration","title":"HTTP Request Duration","series":{"http_req_duration.avg":{"label":"avg","width":2,"format":"duration"},"http_req_duration.p(90)":{"label":"p(90)","format":"duration"},"http_req_duration.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}]},{"id":"iteration_duration","title":"Iteration Duration","series":{"iteration_duration.avg":{"label":"avg","width":2,"format":"duration"},"iteration_duration.p(90)":{"label":"p(90)","format":"duration"},"iteration_duration.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}]}],"description":"This section provides an overview of the most important metrics of the test run. Graphs plot the value of metrics over time."},{"id":"timings_snapshot","title":"Timings","event":"snapshot","charts":[{"id":"http_req_duration","title":"HTTP Request Duration","series":{"http_req_duration.avg":{"label":"avg","width":2,"format":"duration"},"http_req_duration.p(90)":{"label":"p(90)","format":"duration"},"http_req_duration.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_waiting","title":"HTTP Request Waiting","series":{"http_req_waiting.avg":{"label":"avg","width":2,"format":"duration"},"http_req_waiting.p(90)":{"label":"p(90)","format":"duration"},"http_req_waiting.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_tls_handshaking","title":"HTTP TLS handshaking","series":{"http_req_tls_handshaking.avg":{"label":"avg","width":2,"format":"duration"},"http_req_tls_handshaking.p(90)":{"label":"p(90)","format":"duration"},"http_req_tls_handshaking.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_sending","title":"HTTP Request Sending","series":{"http_req_sending.avg":{"label":"avg","width":2,"format":"duration"},"http_req_sending.p(90)":{"label":"p(90)","format":"duration"},"http_req_sending.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_connecting","title":"HTTP Request Connecting","series":{"http_req_connecting.avg":{"label":"avg","width":2,"format":"duration"},"http_req_connecting.p(90)":{"label":"p(90)","format":"duration"},"http_req_connecting.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224},{"id":"http_req_receiving","title":"HTTP Request Receiving","series":{"http_req_receiving.avg":{"label":"avg","width":2,"format":"duration"},"http_req_receiving.p(90)":{"label":"p(90)","format":"duration"},"http_req_receiving.p(95)":{"label":"p(95)","format":"duration"}},"axes":[{},{"format":"duration"},{"side":1,"format":"duration"}],"height":224}],"panels":[],"report":true,"description":"This section provides an overview of test run HTTP timing metrics. Graphs plot the value of metrics over time."}]} \ No newline at end of file diff --git a/dashboard/testdata/result.gz b/dashboard/testdata/result.gz index 36084e7..24918e4 100644 Binary files a/dashboard/testdata/result.gz and b/dashboard/testdata/result.gz differ diff --git a/dashboard/testdata/result.json b/dashboard/testdata/result.json index 4be3663..21f1af1 100644 --- a/dashboard/testdata/result.json +++ b/dashboard/testdata/result.json @@ -1,327 +1,327 @@ {"type":"Metric","data":{"name":"http_reqs","type":"counter","contains":"default","thresholds":[],"submetrics":null},"metric":"http_reqs"} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.129911031+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"type":"Metric","data":{"name":"http_req_duration","type":"trend","contains":"time","thresholds":[],"submetrics":[{"name":"http_req_duration{expected_response:true}","suffix":"expected_response:true","tags":{"expected_response":"true"}}]},"metric":"http_req_duration"} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.129911031+02:00","value":117.942754,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:55.756998753+02:00","value":1,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"type":"Metric","data":{"name":"http_req_duration","type":"trend","contains":"time","thresholds":["p(90) < 400"],"submetrics":[{"name":"http_req_duration{expected_response:true}","suffix":"expected_response:true","tags":{"expected_response":"true"}}]},"metric":"http_req_duration"} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:55.756998753+02:00","value":119.255521,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} {"type":"Metric","data":{"name":"http_req_blocked","type":"trend","contains":"time","thresholds":[],"submetrics":null},"metric":"http_req_blocked"} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.129911031+02:00","value":130.837585,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:55.756998753+02:00","value":142.219753,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} {"type":"Metric","data":{"name":"http_req_connecting","type":"trend","contains":"time","thresholds":[],"submetrics":null},"metric":"http_req_connecting"} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.129911031+02:00","value":117.484401,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:55.756998753+02:00","value":120.556109,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} {"type":"Metric","data":{"name":"http_req_tls_handshaking","type":"trend","contains":"time","thresholds":[],"submetrics":null},"metric":"http_req_tls_handshaking"} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.129911031+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:55.756998753+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} {"type":"Metric","data":{"name":"http_req_sending","type":"trend","contains":"time","thresholds":[],"submetrics":null},"metric":"http_req_sending"} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.129911031+02:00","value":0.100898,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:55.756998753+02:00","value":0.093451,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} {"type":"Metric","data":{"name":"http_req_waiting","type":"trend","contains":"time","thresholds":[],"submetrics":null},"metric":"http_req_waiting"} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.129911031+02:00","value":117.778845,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:55.756998753+02:00","value":119.064092,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} {"type":"Metric","data":{"name":"http_req_receiving","type":"trend","contains":"time","thresholds":[],"submetrics":null},"metric":"http_req_receiving"} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.129911031+02:00","value":0.063011,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:55.756998753+02:00","value":0.097978,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} {"type":"Metric","data":{"name":"http_req_failed","type":"rate","contains":"default","thresholds":[],"submetrics":null},"metric":"http_req_failed"} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.129911031+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.14158004+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.14158004+02:00","value":123.301633,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.14158004+02:00","value":137.180202,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.14158004+02:00","value":123.777673,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.14158004+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.14158004+02:00","value":0.115658,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.14158004+02:00","value":123.0911,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.14158004+02:00","value":0.094875,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.14158004+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.501643029+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.501643029+02:00","value":125.894152,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.501643029+02:00","value":245.753496,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.501643029+02:00","value":122.737593,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.501643029+02:00","value":122.948277,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.501643029+02:00","value":0.065791,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.501643029+02:00","value":125.774575,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.501643029+02:00","value":0.053786,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.501643029+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:55.756998753+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:55.7674951+02:00","value":1,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:55.7674951+02:00","value":125.283134,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:55.7674951+02:00","value":146.681468,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:55.7674951+02:00","value":124.98908,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:55.7674951+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:55.7674951+02:00","value":0.075225,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:55.7674951+02:00","value":125.138658,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:55.7674951+02:00","value":0.069251,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:55.7674951+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:56.13164145+02:00","value":1,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.13164145+02:00","value":123.068581,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:56.13164145+02:00","value":251.538063,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:56.13164145+02:00","value":121.900892,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:56.13164145+02:00","value":129.547087,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:56.13164145+02:00","value":0.038439,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:56.13164145+02:00","value":122.978648,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:56.13164145+02:00","value":0.051494,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:56.13164145+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"type":"Metric","data":{"name":"group_duration","type":"trend","contains":"time","thresholds":[],"submetrics":null},"metric":"group_duration"} +{"metric":"group_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.131769554+02:00","value":636.251043,"tags":{"group":"::main","scenario":"camel"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:56.139744241+02:00","value":1,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.139744241+02:00","value":123.480222,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:56.139744241+02:00","value":248.738099,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:56.139744241+02:00","value":123.899612,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:56.139744241+02:00","value":124.772308,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:56.139744241+02:00","value":0.038694,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:56.139744241+02:00","value":123.397187,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:56.139744241+02:00","value":0.044341,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:56.139744241+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"group_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.139858248+02:00","value":644.339304,"tags":{"group":"::main","scenario":"snake"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:56.452591341+02:00","value":1,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.452591341+02:00","value":119.761775,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:56.452591341+02:00","value":0.026111,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:56.452591341+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:56.452591341+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:56.452591341+02:00","value":0.035515,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:56.452591341+02:00","value":119.662348,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:56.452591341+02:00","value":0.063912,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:56.452591341+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:56.465677337+02:00","value":1,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.465677337+02:00","value":124.521805,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:56.465677337+02:00","value":0.009127,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:56.465677337+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:56.465677337+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:56.465677337+02:00","value":0.04234,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:56.465677337+02:00","value":124.435827,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:56.465677337+02:00","value":0.043638,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:56.465677337+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"http://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiles/"}}} +{"type":"Metric","data":{"name":"vus","type":"gauge","contains":"default","thresholds":[],"submetrics":null},"metric":"vus"} +{"metric":"vus","type":"Point","data":{"time":"2023-08-31T16:45:56.495174206+02:00","value":2,"tags":{}}} +{"type":"Metric","data":{"name":"vus_max","type":"gauge","contains":"default","thresholds":[],"submetrics":null},"metric":"vus_max"} +{"metric":"vus_max","type":"Point","data":{"time":"2023-08-31T16:45:56.495174206+02:00","value":9,"tags":{}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:56.585417534+02:00","value":1,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.585417534+02:00","value":132.786236,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:56.585417534+02:00","value":0.002904,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:56.585417534+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:56.585417534+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:56.585417534+02:00","value":0.011672,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:56.585417534+02:00","value":132.737453,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:56.585417534+02:00","value":0.037111,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:56.585417534+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"group_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.585463665+02:00","value":252.737224,"tags":{"group":"::list","scenario":"camel"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:56.601231939+02:00","value":1,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.601231939+02:00","value":135.520146,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:56.601231939+02:00","value":0.002756,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:56.601231939+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:56.601231939+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:56.601231939+02:00","value":0.011806,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:56.601231939+02:00","value":135.471756,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:56.601231939+02:00","value":0.036584,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:56.601231939+02:00","value":0,"tags":{"expected_response":"true","group":"::list","method":"GET","name":"https://test-api.k6.io/public/crocodiles/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/public/crocodiles/"}}} +{"metric":"group_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.601280139+02:00","value":260.220386,"tags":{"group":"::list","scenario":"snake"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:56.906501121+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.906501121+02:00","value":119.46306,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:56.906501121+02:00","value":0.010709,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:56.906501121+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:56.906501121+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:56.906501121+02:00","value":0.054073,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:56.906501121+02:00","value":119.343225,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:56.906501121+02:00","value":0.065762,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:56.906501121+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:56.927502243+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:56.927502243+02:00","value":124.629143,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:56.927502243+02:00","value":0.009936,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:56.927502243+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:56.927502243+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:56.927502243+02:00","value":0.0514,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:56.927502243+02:00","value":124.52171,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:56.927502243+02:00","value":0.056033,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:56.927502243+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:57.030187677+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:57.030187677+02:00","value":123.641308,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:57.030187677+02:00","value":0.002529,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:57.030187677+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:57.030187677+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:57.030187677+02:00","value":0.012893,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:57.030187677+02:00","value":123.537947,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:57.030187677+02:00","value":0.090468,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:57.030187677+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:57.050842076+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:57.050842076+02:00","value":123.295868,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:57.050842076+02:00","value":0.003095,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:57.050842076+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:57.050842076+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:57.050842076+02:00","value":0.016018,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:57.050842076+02:00","value":123.199606,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:57.050842076+02:00","value":0.080244,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:57.050842076+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"vus","type":"Point","data":{"time":"2023-08-31T16:45:57.495756592+02:00","value":2,"tags":{}}} +{"metric":"vus_max","type":"Point","data":{"time":"2023-08-31T16:45:57.495756592+02:00","value":9,"tags":{}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:57.651124133+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:57.651124133+02:00","value":119.467764,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:57.651124133+02:00","value":0.016452,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:57.651124133+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:57.651124133+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:57.651124133+02:00","value":0.06314,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:57.651124133+02:00","value":119.221619,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:57.651124133+02:00","value":0.183005,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:57.651124133+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:57.67622864+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:57.67622864+02:00","value":124.67139,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:57.67622864+02:00","value":0.006661,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:57.67622864+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:57.67622864+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:57.67622864+02:00","value":0.031299,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:57.67622864+02:00","value":124.425376,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:57.67622864+02:00","value":0.214715,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:57.67622864+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:57.774177479+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:57.774177479+02:00","value":122.972865,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:57.774177479+02:00","value":0.009818,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:57.774177479+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:57.774177479+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:57.774177479+02:00","value":0.085288,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:57.774177479+02:00","value":122.8341,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:57.774177479+02:00","value":0.053477,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:57.774177479+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:57.801643631+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:57.801643631+02:00","value":125.325783,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:57.801643631+02:00","value":0.011778,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:57.801643631+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:57.801643631+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:57.801643631+02:00","value":0.049157,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:57.801643631+02:00","value":125.171346,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:57.801643631+02:00","value":0.10528,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:57.801643631+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:58.394296164+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:58.394296164+02:00","value":119.738426,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:58.394296164+02:00","value":0.003996,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:58.394296164+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:58.394296164+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:58.394296164+02:00","value":0.016546,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:58.394296164+02:00","value":119.605971,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:58.394296164+02:00","value":0.115909,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:58.394296164+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:58.426746968+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:58.426746968+02:00","value":124.467251,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:58.426746968+02:00","value":0.004082,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:58.426746968+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:58.426746968+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:58.426746968+02:00","value":0.018097,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:58.426746968+02:00","value":124.340566,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:58.426746968+02:00","value":0.108588,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:58.426746968+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"vus","type":"Point","data":{"time":"2023-08-31T16:45:58.495464484+02:00","value":2,"tags":{}}} +{"metric":"vus_max","type":"Point","data":{"time":"2023-08-31T16:45:58.495464484+02:00","value":9,"tags":{}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:58.519540246+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:58.519540246+02:00","value":125.17896,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:58.519540246+02:00","value":0.006306,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:58.519540246+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:58.519540246+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:58.519540246+02:00","value":0.02903,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:58.519540246+02:00","value":125.033131,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:58.519540246+02:00","value":0.116799,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:58.519540246+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:58.551558524+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:58.551558524+02:00","value":124.763527,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:58.551558524+02:00","value":0.004919,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:58.551558524+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:58.551558524+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:58.551558524+02:00","value":0.026435,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:58.551558524+02:00","value":124.691361,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:58.551558524+02:00","value":0.045731,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:58.551558524+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:59.140129058+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:59.140129058+02:00","value":119.656399,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:59.140129058+02:00","value":0.006139,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:59.140129058+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:59.140129058+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:59.140129058+02:00","value":0.022668,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:59.140129058+02:00","value":119.539306,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:59.140129058+02:00","value":0.094425,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:59.140129058+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:59.177279816+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:59.177279816+02:00","value":124.872307,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:59.177279816+02:00","value":0.007057,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:59.177279816+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:59.177279816+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:59.177279816+02:00","value":0.037737,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:59.177279816+02:00","value":124.670383,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:59.177279816+02:00","value":0.164187,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:59.177279816+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:59.262527203+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:59.262527203+02:00","value":122.358853,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:59.262527203+02:00","value":0.005684,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:59.262527203+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:59.262527203+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:59.262527203+02:00","value":0.022128,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:59.262527203+02:00","value":122.266913,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:59.262527203+02:00","value":0.069812,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:59.262527203+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:59.300470971+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:59.300470971+02:00","value":123.118331,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:59.300470971+02:00","value":0.007383,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:59.300470971+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:59.300470971+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:59.300470971+02:00","value":0.038744,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:59.300470971+02:00","value":123.008581,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:59.300470971+02:00","value":0.071006,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:59.300470971+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"vus","type":"Point","data":{"time":"2023-08-31T16:45:59.495642337+02:00","value":2,"tags":{}}} +{"metric":"vus_max","type":"Point","data":{"time":"2023-08-31T16:45:59.495642337+02:00","value":9,"tags":{}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:59.882737265+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:59.882737265+02:00","value":119.321885,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:59.882737265+02:00","value":0.004731,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:59.882737265+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:59.882737265+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:59.882737265+02:00","value":0.018643,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:59.882737265+02:00","value":119.218875,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:59.882737265+02:00","value":0.084367,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:59.882737265+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:45:59.925602221+02:00","value":1,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:45:59.925602221+02:00","value":124.529488,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:45:59.925602221+02:00","value":0.003689,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:45:59.925602221+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:45:59.925602221+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:45:59.925602221+02:00","value":0.019027,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:45:59.925602221+02:00","value":124.463927,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:45:59.925602221+02:00","value":0.046534,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:45:59.925602221+02:00","value":0,"tags":{"expected_response":"true","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:46:00.00747111+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.00747111+02:00","value":124.689748,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:46:00.00747111+02:00","value":0.004863,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:46:00.00747111+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:46:00.00747111+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:46:00.00747111+02:00","value":0.018998,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:46:00.00747111+02:00","value":124.629706,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:46:00.00747111+02:00","value":0.041044,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:46:00.00747111+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"camel","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:46:00.04889087+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.04889087+02:00","value":123.268326,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:46:00.04889087+02:00","value":0.002648,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:46:00.04889087+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:46:00.04889087+02:00","value":0,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:46:00.04889087+02:00","value":0.015827,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:46:00.04889087+02:00","value":123.194557,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:46:00.04889087+02:00","value":0.057942,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:46:00.04889087+02:00","value":1,"tags":{"error_code":"1404","expected_response":"false","group":"::crocodiles","method":"GET","name":"http://test-api.k6.io/public/crocodiels/${}","proto":"HTTP/1.1","scenario":"snake","status":"404","tls_version":"tls1.3","url":"http://test-api.k6.io/public/crocodiels/${}"}}} +{"metric":"vus","type":"Point","data":{"time":"2023-08-31T16:46:00.495335556+02:00","value":2,"tags":{}}} +{"metric":"vus_max","type":"Point","data":{"time":"2023-08-31T16:46:00.495335556+02:00","value":9,"tags":{}}} +{"metric":"group_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.507656228+02:00","value":3721.082948,"tags":{"group":"::crocodiles","scenario":"camel"}}} {"type":"Metric","data":{"name":"data_sent","type":"counter","contains":"data","thresholds":[],"submetrics":null},"metric":"data_sent"} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:26.501829229+02:00","value":542,"tags":{"group":"","scenario":"contacts"}}} +{"metric":"data_sent","type":"Point","data":{"time":"2023-08-31T16:46:00.507727986+02:00","value":2187,"tags":{"group":"","scenario":"camel"}}} {"type":"Metric","data":{"name":"data_received","type":"counter","contains":"data","thresholds":[],"submetrics":null},"metric":"data_received"} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:26.501829229+02:00","value":17310,"tags":{"group":"","scenario":"contacts"}}} -{"type":"Metric","data":{"name":"iteration_duration","type":"trend","contains":"time","thresholds":[],"submetrics":null},"metric":"iteration_duration"} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.501829229+02:00","value":620.7293,"tags":{"group":"","scenario":"contacts"}}} +{"metric":"data_received","type":"Point","data":{"time":"2023-08-31T16:46:00.507727986+02:00","value":21988,"tags":{"group":"","scenario":"camel"}}} +{"type":"Metric","data":{"name":"iteration_duration","type":"trend","contains":"time","thresholds":["avg < 10000"],"submetrics":null},"metric":"iteration_duration"} +{"metric":"iteration_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.507727986+02:00","value":5012.24749,"tags":{"group":"","scenario":"camel"}}} {"type":"Metric","data":{"name":"iterations","type":"counter","contains":"default","thresholds":[],"submetrics":null},"metric":"iterations"} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:26.501829229+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.503551039+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.503551039+02:00","value":122.992005,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.503551039+02:00","value":238.967274,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.503551039+02:00","value":118.841288,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.503551039+02:00","value":120.064287,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.503551039+02:00","value":0.032962,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.503551039+02:00","value":122.914012,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.503551039+02:00","value":0.045031,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.503551039+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:26.503626501+02:00","value":542,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:26.503626501+02:00","value":17310,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.503626501+02:00","value":622.496499,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:26.503626501+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.618850533+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.618850533+02:00","value":116.95864,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.618850533+02:00","value":0.002358,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.618850533+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.618850533+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.618850533+02:00","value":0.012075,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.618850533+02:00","value":116.872617,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.618850533+02:00","value":0.073948,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.618850533+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.625370161+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.625370161+02:00","value":121.696711,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.625370161+02:00","value":0.001438,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.625370161+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.625370161+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.625370161+02:00","value":0.023494,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.625370161+02:00","value":121.640121,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.625370161+02:00","value":0.033096,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.625370161+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.743000188+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.743000188+02:00","value":124.126599,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.743000188+02:00","value":0.002497,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.743000188+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.743000188+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.743000188+02:00","value":0.011712,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.743000188+02:00","value":124.010244,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.743000188+02:00","value":0.104643,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.743000188+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:26.743049665+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:26.743049665+02:00","value":11839,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.743049665+02:00","value":241.212132,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:26.743049665+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.746479562+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.746479562+02:00","value":121.092218,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.746479562+02:00","value":0.002807,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.746479562+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.746479562+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.746479562+02:00","value":0.008787,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.746479562+02:00","value":121.040895,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.746479562+02:00","value":0.042536,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.746479562+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:26.746495974+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:26.746495974+02:00","value":11839,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.746495974+02:00","value":242.861655,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:26.746495974+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.8598452+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.8598452+02:00","value":116.750439,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.8598452+02:00","value":0.00212,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.8598452+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.8598452+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.8598452+02:00","value":0.009908,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.8598452+02:00","value":116.672141,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.8598452+02:00","value":0.06839,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.8598452+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.869379988+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.869379988+02:00","value":122.850553,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.869379988+02:00","value":0.00202,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.869379988+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.869379988+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.869379988+02:00","value":0.007271,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.869379988+02:00","value":122.768787,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.869379988+02:00","value":0.074495,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.869379988+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"type":"Metric","data":{"name":"vus","type":"gauge","contains":"default","thresholds":[],"submetrics":null},"metric":"vus"} -{"metric":"vus","type":"Point","data":{"time":"2023-05-24T19:12:26.880637801+02:00","value":2,"tags":{}}} -{"type":"Metric","data":{"name":"vus_max","type":"gauge","contains":"default","thresholds":[],"submetrics":null},"metric":"vus_max"} -{"metric":"vus_max","type":"Point","data":{"time":"2023-05-24T19:12:26.880637801+02:00","value":2,"tags":{}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.985025611+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.985025611+02:00","value":125.158005,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.985025611+02:00","value":0.002249,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.985025611+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.985025611+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.985025611+02:00","value":0.010234,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.985025611+02:00","value":125.096122,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.985025611+02:00","value":0.051649,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.985025611+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:26.985075539+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:26.985075539+02:00","value":11839,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.985075539+02:00","value":242.017571,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:26.985075539+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:26.989188949+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.989188949+02:00","value":119.765851,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:26.989188949+02:00","value":0.002704,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:26.989188949+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:26.989188949+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:26.989188949+02:00","value":0.011423,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:26.989188949+02:00","value":119.707111,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:26.989188949+02:00","value":0.047317,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:26.989188949+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:26.989207213+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:26.989207213+02:00","value":11839,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:26.989207213+02:00","value":242.705377,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:26.989207213+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.101874224+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.101874224+02:00","value":116.759663,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.101874224+02:00","value":0.00192,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.101874224+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.101874224+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.101874224+02:00","value":0.009962,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.101874224+02:00","value":116.682447,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.101874224+02:00","value":0.067254,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.101874224+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.111522542+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.111522542+02:00","value":122.276482,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.111522542+02:00","value":0.001766,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.111522542+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.111522542+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.111522542+02:00","value":0.00727,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.111522542+02:00","value":122.207513,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.111522542+02:00","value":0.061699,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.111522542+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.225620294+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.225620294+02:00","value":123.722406,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.225620294+02:00","value":0.00256,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.225620294+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.225620294+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.225620294+02:00","value":0.011352,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.225620294+02:00","value":123.652328,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.225620294+02:00","value":0.058726,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.225620294+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:27.225669491+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:27.225669491+02:00","value":11839,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.225669491+02:00","value":240.58523,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:27.225669491+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.232508953+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.232508953+02:00","value":120.96567,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.232508953+02:00","value":0.002484,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.232508953+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.232508953+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.232508953+02:00","value":0.010695,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.232508953+02:00","value":120.903097,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.232508953+02:00","value":0.051878,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.232508953+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:27.232564416+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:27.232564416+02:00","value":11839,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.232564416+02:00","value":243.350986,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:27.232564416+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.342659078+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.342659078+02:00","value":116.920318,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.342659078+02:00","value":0.021128,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.342659078+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.342659078+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.342659078+02:00","value":0.011409,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.342659078+02:00","value":116.847228,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.342659078+02:00","value":0.061681,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.342659078+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.355383962+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.355383962+02:00","value":122.719985,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.355383962+02:00","value":0.002584,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.355383962+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.355383962+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.355383962+02:00","value":0.013035,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.355383962+02:00","value":122.631418,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.355383962+02:00","value":0.075532,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.355383962+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.466708454+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.466708454+02:00","value":124.025091,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.466708454+02:00","value":0.002293,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.466708454+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.466708454+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.466708454+02:00","value":0.010545,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.466708454+02:00","value":123.94644,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.466708454+02:00","value":0.068106,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.466708454+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:27.466776343+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:27.466776343+02:00","value":11845,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.466776343+02:00","value":241.098505,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:27.466776343+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.476649484+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.476649484+02:00","value":121.205673,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.476649484+02:00","value":0.002966,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.476649484+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.476649484+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.476649484+02:00","value":0.011246,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.476649484+02:00","value":121.130528,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.476649484+02:00","value":0.063899,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.476649484+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:27.476692431+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:27.476692431+02:00","value":11867,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.476692431+02:00","value":244.117848,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:27.476692431+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.583734946+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.583734946+02:00","value":116.913037,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.583734946+02:00","value":0.001957,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.583734946+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.583734946+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.583734946+02:00","value":0.011292,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.583734946+02:00","value":116.811255,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.583734946+02:00","value":0.09049,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.583734946+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.599356825+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.599356825+02:00","value":122.624232,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.599356825+02:00","value":0.002607,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.599356825+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.599356825+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.599356825+02:00","value":0.010816,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.599356825+02:00","value":122.546526,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.599356825+02:00","value":0.06689,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.599356825+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.70897405+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.70897405+02:00","value":125.217609,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.70897405+02:00","value":0.002493,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.70897405+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.70897405+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.70897405+02:00","value":0.011578,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.70897405+02:00","value":125.149104,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.70897405+02:00","value":0.056927,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.70897405+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:27.709002377+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:27.709002377+02:00","value":11839,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.709002377+02:00","value":242.21753,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:27.709002377+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.719894158+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.719894158+02:00","value":120.49525,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.719894158+02:00","value":0.003114,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.719894158+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.719894158+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.719894158+02:00","value":0.013384,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.719894158+02:00","value":120.411801,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.719894158+02:00","value":0.070065,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.719894158+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:27.719926259+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:27.719926259+02:00","value":11867,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.719926259+02:00","value":243.224766,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:27.719926259+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.826017423+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.826017423+02:00","value":116.965187,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.826017423+02:00","value":0.002387,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.826017423+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.826017423+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.826017423+02:00","value":0.010039,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.826017423+02:00","value":116.866155,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.826017423+02:00","value":0.088993,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.826017423+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.843475514+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.843475514+02:00","value":123.497936,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.843475514+02:00","value":0.002557,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.843475514+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.843475514+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.843475514+02:00","value":0.029664,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.843475514+02:00","value":123.385566,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.843475514+02:00","value":0.082706,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.843475514+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"http://test.k6.io","proto":"HTTP/1.1","scenario":"contacts","status":"308","url":"http://test.k6.io"}}} -{"metric":"vus","type":"Point","data":{"time":"2023-05-24T19:12:27.88067206+02:00","value":2,"tags":{}}} -{"metric":"vus_max","type":"Point","data":{"time":"2023-05-24T19:12:27.88067206+02:00","value":2,"tags":{}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.952095983+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.952095983+02:00","value":126.039021,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.952095983+02:00","value":0.002754,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.952095983+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.952095983+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.952095983+02:00","value":0.01202,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.952095983+02:00","value":125.94474,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.952095983+02:00","value":0.082261,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.952095983+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:27.952150149+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:27.952150149+02:00","value":11839,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.952150149+02:00","value":243.139124,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:27.952150149+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"http_reqs","type":"Point","data":{"time":"2023-05-24T19:12:27.963888415+02:00","value":1,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.963888415+02:00","value":120.378519,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-05-24T19:12:27.963888415+02:00","value":0.002524,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-05-24T19:12:27.963888415+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-05-24T19:12:27.963888415+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_sending","type":"Point","data":{"time":"2023-05-24T19:12:27.963888415+02:00","value":0.010839,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-05-24T19:12:27.963888415+02:00","value":120.275787,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-05-24T19:12:27.963888415+02:00","value":0.091893,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"http_req_failed","type":"Point","data":{"time":"2023-05-24T19:12:27.963888415+02:00","value":0,"tags":{"expected_response":"true","group":"","method":"GET","name":"https://test.k6.io/","proto":"HTTP/1.1","scenario":"contacts","status":"200","tls_version":"tls1.3","url":"https://test.k6.io/"}}} -{"metric":"data_sent","type":"Point","data":{"time":"2023-05-24T19:12:27.963934259+02:00","value":202,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"data_received","type":"Point","data":{"time":"2023-05-24T19:12:27.963934259+02:00","value":11839,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iteration_duration","type":"Point","data":{"time":"2023-05-24T19:12:27.963934259+02:00","value":243.999499,"tags":{"group":"","scenario":"contacts"}}} -{"metric":"iterations","type":"Point","data":{"time":"2023-05-24T19:12:27.963934259+02:00","value":1,"tags":{"group":"","scenario":"contacts"}}} +{"metric":"iterations","type":"Point","data":{"time":"2023-08-31T16:46:00.507727986+02:00","value":1,"tags":{"group":"","scenario":"camel"}}} +{"metric":"group_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.549762635+02:00","value":3747.2954,"tags":{"group":"::crocodiles","scenario":"snake"}}} +{"metric":"data_sent","type":"Point","data":{"time":"2023-08-31T16:46:00.54979056+02:00","value":2187,"tags":{"group":"","scenario":"snake"}}} +{"metric":"data_received","type":"Point","data":{"time":"2023-08-31T16:46:00.54979056+02:00","value":21988,"tags":{"group":"","scenario":"snake"}}} +{"metric":"iteration_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.54979056+02:00","value":5054.304441,"tags":{"group":"","scenario":"snake"}}} +{"metric":"iterations","type":"Point","data":{"time":"2023-08-31T16:46:00.54979056+02:00","value":1,"tags":{"group":"","scenario":"snake"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:46:00.627060265+02:00","value":1,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.627060265+02:00","value":119.109339,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:46:00.627060265+02:00","value":0.012715,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:46:00.627060265+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:46:00.627060265+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:46:00.627060265+02:00","value":0.049515,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:46:00.627060265+02:00","value":118.883257,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:46:00.627060265+02:00","value":0.176567,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:46:00.627060265+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"camel","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:46:00.674193758+02:00","value":1,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.674193758+02:00","value":124.293465,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:46:00.674193758+02:00","value":0.004447,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:46:00.674193758+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:46:00.674193758+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:46:00.674193758+02:00","value":0.019643,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:46:00.674193758+02:00","value":124.098918,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:46:00.674193758+02:00","value":0.174904,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:46:00.674193758+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"http://test-api.k6.io","proto":"HTTP/1.1","scenario":"snake","status":"308","url":"http://test-api.k6.io"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:46:00.750806322+02:00","value":1,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.750806322+02:00","value":123.654929,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:46:00.750806322+02:00","value":0.009176,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:46:00.750806322+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:46:00.750806322+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:46:00.750806322+02:00","value":0.043753,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:46:00.750806322+02:00","value":123.53632,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_receiving","type":"Point","data":{"time":"2023-08-31T16:46:00.750806322+02:00","value":0.074856,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_failed","type":"Point","data":{"time":"2023-08-31T16:46:00.750806322+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"camel","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"group_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.750878943+02:00","value":243.037232,"tags":{"group":"::main","scenario":"camel"}}} +{"metric":"http_reqs","type":"Point","data":{"time":"2023-08-31T16:46:00.798001607+02:00","value":1,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_duration","type":"Point","data":{"time":"2023-08-31T16:46:00.798001607+02:00","value":123.729828,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_blocked","type":"Point","data":{"time":"2023-08-31T16:46:00.798001607+02:00","value":0.008687,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_connecting","type":"Point","data":{"time":"2023-08-31T16:46:00.798001607+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_tls_handshaking","type":"Point","data":{"time":"2023-08-31T16:46:00.798001607+02:00","value":0,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_sending","type":"Point","data":{"time":"2023-08-31T16:46:00.798001607+02:00","value":0.043344,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} +{"metric":"http_req_waiting","type":"Point","data":{"time":"2023-08-31T16:46:00.798001607+02:00","value":123.584215,"tags":{"expected_response":"true","group":"::main","method":"GET","name":"https://test-api.k6.io/","proto":"HTTP/1.1","scenario":"snake","status":"200","tls_version":"tls1.3","url":"https://test-api.k6.io/"}}} diff --git a/dashboard/testdata/ui/index.html b/dashboard/testdata/ui/index.html new file mode 100644 index 0000000..ff019c2 --- /dev/null +++ b/dashboard/testdata/ui/index.html @@ -0,0 +1,13 @@ + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/dashboard/web.go b/dashboard/web.go index ca771ad..5bfd173 100644 --- a/dashboard/web.go +++ b/dashboard/web.go @@ -24,6 +24,9 @@ const ( cumulativeEvent = "cumulative" startEvent = "start" stopEvent = "stop" + configEvent = "config" + metricEvent = "metric" + paramEvent = "param" ) type webServer struct { @@ -31,14 +34,14 @@ type webServer struct { *http.ServeMux } -func newWebServer(uiFS fs.FS, uiConfig []byte, reportHandler http.Handler, logger logrus.FieldLogger) *webServer { //nolint:ireturn +func newWebServer(uiFS fs.FS, reportHandler http.Handler, logger logrus.FieldLogger) *webServer { //nolint:ireturn srv := &webServer{ eventEmitter: newEventEmitter(eventChannel, logger), ServeMux: http.NewServeMux(), } srv.Handle(pathEvents, srv.eventEmitter) - srv.HandleFunc(pathUI, uiHandler(pathUI, uiFS, uiConfig)) + srv.Handle(pathUI, http.StripPrefix(pathUI, http.FileServer(http.FS(uiFS)))) srv.Handle(pathReport, reportHandler) srv.HandleFunc("/", rootHandler(pathUI)) @@ -76,23 +79,3 @@ func rootHandler(uiPath string) http.HandlerFunc { http.NotFound(w, r) } } - -func uiHandler(uiPath string, uiFS fs.FS, uiConfig []byte) http.HandlerFunc { - handler := http.StripPrefix(uiPath, http.FileServer(http.FS(uiFS))) - - if len(uiConfig) == 0 { - return handler.ServeHTTP - } - - return func(res http.ResponseWriter, req *http.Request) { - if req.URL.Path != uiPath+"config.js" { - handler.ServeHTTP(res, req) - - return - } - - res.Header().Set("Content-Type", "text/javascript; charset=utf-8") - res.WriteHeader(http.StatusOK) - res.Write(uiConfig) // nolint:errcheck - } -} diff --git a/dashboard/web_test.go b/dashboard/web_test.go index 08b02aa..055521b 100644 --- a/dashboard/web_test.go +++ b/dashboard/web_test.go @@ -5,15 +5,9 @@ package dashboard import ( - "io" "net/http" - "net/http/httptest" - "os" - "path/filepath" - "strings" "testing" - "github.com/grafana/xk6-dashboard/assets" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" ) @@ -21,7 +15,7 @@ import ( func Test_newWebServer(t *testing.T) { t.Parallel() - srv := newWebServer(assets.DirUI(), []byte{}, http.NotFoundHandler(), logrus.StandardLogger()) + srv := newWebServer(testDirUI(t), http.NotFoundHandler(), logrus.StandardLogger()) assert.NotNil(t, srv) assert.NotNil(t, srv.ServeMux) @@ -55,7 +49,7 @@ func Test_newWebServer(t *testing.T) { func Test_webServer_used_addr(t *testing.T) { t.Parallel() - srv := newWebServer(assets.DirUI(), []byte{}, http.NotFoundHandler(), logrus.StandardLogger()) + srv := newWebServer(testDirUI(t), http.NotFoundHandler(), logrus.StandardLogger()) addr := getRandomAddr(t) @@ -66,59 +60,3 @@ func Test_webServer_used_addr(t *testing.T) { assert.Error(t, err) } - -func Test_uiHandler_no_config(t *testing.T) { - t.Parallel() - - handler := uiHandler("/foo/", assets.DirUI(), []byte{}) - - rec := httptest.NewRecorder() - req := httptest.NewRequest(http.MethodGet, "/foo/config.js", nil) - - handler(rec, req) - - res := rec.Result() // nolint:bodyclose - - assert.Equal(t, http.StatusOK, res.StatusCode) - assert.Contains(t, res.Header.Get("Content-Type"), "/javascript") - - body, err := io.ReadAll(res.Body) - - assert.NoError(t, err) - assert.Equal(t, "export default defaultConfig", strings.TrimSpace(string(body))) -} - -func Test_uiHandler(t *testing.T) { - t.Parallel() - - config, err := os.ReadFile(filepath.Join("..", ".dashboard.js")) - - assert.NoError(t, err) - - handler := uiHandler("/foo/", assets.DirUI(), config) - - rec := httptest.NewRecorder() - req := httptest.NewRequest(http.MethodGet, "/foo/config.js", nil) - - handler(rec, req) - - res := rec.Result() // nolint:bodyclose - - assert.Equal(t, http.StatusOK, res.StatusCode) - assert.Contains(t, res.Header.Get("Content-Type"), "/javascript") - - body, err := io.ReadAll(res.Body) - - assert.NoError(t, err) - assert.NotEmpty(t, body) - assert.NotEqual(t, "export default defaultConfig", strings.TrimSpace(string(body))) - - rec = httptest.NewRecorder() - req = httptest.NewRequest(http.MethodGet, "/foo/init.js", nil) - - handler(rec, req) - - res = rec.Result() // nolint:bodyclose - - assert.Equal(t, http.StatusOK, res.StatusCode) -} diff --git a/go.mod b/go.mod index 96d0724..0078176 100644 --- a/go.mod +++ b/go.mod @@ -3,33 +3,37 @@ module github.com/grafana/xk6-dashboard go 1.19 require ( + github.com/dop251/goja v0.0.0-20230621100801-7749907a8a20 github.com/gorilla/schema v1.2.0 github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 github.com/r3labs/sse/v2 v2.10.0 - github.com/sirupsen/logrus v1.9.0 + github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.4.0 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.4 github.com/tidwall/gjson v1.14.4 - go.k6.io/k6 v0.45.1 + go.k6.io/k6 v0.46.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dlclark/regexp2 v1.9.0 // indirect github.com/fatih/color v1.15.0 // indirect + github.com/go-sourcemap/sourcemap v2.1.4-0.20211119122758-180fcef48034+incompatible // indirect + github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect github.com/mstoykov/atlas v0.0.0-20220811071828-388f114305dd // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/spf13/afero v1.1.2 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect - golang.org/x/net v0.10.0 // indirect + golang.org/x/net v0.11.0 // indirect golang.org/x/sys v0.10.0 // indirect - golang.org/x/text v0.9.0 // indirect + golang.org/x/text v0.10.0 // indirect golang.org/x/time v0.3.0 // indirect gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect gopkg.in/guregu/null.v3 v3.3.0 // indirect diff --git a/go.sum b/go.sum index 2cda202..fec02ed 100644 --- a/go.sum +++ b/go.sum @@ -1,64 +1,68 @@ -github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+s7s0MwaRv9igoPqLRdzOLzw/8Xvq8= -github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= -github.com/Soontao/goHttpDigestClient v0.0.0-20170320082612-6d28bb1415c5 h1:k+1+doEm31k0rRjCjLnGG3YRkuO9ljaEyS2ajZd6GK8= github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= -github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= -github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/chromedp/cdproto v0.0.0-20221023212508-67ada9507fb2 h1:xESwMZNYkDnZf9MUk+6lXfMbpDnEJwlEuIxKYKM1vJY= -github.com/chromedp/sysutil v1.0.0 h1:+ZxhTpfpZlmchB58ih/LBHX52ky7w2VhQVKQMucy3Ic= +github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= +github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= +github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dlclark/regexp2 v1.9.0 h1:pTK/l/3qYIKaRXuHnEnIf7Y5NxfRPfpb7dis6/gdlVI= -github.com/dop251/goja v0.0.0-20230531210528-d7324b2d74f7 h1:cVGkvrdHgyBkYeB6kMCaF5j2d9Bg4trgbIpcUrKrvk4= +github.com/dlclark/regexp2 v1.9.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja v0.0.0-20230621100801-7749907a8a20 h1:gcmFd1xefhuBETzu0XcDETw72GQ7rL7GA41Tfi1JiqY= +github.com/dop251/goja v0.0.0-20230621100801-7749907a8a20/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= +github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= +github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sourcemap/sourcemap v2.1.4-0.20211119122758-180fcef48034+incompatible h1:bopx7t9jyUNX1ebhr0G4gtQWmUOgwQRI0QsYhdYLgkU= +github.com/go-sourcemap/sourcemap v2.1.4-0.20211119122758-180fcef48034+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/grafana/xk6-browser v0.10.0 h1:Mnx0Ho+mlyFGlV7zW7zXkN0njRglh9JflLV+OzXSaRk= -github.com/grafana/xk6-grpc v0.1.2 h1:gNN3PYV2dIPoq1zTVz8YOxrWhl1D15jhRR0EA9ZYhBw= -github.com/grafana/xk6-redis v0.1.1 h1:rvWnLanRB2qzDwuY6NMBe6PXei3wJ3kjYvfCwRJ+q+8= -github.com/grafana/xk6-timers v0.1.2 h1:YVM6hPDgvy4SkdZQpd+/r9M0kDi1g+QdbSxW5ClfwDk= -github.com/grafana/xk6-webcrypto v0.1.0 h1:StrQZkUi4vo3bAMmBUHvIQ8P+zNKCH3AwN22TZdDwHs= -github.com/grafana/xk6-websockets v0.2.0 h1:oZcq4lm/p/Tc94ZMMNeYDML0DjU39jasC6kTyc6iF+8= +github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= +github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mccutchen/go-httpbin v1.1.2-0.20190116014521-c5cb2f4802fa h1:lx8ZnNPwjkXSzOROz0cg69RlErRXs+L3eDkggASWKLo= github.com/mstoykov/atlas v0.0.0-20220811071828-388f114305dd h1:AC3N94irbx2kWGA8f/2Ks7EQl2LxKIRQYuT9IJDwgiI= github.com/mstoykov/atlas v0.0.0-20220811071828-388f114305dd/go.mod h1:9vRHVuLCjoFfE3GT06X0spdOAO+Zzo4AMjdIwUHBvAk= github.com/mstoykov/envconfig v1.4.1-0.20220114105314-765c6d8c76f1 h1:94EkGmhXrVUEal+uLwFUf4fMXPhZpM5tYxuIsxrCCbI= -github.com/mstoykov/k6-taskqueue-lib v0.1.0 h1:M3eww1HSOLEN6rIkbNOJHhOVhlqnqkhYj7GTieiMBz4= -github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/r3labs/sse/v2 v2.10.0 h1:hFEkLLFY4LDifoHdiCN/LlGBAdVJYsANaLqNYa1l/v0= github.com/r3labs/sse/v2 v2.10.0/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I= +github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/serenize/snaker v0.0.0-20201027110005-a7ad2135616e h1:zWKUYT07mGmVBH+9UgnHXd/ekCK99C8EbDSAt5qsjXE= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= @@ -66,13 +70,9 @@ github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -80,35 +80,61 @@ github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JT github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -go.k6.io/k6 v0.45.1 h1:z+iVxE7Qze2Ka8tKvnjerOsoTuQb8e27Vqd1wcG2IFI= -go.k6.io/k6 v0.45.1/go.mod h1:SBO/sqx6h/a0lJqEioMEpneb6zULogIyDmz+ufFqtIE= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.k6.io/k6 v0.46.0 h1:zvPQRZw229XVEvzZ5C6GrAw1dWXU2MU6DhmVGb4UWRM= +go.k6.io/k6 v0.46.0/go.mod h1:3T693CkQuj8OBxlo3Bi32yua/9UfzYMnAwku3MV0TeE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191116160921-f9c825593386/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/grpc v1.56.1 h1:z0dNfjIl0VpaZ9iSVjA6daGatAYwPGstTjt5vkRMFkQ= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/guregu/null.v3 v3.3.0 h1:8j3ggqq+NgKt/O7mbFVUFKUMWN+l1AmT5jQmJ6nPh2c= gopkg.in/guregu/null.v3 v3.3.0/go.mod h1:E4tX2Qe3h7QdL+uZ3a0vqvYwKQsRSQKM5V4YltdgH9Y= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/register.go b/register.go index d03e69c..e617d45 100644 --- a/register.go +++ b/register.go @@ -5,12 +5,20 @@ package dashboard import ( - "github.com/grafana/xk6-dashboard/assets" + "os" + + "github.com/grafana/xk6-dashboard/customize" "github.com/grafana/xk6-dashboard/dashboard" "go.k6.io/k6/output" ) func init() { + dashboard.Customize = customize.Customize + + if len(os.Args) > 1 && os.Args[1] == "dashboard" { + dashboard.Execute(fileConfig(), dirUI(), dirBrief()) + } + register() } @@ -19,5 +27,5 @@ func register() { } func ctor(params output.Params) (output.Output, error) { //nolint:ireturn - return dashboard.New(params, assets.DirUI(), assets.DirBrief()) + return dashboard.New(params, fileConfig(), dirUI(), dirBrief()) } diff --git a/script-hour.js b/script-hour.js index a7849d6..6a82ef1 100644 --- a/script-hour.js +++ b/script-hour.js @@ -1,10 +1,10 @@ import http from "k6/http"; -import { sleep } from "k6"; +import { sleep, group } from "k6"; export let options = { discardResponseBodies: true, scenarios: { - contacts: { + camel: { executor: "ramping-vus", startVUs: 1, stages: [ @@ -23,7 +23,40 @@ export let options = { { duration: "3m", target: 10 }, { duration: "2m", target: 3 }, { duration: "1m", target: 1 }, + ], + gracefulRampDown: "0s", + }, + snake: { + executor: "ramping-vus", + startVUs: 1, + stages: [ + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 1 }, + { duration: "36m", target: 5 }, + + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 1 }, ], gracefulRampDown: "0s", }, @@ -31,6 +64,22 @@ export let options = { }; export default function () { - http.get("http://test.k6.io"); - sleep(3); + group("main", () => { + http.get("http://test-api.k6.io"); + }); + + sleep(0.2); + + group("list", () => { + http.get("http://test-api.k6.io/public/crocodiles/"); + }); + + sleep(0.2); + + group("crocodiles", () => { + for (var i = 0; i < 5; i++) { + http.get(http.url`http://test-api.k6.io/public/crocodiels/${i}`); + sleep(0.5); + } + }); } diff --git a/script.js b/script.js index 7f6f195..a1ea8a6 100644 --- a/script.js +++ b/script.js @@ -1,26 +1,65 @@ import http from "k6/http"; -import { sleep } from "k6"; +import { sleep, group } from "k6"; export let options = { discardResponseBodies: true, scenarios: { - contacts: { + camel: { executor: "ramping-vus", startVUs: 1, stages: [ { duration: "1m", target: 2 }, - { duration: "3m", target: 10 }, + { duration: "3m", target: 5 }, { duration: "2m", target: 2 }, - { duration: "3m", target: 10 }, + { duration: "3m", target: 5 }, { duration: "2m", target: 3 }, { duration: "1m", target: 1 }, ], gracefulRampDown: "0s", }, + snake: { + executor: "ramping-vus", + startVUs: 1, + stages: [ + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 4 }, + { duration: "1m", target: 1 }, + { duration: "1m", target: 1 }, + ], + gracefulRampDown: "0s", + }, + }, + thresholds: { + http_req_duration: ["p(90) < 400"], + iteration_duration: ["avg < 10000"], }, }; export default function () { - http.get("http://test.k6.io"); - sleep(3); + group("main", () => { + http.get("http://test-api.k6.io"); + }); + + sleep(0.2); + + group("list", () => { + http.get("http://test-api.k6.io/public/crocodiles/"); + }); + + sleep(0.2); + + group("crocodiles", () => { + for (var i = 0; i < 5; i++) { + http.get(http.url`http://test-api.k6.io/public/crocodiels/${i}`); + sleep(0.5); + } + }); } diff --git a/xk6-dashboard.code-workspace b/xk6-dashboard.code-workspace new file mode 100644 index 0000000..2d4b773 --- /dev/null +++ b/xk6-dashboard.code-workspace @@ -0,0 +1,32 @@ +{ + "folders": [ + { + "name": "✨ xk6-dashboard", + "path": "." + }, + { + "name": "📦 @xk6-dashboard/brief", + "path": "assets/packages/brief" + }, + { + "name": "📦 @xk6-dashboard/model", + "path": "assets/packages/model" + }, + { + "name": "📦 @xk6-dashboard/ui", + "path": "assets/packages/ui" + } + ], + "settings": { + "conventionalCommits.scopes": [ + "module", + "ui", + "report" + ], + "go.lintTool": "golangci-lint", + "go.lintFlags": [ + "--fast" + ], + "standard.autoFixOnSave": true + } +}