From 951cbc41acf9e6f40932bdc22c81b8ba0be7fe1b Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 08:16:01 +0000 Subject: [PATCH] Vendor authoritative rtichoke_viz v0.22.1 asset and validate specs Co-authored-by: uriahf <11351434+uriahf@users.noreply.github.com> --- .github/workflows/python-package.yml | 4 +- .github/workflows/quarto-acceptance.yml | 5 + src/rtichoke/__init__.py | 5 + src/rtichoke/_renderers.py | 74 +- src/rtichoke/_report_browser.py | 18 +- .../_vendor/rtichoke_viz/VENDORED_FROM | 8 +- .../rtichoke_viz/rtichoke-viz-0.20.2.tar.gz | Bin 169338 -> 0 bytes .../rtichoke_viz/rtichoke-viz-0.22.1.tar.gz | Bin 0 -> 181604 bytes .../rtichoke-viz-report.schema.json | 1926 ++++++++++++++++- .../rtichoke_viz/rtichoke-viz-v2.schema.json | 297 +++ .../_vendor/rtichoke_viz/rtichoke-viz.css | 335 +++ .../_vendor/rtichoke_viz/rtichoke-viz.js | 36 +- src/rtichoke/_viz_spec_v2.py | 255 ++- src/rtichoke/probs_distribution.py | 127 ++ tests/test_probs_histogram.py | 582 +++++ ...test_probs_histogram_browser_acceptance.py | 169 ++ tests/test_public_exports.py | 1 + tests/test_rtichoke_viz_vendor.py | 22 +- 18 files changed, 3734 insertions(+), 130 deletions(-) delete mode 100644 src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.20.2.tar.gz create mode 100644 src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.22.1.tar.gz create mode 100644 src/rtichoke/probs_distribution.py create mode 100644 tests/test_probs_histogram.py create mode 100644 tests/test_probs_histogram_browser_acceptance.py diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index eea114ee..7aa6989f 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -52,7 +52,7 @@ jobs: prefix = "rtichoke/_vendor/rtichoke_viz/" required = { f"{prefix}VENDORED_FROM", - f"{prefix}rtichoke-viz-0.20.2.tar.gz", + f"{prefix}rtichoke-viz-0.22.1.tar.gz", f"{prefix}rtichoke-viz.js", f"{prefix}rtichoke-viz.css", f"{prefix}rtichoke-viz.schema.json", @@ -60,6 +60,8 @@ jobs: f"{prefix}rtichoke-viz-report.schema.json", } assert required <= names + assert f"{prefix}rtichoke-viz-0.22.0.tar.gz" not in names + assert f"{prefix}rtichoke-viz-0.20.2.tar.gz" not in names assert f"{prefix}rtichoke-viz-0.20.1.tar.gz" not in names assert f"{prefix}rtichoke-viz-0.20.0.tar.gz" not in names assert f"{prefix}rtichoke-viz-0.19.0.tar.gz" not in names diff --git a/.github/workflows/quarto-acceptance.yml b/.github/workflows/quarto-acceptance.yml index 2ef7904a..33344b05 100644 --- a/.github/workflows/quarto-acceptance.yml +++ b/.github/workflows/quarto-acceptance.yml @@ -15,6 +15,8 @@ on: - "tests/test_summary_report_browser.py" - "tests/test_summary_report_times_browser.py" - "tests/test_decision_curve_browser_acceptance.py" + - "tests/test_probs_histogram_browser_acceptance.py" + - "src/rtichoke/probs_distribution.py" - ".github/workflows/quarto-acceptance.yml" pull_request: branches: ["main"] @@ -30,6 +32,8 @@ on: - "tests/test_summary_report_browser.py" - "tests/test_summary_report_times_browser.py" - "tests/test_decision_curve_browser_acceptance.py" + - "tests/test_probs_histogram_browser_acceptance.py" + - "src/rtichoke/probs_distribution.py" - ".github/workflows/quarto-acceptance.yml" workflow_dispatch: @@ -65,3 +69,4 @@ jobs: tests/test_decision_curve_browser_acceptance.py tests/test_summary_report_browser.py tests/test_summary_report_times_browser.py + tests/test_probs_histogram_browser_acceptance.py diff --git a/src/rtichoke/__init__.py b/src/rtichoke/__init__.py index 896d7eb1..ff79f37f 100644 --- a/src/rtichoke/__init__.py +++ b/src/rtichoke/__init__.py @@ -57,12 +57,17 @@ render_performance_table as render_performance_table, ) +from rtichoke.probs_distribution import ( + create_probs_histogram as create_probs_histogram, +) + from rtichoke.summary_report.summary_report import ( create_summary_report as create_summary_report, create_summary_report_times as create_summary_report_times, ) __all__ = [ + "create_probs_histogram", "create_roc_curve", "create_roc_curve_times", "plot_roc_curve", diff --git a/src/rtichoke/_renderers.py b/src/rtichoke/_renderers.py index fae719e0..2d10c95f 100644 --- a/src/rtichoke/_renderers.py +++ b/src/rtichoke/_renderers.py @@ -8,6 +8,8 @@ from pathlib import Path from typing import Any, Literal +from rtichoke._report_browser import _resolve_render_report_symbol, _sanitize_nan_values + Renderer = Literal["plotly", "matplotlib", "browser", "rtichoke_viz"] _SUPPORTED_RENDERERS = ("plotly", "matplotlib", "browser", "rtichoke_viz") @@ -46,31 +48,69 @@ def write_html(self, path: str | Path) -> Path: output = Path(path) output.parent.mkdir(parents=True, exist_ok=True) vendor = files("rtichoke").joinpath("_vendor", "rtichoke_viz") - for asset in ("rtichoke-viz.js", "rtichoke-viz.css"): - (output.parent / asset).write_bytes(vendor.joinpath(asset).read_bytes()) - render_export = { - "roc": "renderRocV2", - "calibration": "renderCalibrationV2", - "precision_recall": "renderPrecisionRecallV2", - "gains": "renderGainsV2", - "lift": "renderLiftV2", - "decision_curve": "renderDecisionCurveV2", - "interventions_avoided": "renderInterventionsAvoidedV2", - }.get(str(self.spec.get("type"))) - if render_export is None: - raise ValueError( - f"rtichoke_viz does not support chart type {self.spec.get('type')!r}." + chart_type = str(self.spec.get("type")) + if chart_type == "prediction_distribution": + viz_js = vendor.joinpath("rtichoke-viz.js").read_text(encoding="utf-8") + viz_css = vendor.joinpath("rtichoke-viz.css").read_text(encoding="utf-8") + render_fn = _resolve_render_report_symbol( + viz_js, "renderPredictionDistribution" + ) + sanitized_spec = _sanitize_nan_values(self.spec) + spec_json = json.dumps(sanitized_spec, separators=(",", ":")).replace( + " + html = f""" + + + + + + rtichoke prediction_distribution chart + + +
+ + + + +""" + else: + for asset in ("rtichoke-viz.js", "rtichoke-viz.css"): + (output.parent / asset).write_bytes(vendor.joinpath(asset).read_bytes()) + + render_export = { + "roc": "renderRocV2", + "calibration": "renderCalibrationV2", + "precision_recall": "renderPrecisionRecallV2", + "gains": "renderGainsV2", + "lift": "renderLiftV2", + "decision_curve": "renderDecisionCurveV2", + "interventions_avoided": "renderInterventionsAvoidedV2", + }.get(chart_type) + if render_export is None: + raise ValueError( + f"rtichoke_viz does not support chart type {chart_type!r}." + ) + + spec_json = json.dumps(self.spec, separators=(",", ":")).replace( + " - rtichoke {self.spec.get("type")} chart + rtichoke {chart_type} chart
diff --git a/src/rtichoke/_report_browser.py b/src/rtichoke/_report_browser.py index 2f7a05cd..4611aec8 100644 --- a/src/rtichoke/_report_browser.py +++ b/src/rtichoke/_report_browser.py @@ -9,8 +9,10 @@ from typing import Any -def _resolve_render_report_symbol(viz_js: str) -> str: - """Resolve the local callable identifier exported as 'renderReport' from an ESM bundle.""" +def _resolve_render_report_symbol( + viz_js: str, symbol_name: str = "renderReport" +) -> str: + """Resolve the local callable identifier exported as symbol_name from an ESM bundle.""" export_pattern = re.compile(r"export\s*\{([^}]+)\}", re.DOTALL) for match in export_pattern.finditer(viz_js): clause = match.group(1) @@ -18,19 +20,19 @@ def _resolve_render_report_symbol(viz_js: str) -> str: parts = item.strip().split() if not parts: continue - if len(parts) == 3 and parts[1] == "as" and parts[2] == "renderReport": + if len(parts) == 3 and parts[1] == "as" and parts[2] == symbol_name: return parts[0] - if len(parts) == 1 and parts[0] == "renderReport": - return "renderReport" + if len(parts) == 1 and parts[0] == symbol_name: + return symbol_name if re.search( - r"export\s+(?:async\s+)?function\s+renderReport\b|export\s+(?:const|let|var)\s+renderReport\b", + rf"export\s+(?:async\s+)?function\s+{symbol_name}\b|export\s+(?:const|let|var)\s+{symbol_name}\b", viz_js, ): - return "renderReport" + return symbol_name raise ValueError( - "Could not resolve 'renderReport' export in provided JavaScript bundle." + f"Could not resolve {symbol_name!r} export in provided JavaScript bundle." ) diff --git a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM index 075f5b99..277f0692 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM +++ b/src/rtichoke/_vendor/rtichoke_viz/VENDORED_FROM @@ -1,5 +1,5 @@ repository=https://github.com/uriahf/rtichoke_viz -release=v0.20.2 -source_commit=40748bdeff7d535f516744886b64056f3aaa518d -archive=rtichoke-viz-0.20.2.tar.gz -sha256=2e4851159ceea0e3b2420c7e0aa22a566b94ec7057c27b13b7db7da88de34d11 +release=v0.22.1 +source_commit=7cc8e8c23ee2f073ff3d8e4f32198eaac4785eb2 +archive=rtichoke-viz-0.22.1.tar.gz +sha256=b812f3fc283d404d3d5982cd1a84157c3cce1f13afcdc87c392d7c9ddc029189 diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.20.2.tar.gz b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.20.2.tar.gz deleted file mode 100644 index 9abc58c8091d2cfd5ed56a708f077c6f836c7ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169338 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

;1|C`&D~XOCcmB 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

^B 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

>_|^;sMn?q;sXeY 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 literal 0 HcmV?d00001 diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json index 9b237629..e570ef8e 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-report.schema.json @@ -4672,6 +4672,303 @@ } } ] + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "bins", + "operatingPoints" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "prediction_distribution", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "operatingPoint": { + "type": "object", + "required": [ + "dimension" + ], + "properties": { + "dimension": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + } + } + }, + "bins": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "lower", + "upper", + "includeLower", + "includeUpper", + "nPositive", + "nNegative" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "lower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "upper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "includeLower": { + "type": "boolean" + }, + "includeUpper": { + "type": "boolean" + }, + "nPositive": { + "minimum": 0, + "type": "integer" + }, + "nNegative": { + "minimum": 0, + "type": "integer" + } + } + } + }, + "rankBins": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "rankLower", + "rankUpper", + "positiveMass", + "negativeMass" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "rankLower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "rankUpper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "positiveMass": { + "minimum": 0, + "type": "number" + }, + "negativeMass": { + "minimum": 0, + "type": "number" + } + } + } + }, + "operatingPoints": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "type", + "value", + "cutoff", + "realizedPpcr" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "type": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "cutoff": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "realizedPpcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "performance": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + } + } + } + } + } } ] }, @@ -5322,55 +5619,352 @@ } } ] - } - ] - } - } - } - } - } - }, - { - "type": "object", - "required": [ - "schemaVersion", - "type", - "sections" - ], - "properties": { - "schemaVersion": { - "const": "1.1", - "type": "string" - }, - "type": { - "const": "report", - "type": "string" - }, - "title": { - "type": "string" - }, - "sections": { - "minItems": 1, - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "title", - "items" - ], - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "items": { - "minItems": 1, - "type": "array", - "items": { - "anyOf": [ + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "bins", + "operatingPoints" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "prediction_distribution", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "operatingPoint": { + "type": "object", + "required": [ + "dimension" + ], + "properties": { + "dimension": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + } + } + }, + "bins": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "lower", + "upper", + "includeLower", + "includeUpper", + "nPositive", + "nNegative" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "lower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "upper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "includeLower": { + "type": "boolean" + }, + "includeUpper": { + "type": "boolean" + }, + "nPositive": { + "minimum": 0, + "type": "integer" + }, + "nNegative": { + "minimum": 0, + "type": "integer" + } + } + } + }, + "rankBins": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "rankLower", + "rankUpper", + "positiveMass", + "negativeMass" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "rankLower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "rankUpper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "positiveMass": { + "minimum": 0, + "type": "number" + }, + "negativeMass": { + "minimum": 0, + "type": "number" + } + } + } + }, + "operatingPoints": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "type", + "value", + "cutoff", + "realizedPpcr" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "type": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "cutoff": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "realizedPpcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "performance": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + } + } + } + } + } + } + ] + } + } + } + } + } + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "sections" + ], + "properties": { + "schemaVersion": { + "const": "1.1", + "type": "string" + }, + "type": { + "const": "report", + "type": "string" + }, + "title": { + "type": "string" + }, + "sections": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "title", + "items" + ], + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "items": { + "minItems": 1, + "type": "array", + "items": { + "anyOf": [ { "type": "object", "required": [ @@ -10015,15 +10609,312 @@ "type": "number" } } - } - ] + } + ] + } + ] + } + } + } + } + ] + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "bins", + "operatingPoints" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "prediction_distribution", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "operatingPoint": { + "type": "object", + "required": [ + "dimension" + ], + "properties": { + "dimension": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + } + } + }, + "bins": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "lower", + "upper", + "includeLower", + "includeUpper", + "nPositive", + "nNegative" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "lower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "upper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "includeLower": { + "type": "boolean" + }, + "includeUpper": { + "type": "boolean" + }, + "nPositive": { + "minimum": 0, + "type": "integer" + }, + "nNegative": { + "minimum": 0, + "type": "integer" + } + } + } + }, + "rankBins": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "rankLower", + "rankUpper", + "positiveMass", + "negativeMass" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "rankLower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "rankUpper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "positiveMass": { + "minimum": 0, + "type": "number" + }, + "negativeMass": { + "minimum": 0, + "type": "number" + } + } + } + }, + "operatingPoints": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "type", + "value", + "cutoff", + "realizedPpcr" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "type": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "cutoff": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "realizedPpcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "performance": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } } - ] + } } } } } - ] + } } ] }, @@ -10651,29 +11542,326 @@ "type": "string" } } - }, - "horizon": { - "minimum": 0, - "type": "number" - }, - "estimate": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } + }, + "horizon": { + "minimum": 0, + "type": "number" + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + ] + } + } + } + } + ] + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "bins", + "operatingPoints" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "prediction_distribution", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "operatingPoint": { + "type": "object", + "required": [ + "dimension" + ], + "properties": { + "dimension": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + } + } + }, + "bins": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "lower", + "upper", + "includeLower", + "includeUpper", + "nPositive", + "nNegative" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "lower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "upper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "includeLower": { + "type": "boolean" + }, + "includeUpper": { + "type": "boolean" + }, + "nPositive": { + "minimum": 0, + "type": "integer" + }, + "nNegative": { + "minimum": 0, + "type": "integer" + } + } + } + }, + "rankBins": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "rankLower", + "rankUpper", + "positiveMass", + "negativeMass" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "rankLower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "rankUpper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "positiveMass": { + "minimum": 0, + "type": "number" + }, + "negativeMass": { + "minimum": 0, + "type": "number" + } + } + } + }, + "operatingPoints": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "type", + "value", + "cutoff", + "realizedPpcr" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "type": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "cutoff": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "realizedPpcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "performance": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] } } - ] + } } } } } - ] + } } ] } @@ -15348,12 +16536,309 @@ } ] } - ] + ] + } + } + } + } + ] + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "bins", + "operatingPoints" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "prediction_distribution", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "operatingPoint": { + "type": "object", + "required": [ + "dimension" + ], + "properties": { + "dimension": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + } + } + }, + "bins": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "lower", + "upper", + "includeLower", + "includeUpper", + "nPositive", + "nNegative" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "lower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "upper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "includeLower": { + "type": "boolean" + }, + "includeUpper": { + "type": "boolean" + }, + "nPositive": { + "minimum": 0, + "type": "integer" + }, + "nNegative": { + "minimum": 0, + "type": "integer" + } + } + } + }, + "rankBins": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "rankLower", + "rankUpper", + "positiveMass", + "negativeMass" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "rankLower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "rankUpper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "positiveMass": { + "minimum": 0, + "type": "number" + }, + "negativeMass": { + "minimum": 0, + "type": "number" + } + } + } + }, + "operatingPoints": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "type", + "value", + "cutoff", + "realizedPpcr" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "type": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "cutoff": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "realizedPpcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "performance": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } } } } } - ] + } } ] }, @@ -16004,6 +17489,303 @@ } } ] + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "bins", + "operatingPoints" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "prediction_distribution", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "operatingPoint": { + "type": "object", + "required": [ + "dimension" + ], + "properties": { + "dimension": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + } + } + }, + "bins": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "lower", + "upper", + "includeLower", + "includeUpper", + "nPositive", + "nNegative" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "lower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "upper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "includeLower": { + "type": "boolean" + }, + "includeUpper": { + "type": "boolean" + }, + "nPositive": { + "minimum": 0, + "type": "integer" + }, + "nNegative": { + "minimum": 0, + "type": "integer" + } + } + } + }, + "rankBins": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "rankLower", + "rankUpper", + "positiveMass", + "negativeMass" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "rankLower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "rankUpper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "positiveMass": { + "minimum": 0, + "type": "number" + }, + "negativeMass": { + "minimum": 0, + "type": "number" + } + } + } + }, + "operatingPoints": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "type", + "value", + "cutoff", + "realizedPpcr" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "type": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "cutoff": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "realizedPpcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "performance": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + } + } + } + } + } } ] } diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json index 46395a29..aed3d411 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-v2.schema.json @@ -4631,6 +4631,303 @@ } } ] + }, + { + "type": "object", + "required": [ + "schemaVersion", + "type", + "evaluations", + "bins", + "operatingPoints" + ], + "properties": { + "schemaVersion": { + "const": "2.0", + "type": "string" + }, + "type": { + "const": "prediction_distribution", + "type": "string" + }, + "title": { + "type": "string" + }, + "evaluations": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "population" + ], + "properties": { + "id": { + "type": "string" + }, + "model": { + "type": "string" + }, + "population": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "operatingPoint": { + "type": "object", + "required": [ + "dimension" + ], + "properties": { + "dimension": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + } + } + }, + "bins": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "lower", + "upper", + "includeLower", + "includeUpper", + "nPositive", + "nNegative" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "lower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "upper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "includeLower": { + "type": "boolean" + }, + "includeUpper": { + "type": "boolean" + }, + "nPositive": { + "minimum": 0, + "type": "integer" + }, + "nNegative": { + "minimum": 0, + "type": "integer" + } + } + } + }, + "rankBins": { + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "rankLower", + "rankUpper", + "positiveMass", + "negativeMass" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "rankLower": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "rankUpper": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "positiveMass": { + "minimum": 0, + "type": "number" + }, + "negativeMass": { + "minimum": 0, + "type": "number" + } + } + } + }, + "operatingPoints": { + "minItems": 1, + "type": "array", + "items": { + "type": "object", + "required": [ + "evaluationId", + "type", + "value", + "cutoff", + "realizedPpcr" + ], + "properties": { + "evaluationId": { + "type": "string" + }, + "type": { + "anyOf": [ + { + "const": "probability_threshold", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + } + ] + }, + "value": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "cutoff": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "realizedPpcr": { + "minimum": 0, + "maximum": 1, + "type": "number" + }, + "performance": { + "type": "array", + "items": { + "type": "object", + "required": [ + "metricId", + "estimate" + ], + "properties": { + "metricId": { + "anyOf": [ + { + "const": "true_positives", + "type": "string" + }, + { + "const": "true_negatives", + "type": "string" + }, + { + "const": "false_positives", + "type": "string" + }, + { + "const": "false_negatives", + "type": "string" + }, + { + "const": "sensitivity", + "type": "string" + }, + { + "const": "specificity", + "type": "string" + }, + { + "const": "false_positive_rate", + "type": "string" + }, + { + "const": "ppv", + "type": "string" + }, + { + "const": "npv", + "type": "string" + }, + { + "const": "lift", + "type": "string" + }, + { + "const": "predicted_positives", + "type": "string" + }, + { + "const": "ppcr", + "type": "string" + }, + { + "const": "net_benefit", + "type": "string" + }, + { + "const": "net_benefit_interventions_avoided", + "type": "string" + } + ] + }, + "estimate": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "lower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "upper": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + } + } + } + } + } + } + } } ] } diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.css b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.css index 61a45c88..0cccd19a 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.css +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.css @@ -615,3 +615,338 @@ border-left-color: #2563eb; } } + +/* Prediction Distribution Scoped Styling */ +.rtichoke-prediction-distribution { + display: flex; + flex-direction: column; + gap: 0.75rem; + box-sizing: border-box; +} + +.rtichoke-prediction-distribution__controls { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 1rem; +} + +.rtichoke-prediction-distribution__control-group { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.rtichoke-prediction-distribution__select { + font-family: inherit; + font-size: 0.875rem; + padding: 0.25rem 0.5rem; + border: 1px solid #d1d5db; + border-radius: 4px; + background-color: #ffffff; + color: #111827; +} + +.rtichoke-prediction-distribution__summary { + display: flex; + flex-direction: column; + gap: 0.5rem; + padding: 0.75rem 1rem; + background-color: #f8fafc; + border: 1px solid #e2e8f0; + border-radius: 6px; + font-family: inherit; + font-size: 0.875rem; +} + +.rtichoke-prediction-distribution__metrics-row { + display: flex; + flex-wrap: wrap; + gap: 1.5rem; + font-size: 0.85rem; + color: #334155; +} + +.rtichoke-prediction-distribution__metric-badge { + display: flex; + align-items: center; + gap: 0.35rem; +} + +.rtichoke-prediction-distribution__metric-label { + color: #64748b; + font-weight: 500; +} + +.rtichoke-prediction-distribution__metric-value { + font-weight: 600; + color: #0f172a; +} + +.rtichoke-prediction-distribution__table { + border-collapse: collapse; + width: 100%; + max-width: 480px; + font-size: 0.825rem; + background-color: #ffffff; + border: 1px solid #cbd5e1; + border-radius: 4px; + overflow: hidden; + margin-top: 0.25rem; +} + +.rtichoke-prediction-distribution__table th, +.rtichoke-prediction-distribution__table td { + padding: 0.35rem 0.5rem; + text-align: center; + border: 1px solid #e2e8f0; + font-variant-numeric: tabular-nums; +} + +.rtichoke-prediction-distribution__table th { + background-color: #f1f5f9; + font-weight: 600; + color: #334155; +} + +.rtichoke-prediction-distribution__cell--tp, +.rtichoke-prediction-distribution__cell--tn { + background-color: #f0fdf4; + color: #166534; + font-weight: 600; +} + +.rtichoke-prediction-distribution__cell--fp, +.rtichoke-prediction-distribution__cell--fn { + background-color: #fef2f2; + color: #991b1b; + font-weight: 600; +} + +.rtichoke-prediction-distribution__cell--total { + background-color: #f8fafc; + color: #334155; + font-weight: 600; +} + +/* Enhanced Prediction Distribution Styling */ +.rtichoke-pd-controls-row { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 1.25rem; +} + +.rtichoke-pd-radio-group { + display: inline-flex; + align-items: center; + gap: 0.5rem; + font-family: inherit; + font-size: 13px; + color: #374151; +} + +.rtichoke-pd-radio-group-label { + font-weight: 600; + color: #111827; +} + +.rtichoke-pd-radio-options { + display: inline-flex; + align-items: center; + gap: 0.75rem; +} + +.rtichoke-pd-radio-option { + display: inline-flex; + align-items: center; + gap: 0.25rem; + font-size: 13px; + color: #374151; + cursor: pointer; + user-select: none; +} + +.rtichoke-pd-radio-option input[type="radio"] { + margin: 0; + cursor: pointer; +} + +.rtichoke-pd-matrix { + table-layout: fixed; + width: 100%; + max-width: 520px; + border-collapse: collapse; + font-size: 12px; + background-color: #ffffff; + border: 1px solid #cbd5e1; + border-radius: 4px; + overflow: hidden; +} + +.rtichoke-pd-matrix__corner { + background-color: #f8fafc; + padding: 0.4rem 0.5rem; + text-align: left; + border-right: 1px solid #cbd5e1; + border-bottom: 1px solid #cbd5e1; +} + +.rtichoke-pd-matrix__col-header { + padding: 0.35rem 0.5rem; + font-weight: 600; + font-size: 12px; + color: #334155; + background-color: #f8fafc; + border-bottom: 1px solid #cbd5e1; + border-right: 1px solid #e2e8f0; + text-align: center; +} + +.rtichoke-pd-matrix__col-header--blank { + background-color: #f8fafc; + border-bottom: 1px solid #cbd5e1; + border-right: none; +} + +.rtichoke-pd-matrix__col-header--active { + background-color: #eff6ff; + border-bottom: 2px solid #2563eb; +} + +.rtichoke-pd-matrix__row-header { + padding: 0.35rem 0.5rem; + font-weight: 600; + font-size: 12px; + color: #334155; + background-color: #f8fafc; + border-right: 1px solid #cbd5e1; + border-bottom: 1px solid #e2e8f0; + text-align: left; + white-space: nowrap; +} + +.rtichoke-pd-matrix__row-header--blank { + background-color: #f8fafc; + border-right: 1px solid #cbd5e1; + border-bottom: none; +} + +.rtichoke-pd-matrix__row-header--active { + background-color: #eff6ff; + border-left: 3px solid #2563eb; +} + +.rtichoke-pd-matrix__row--active { + background-color: #f8fafc; +} + +.rtichoke-pd-matrix__cell { + position: relative; + padding: 0.35rem 0.5rem; + text-align: center; + border-right: 1px solid #e2e8f0; + border-bottom: 1px solid #e2e8f0; + font-variant-numeric: tabular-nums; + z-index: 0; +} + +.rtichoke-pd-cell-bar { + position: absolute; + top: 3px; + bottom: 3px; + left: 3px; + pointer-events: none; + border-radius: 2px; + opacity: 0.25; + z-index: -1; +} + +/* Stable Typographic Skeleton */ +.rtichoke-pd-cell-content { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + position: relative; + z-index: 1; +} + +.rtichoke-pd-cell-content--margin { + justify-content: flex-end; +} + +.rtichoke-pd-cell-label { + font-weight: 600; + color: #475569; + width: 22px; + flex-shrink: 0; + text-align: left; +} + +.rtichoke-pd-cell-num { + display: flex; + flex-direction: column; + align-items: flex-end; + flex: 1; + text-align: right; +} + +.rtichoke-pd-cell-count { + font-weight: 700; + color: #0f172a; + font-variant-numeric: tabular-nums; +} + +.rtichoke-pd-cell-pct { + font-size: 10.5px; + color: #64748b; + font-variant-numeric: tabular-nums; + min-height: 14px; +} + +.rtichoke-pd-cond-option { + display: inline-flex; + align-items: center; + gap: 0.3rem; + cursor: pointer; + user-select: none; + font-weight: 600; +} + +.rtichoke-pd-cond-option input[type="radio"] { + margin: 0; + cursor: pointer; +} + +.rtichoke-pd-cond-option--active { + color: #2563eb; +} + +/* Performance Metrics integration using Performance Table Primitives */ +.rtichoke-pd-metrics-container { + width: 100%; + max-width: 520px; + margin-top: 0.25rem; +} + +.rtichoke-pd-metrics-table { + width: 100%; + table-layout: fixed; +} + +.rtichoke-pd-metric--emphasized-header { + color: #009E73 !important; + font-weight: 700 !important; +} + +.rtichoke-pd-metric--emphasized-cell { + background-color: #f0fdf4 !important; + font-weight: 700 !important; +} diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js index aa17b8dc..fd17f00a 100644 --- a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js +++ b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz.js @@ -1,61 +1,61 @@ -var y3=Object.defineProperty;var oa=(e,t)=>{for(var r in t)y3(e,r,{get:t[r],enumerable:!0})};var tr={};oa(tr,{HasPropertyKey:()=>Xu,IsArray:()=>xt,IsAsyncIterator:()=>Rh,IsBigInt:()=>jf,IsBoolean:()=>Oo,IsDate:()=>ia,IsFunction:()=>Ch,IsIterator:()=>Ah,IsNull:()=>Ph,IsNumber:()=>Nr,IsObject:()=>$e,IsRegExp:()=>Bf,IsString:()=>ze,IsSymbol:()=>kh,IsUint8Array:()=>Ro,IsUndefined:()=>gt});function Xu(e,t){return t in e}function Rh(e){return $e(e)&&!xt(e)&&!Ro(e)&&Symbol.asyncIterator in e}function xt(e){return Array.isArray(e)}function jf(e){return typeof e=="bigint"}function Oo(e){return typeof e=="boolean"}function ia(e){return e instanceof globalThis.Date}function Ch(e){return typeof e=="function"}function Ah(e){return $e(e)&&!xt(e)&&!Ro(e)&&Symbol.iterator in e}function Ph(e){return e===null}function Nr(e){return typeof e=="number"}function $e(e){return typeof e=="object"&&e!==null}function Bf(e){return e instanceof globalThis.RegExp}function ze(e){return typeof e=="string"}function kh(e){return typeof e=="symbol"}function Ro(e){return e instanceof globalThis.Uint8Array}function gt(e){return e===void 0}function x3(e){return e.map(t=>Zu(t))}function g3(e){return new Date(e.getTime())}function b3(e){return new Uint8Array(e)}function w3(e){return new RegExp(e.source,e.flags)}function S3(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Zu(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Zu(e[r]);return t}function Zu(e){return xt(e)?x3(e):ia(e)?g3(e):Ro(e)?b3(e):Bf(e)?w3(e):$e(e)?S3(e):e}function Xe(e){return Zu(e)}function rs(e,t){return t===void 0?Xe(e):Xe({...t,...e})}function Qu(e){return me(e)&&globalThis.Symbol.asyncIterator in e}function Ju(e){return me(e)&&globalThis.Symbol.iterator in e}function Nh(e){return me(e)&&(globalThis.Object.getPrototypeOf(e)===Object.prototype||globalThis.Object.getPrototypeOf(e)===null)}function el(e){return e instanceof globalThis.Promise}function ur(e){return e instanceof Date&&globalThis.Number.isFinite(e.getTime())}function p1(e){return e instanceof globalThis.Map}function m1(e){return e instanceof globalThis.Set}function Yr(e){return globalThis.ArrayBuffer.isView(e)}function ns(e){return e instanceof globalThis.Uint8Array}function se(e,t){return t in e}function me(e){return e!==null&&typeof e=="object"}function fe(e){return globalThis.Array.isArray(e)&&!globalThis.ArrayBuffer.isView(e)}function Ze(e){return e===void 0}function Co(e){return e===null}function Yn(e){return typeof e=="boolean"}function Qe(e){return typeof e=="number"}function tl(e){return globalThis.Number.isInteger(e)}function xn(e){return typeof e=="bigint"}function Ee(e){return typeof e=="string"}function hi(e){return typeof e=="function"}function Ao(e){return typeof e=="symbol"}function Fr(e){return xn(e)||Yn(e)||Co(e)||Qe(e)||Ee(e)||Ao(e)||Ze(e)}var It;(function(e){e.InstanceMode="default",e.ExactOptionalPropertyTypes=!1,e.AllowArrayObject=!1,e.AllowNaN=!1,e.AllowNullVoid=!1;function t(a,s){return e.ExactOptionalPropertyTypes?s in a:a[s]!==void 0}e.IsExactOptionalProperty=t;function r(a){let s=me(a);return e.AllowArrayObject?s:s&&!fe(a)}e.IsObjectLike=r;function n(a){return r(a)&&!(a instanceof Date)&&!(a instanceof Uint8Array)}e.IsRecordLike=n;function o(a){return e.AllowNaN?Qe(a):Number.isFinite(a)}e.IsNumberLike=o;function i(a){let s=Ze(a);return e.AllowNullVoid?s||a===null:s}e.IsVoidLike=i})(It||(It={}));function I3(e){return globalThis.Object.freeze(e).map(t=>Gf(t))}function _3(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Gf(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Gf(e[r]);return globalThis.Object.freeze(t)}function Gf(e){return xt(e)?I3(e):ia(e)?e:Ro(e)?e:Bf(e)?e:$e(e)?_3(e):e}function P(e,t){let r=t!==void 0?{...t,...e}:e;switch(It.InstanceMode){case"freeze":return Gf(r);case"clone":return Xe(r);default:return r}}var ce=class extends Error{constructor(t){super(t)}};var tt=Symbol.for("TypeBox.Transform"),gn=Symbol.for("TypeBox.Readonly"),Ht=Symbol.for("TypeBox.Optional"),Wr=Symbol.for("TypeBox.Hint"),k=Symbol.for("TypeBox.Kind");function os(e){return $e(e)&&e[gn]==="Readonly"}function br(e){return $e(e)&&e[Ht]==="Optional"}function Fh(e){return Ie(e,"Any")}function Eh(e){return Ie(e,"Argument")}function bn(e){return Ie(e,"Array")}function aa(e){return Ie(e,"AsyncIterator")}function sa(e){return Ie(e,"BigInt")}function Po(e){return Ie(e,"Boolean")}function wn(e){return Ie(e,"Computed")}function Sn(e){return Ie(e,"Constructor")}function v3(e){return Ie(e,"Date")}function In(e){return Ie(e,"Function")}function _n(e){return Ie(e,"Integer")}function st(e){return Ie(e,"Intersect")}function fa(e){return Ie(e,"Iterator")}function Ie(e,t){return $e(e)&&k in e&&e[k]===t}function rl(e){return Oo(e)||Nr(e)||ze(e)}function Er(e){return Ie(e,"Literal")}function $r(e){return Ie(e,"MappedKey")}function Je(e){return Ie(e,"MappedResult")}function yi(e){return Ie(e,"Never")}function T3(e){return Ie(e,"Not")}function zf(e){return Ie(e,"Null")}function vn(e){return Ie(e,"Number")}function bt(e){return Ie(e,"Object")}function ca(e){return Ie(e,"Promise")}function ua(e){return Ie(e,"Record")}function lt(e){return Ie(e,"Ref")}function $h(e){return Ie(e,"RegExp")}function ko(e){return Ie(e,"String")}function Kf(e){return Ie(e,"Symbol")}function Lr(e){return Ie(e,"TemplateLiteral")}function M3(e){return Ie(e,"This")}function Re(e){return $e(e)&&tt in e}function Dr(e){return Ie(e,"Tuple")}function No(e){return Ie(e,"Undefined")}function ve(e){return Ie(e,"Union")}function O3(e){return Ie(e,"Uint8Array")}function R3(e){return Ie(e,"Unknown")}function C3(e){return Ie(e,"Unsafe")}function A3(e){return Ie(e,"Void")}function xi(e){return $e(e)&&k in e&&ze(e[k])}function rt(e){return Fh(e)||Eh(e)||bn(e)||Po(e)||sa(e)||aa(e)||wn(e)||Sn(e)||v3(e)||In(e)||_n(e)||st(e)||fa(e)||Er(e)||$r(e)||Je(e)||yi(e)||T3(e)||zf(e)||vn(e)||bt(e)||ca(e)||ua(e)||lt(e)||$h(e)||ko(e)||Kf(e)||Lr(e)||M3(e)||Dr(e)||No(e)||ve(e)||O3(e)||R3(e)||C3(e)||A3(e)||xi(e)}var _={};oa(_,{IsAny:()=>x1,IsArgument:()=>g1,IsArray:()=>b1,IsAsyncIterator:()=>w1,IsBigInt:()=>S1,IsBoolean:()=>I1,IsComputed:()=>_1,IsConstructor:()=>v1,IsDate:()=>T1,IsFunction:()=>M1,IsImport:()=>$3,IsInteger:()=>O1,IsIntersect:()=>R1,IsIterator:()=>C1,IsKind:()=>t2,IsKindOf:()=>be,IsLiteral:()=>Hf,IsLiteralBoolean:()=>L3,IsLiteralNumber:()=>P1,IsLiteralString:()=>A1,IsLiteralValue:()=>k1,IsMappedKey:()=>N1,IsMappedResult:()=>F1,IsNever:()=>E1,IsNot:()=>$1,IsNull:()=>L1,IsNumber:()=>D1,IsObject:()=>V1,IsOptional:()=>E3,IsPromise:()=>U1,IsProperties:()=>nl,IsReadonly:()=>F3,IsRecord:()=>j1,IsRecursive:()=>D3,IsRef:()=>B1,IsRegExp:()=>G1,IsSchema:()=>kt,IsString:()=>z1,IsSymbol:()=>K1,IsTemplateLiteral:()=>q1,IsThis:()=>H1,IsTransform:()=>Y1,IsTuple:()=>W1,IsUint8Array:()=>Z1,IsUndefined:()=>X1,IsUnion:()=>Uh,IsUnionLiteral:()=>V3,IsUnknown:()=>Q1,IsUnsafe:()=>J1,IsVoid:()=>e2,TypeGuardUnknownTypeError:()=>Lh});var Lh=class extends ce{},P3=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"];function d1(e){try{return new RegExp(e),!0}catch{return!1}}function Dh(e){if(!ze(e))return!1;for(let t=0;t=7&&r<=13||r===27||r===127)return!1}return!0}function h1(e){return Vh(e)||kt(e)}function qf(e){return gt(e)||jf(e)}function Ke(e){return gt(e)||Nr(e)}function Vh(e){return gt(e)||Oo(e)}function Le(e){return gt(e)||ze(e)}function k3(e){return gt(e)||ze(e)&&Dh(e)&&d1(e)}function N3(e){return gt(e)||ze(e)&&Dh(e)}function y1(e){return gt(e)||kt(e)}function F3(e){return $e(e)&&e[gn]==="Readonly"}function E3(e){return $e(e)&&e[Ht]==="Optional"}function x1(e){return be(e,"Any")&&Le(e.$id)}function g1(e){return be(e,"Argument")&&Nr(e.index)}function b1(e){return be(e,"Array")&&e.type==="array"&&Le(e.$id)&&kt(e.items)&&Ke(e.minItems)&&Ke(e.maxItems)&&Vh(e.uniqueItems)&&y1(e.contains)&&Ke(e.minContains)&&Ke(e.maxContains)}function w1(e){return be(e,"AsyncIterator")&&e.type==="AsyncIterator"&&Le(e.$id)&&kt(e.items)}function S1(e){return be(e,"BigInt")&&e.type==="bigint"&&Le(e.$id)&&qf(e.exclusiveMaximum)&&qf(e.exclusiveMinimum)&&qf(e.maximum)&&qf(e.minimum)&&qf(e.multipleOf)}function I1(e){return be(e,"Boolean")&&e.type==="boolean"&&Le(e.$id)}function _1(e){return be(e,"Computed")&&ze(e.target)&&xt(e.parameters)&&e.parameters.every(t=>kt(t))}function v1(e){return be(e,"Constructor")&&e.type==="Constructor"&&Le(e.$id)&&xt(e.parameters)&&e.parameters.every(t=>kt(t))&&kt(e.returns)}function T1(e){return be(e,"Date")&&e.type==="Date"&&Le(e.$id)&&Ke(e.exclusiveMaximumTimestamp)&&Ke(e.exclusiveMinimumTimestamp)&&Ke(e.maximumTimestamp)&&Ke(e.minimumTimestamp)&&Ke(e.multipleOfTimestamp)}function M1(e){return be(e,"Function")&&e.type==="Function"&&Le(e.$id)&&xt(e.parameters)&&e.parameters.every(t=>kt(t))&&kt(e.returns)}function $3(e){return be(e,"Import")&&Xu(e,"$defs")&&$e(e.$defs)&&nl(e.$defs)&&Xu(e,"$ref")&&ze(e.$ref)&&e.$ref in e.$defs}function O1(e){return be(e,"Integer")&&e.type==="integer"&&Le(e.$id)&&Ke(e.exclusiveMaximum)&&Ke(e.exclusiveMinimum)&&Ke(e.maximum)&&Ke(e.minimum)&&Ke(e.multipleOf)}function nl(e){return $e(e)&&Object.entries(e).every(([t,r])=>Dh(t)&&kt(r))}function R1(e){return be(e,"Intersect")&&!(ze(e.type)&&e.type!=="object")&&xt(e.allOf)&&e.allOf.every(t=>kt(t)&&!Y1(t))&&Le(e.type)&&(Vh(e.unevaluatedProperties)||y1(e.unevaluatedProperties))&&Le(e.$id)}function C1(e){return be(e,"Iterator")&&e.type==="Iterator"&&Le(e.$id)&&kt(e.items)}function be(e,t){return $e(e)&&k in e&&e[k]===t}function A1(e){return Hf(e)&&ze(e.const)}function P1(e){return Hf(e)&&Nr(e.const)}function L3(e){return Hf(e)&&Oo(e.const)}function Hf(e){return be(e,"Literal")&&Le(e.$id)&&k1(e.const)}function k1(e){return Oo(e)||Nr(e)||ze(e)}function N1(e){return be(e,"MappedKey")&&xt(e.keys)&&e.keys.every(t=>Nr(t)||ze(t))}function F1(e){return be(e,"MappedResult")&&nl(e.properties)}function E1(e){return be(e,"Never")&&$e(e.not)&&Object.getOwnPropertyNames(e.not).length===0}function $1(e){return be(e,"Not")&&kt(e.not)}function L1(e){return be(e,"Null")&&e.type==="null"&&Le(e.$id)}function D1(e){return be(e,"Number")&&e.type==="number"&&Le(e.$id)&&Ke(e.exclusiveMaximum)&&Ke(e.exclusiveMinimum)&&Ke(e.maximum)&&Ke(e.minimum)&&Ke(e.multipleOf)}function V1(e){return be(e,"Object")&&e.type==="object"&&Le(e.$id)&&nl(e.properties)&&h1(e.additionalProperties)&&Ke(e.minProperties)&&Ke(e.maxProperties)}function U1(e){return be(e,"Promise")&&e.type==="Promise"&&Le(e.$id)&&kt(e.item)}function j1(e){return be(e,"Record")&&e.type==="object"&&Le(e.$id)&&h1(e.additionalProperties)&&$e(e.patternProperties)&&(t=>{let r=Object.getOwnPropertyNames(t.patternProperties);return r.length===1&&d1(r[0])&&$e(t.patternProperties)&&kt(t.patternProperties[r[0]])})(e)}function D3(e){return $e(e)&&Wr in e&&e[Wr]==="Recursive"}function B1(e){return be(e,"Ref")&&Le(e.$id)&&ze(e.$ref)}function G1(e){return be(e,"RegExp")&&Le(e.$id)&&ze(e.source)&&ze(e.flags)&&Ke(e.maxLength)&&Ke(e.minLength)}function z1(e){return be(e,"String")&&e.type==="string"&&Le(e.$id)&&Ke(e.minLength)&&Ke(e.maxLength)&&k3(e.pattern)&&N3(e.format)}function K1(e){return be(e,"Symbol")&&e.type==="symbol"&&Le(e.$id)}function q1(e){return be(e,"TemplateLiteral")&&e.type==="string"&&ze(e.pattern)&&e.pattern[0]==="^"&&e.pattern[e.pattern.length-1]==="$"}function H1(e){return be(e,"This")&&Le(e.$id)&&ze(e.$ref)}function Y1(e){return $e(e)&&tt in e}function W1(e){return be(e,"Tuple")&&e.type==="array"&&Le(e.$id)&&Nr(e.minItems)&&Nr(e.maxItems)&&e.minItems===e.maxItems&&(gt(e.items)&>(e.additionalItems)&&e.minItems===0||xt(e.items)&&e.items.every(t=>kt(t)))}function X1(e){return be(e,"Undefined")&&e.type==="undefined"&&Le(e.$id)}function V3(e){return Uh(e)&&e.anyOf.every(t=>A1(t)||P1(t))}function Uh(e){return be(e,"Union")&&Le(e.$id)&&$e(e)&&xt(e.anyOf)&&e.anyOf.every(t=>kt(t))}function Z1(e){return be(e,"Uint8Array")&&e.type==="Uint8Array"&&Le(e.$id)&&Ke(e.minByteLength)&&Ke(e.maxByteLength)}function Q1(e){return be(e,"Unknown")&&Le(e.$id)}function J1(e){return be(e,"Unsafe")}function e2(e){return be(e,"Void")&&e.type==="void"&&Le(e.$id)}function t2(e){return $e(e)&&k in e&&ze(e[k])&&!P3.includes(e[k])}function kt(e){return $e(e)&&(x1(e)||g1(e)||b1(e)||I1(e)||S1(e)||w1(e)||_1(e)||v1(e)||T1(e)||M1(e)||O1(e)||R1(e)||C1(e)||Hf(e)||N1(e)||F1(e)||E1(e)||$1(e)||L1(e)||D1(e)||V1(e)||U1(e)||j1(e)||B1(e)||G1(e)||z1(e)||K1(e)||q1(e)||H1(e)||W1(e)||X1(e)||Uh(e)||Z1(e)||Q1(e)||J1(e)||e2(e)||t2(e))}var jh="(true|false)",Yf="(0|[1-9][0-9]*)",Bh="(.*)",U3="(?!.*)",QU=`^${jh}$`,gi=`^${Yf}$`,bi=`^${Bh}$`,r2=`^${U3}$`;var wi={};oa(wi,{Clear:()=>B3,Delete:()=>G3,Entries:()=>j3,Get:()=>q3,Has:()=>z3,Set:()=>K3});var is=new Map;function j3(){return new Map(is)}function B3(){return is.clear()}function G3(e){return is.delete(e)}function z3(e){return is.has(e)}function K3(e,t){is.set(e,t)}function q3(e){return is.get(e)}var Tn={};oa(Tn,{Clear:()=>Y3,Delete:()=>W3,Entries:()=>H3,Get:()=>Q3,Has:()=>X3,Set:()=>Z3});var as=new Map;function H3(){return new Map(as)}function Y3(){return as.clear()}function W3(e){return as.delete(e)}function X3(e){return as.has(e)}function Z3(e,t){as.set(e,t)}function Q3(e){return as.get(e)}function n2(e,t){return e.includes(t)}function o2(e){return[...new Set(e)]}function J3(e,t){return e.filter(r=>t.includes(r))}function e5(e,t){return e.reduce((r,n)=>J3(r,n),t)}function i2(e){return e.length===1?e[0]:e.length>1?e5(e.slice(1),e[0]):[]}function a2(e){let t=[];for(let r of e)t.push(...r);return t}function Si(e){return P({[k]:"Any"},e)}function ss(e,t){return P({[k]:"Array",type:"array",items:e},t)}function s2(e){return P({[k]:"Argument",index:e})}function fs(e,t){return P({[k]:"AsyncIterator",type:"AsyncIterator",items:e},t)}function He(e,t,r){return P({[k]:"Computed",target:e,parameters:t},r)}function t5(e,t){let{[t]:r,...n}=e;return n}function ft(e,t){return t.reduce((r,n)=>t5(r,n),e)}function ge(e){return P({[k]:"Never",not:{}},e)}function Te(e){return P({[k]:"MappedResult",properties:e})}function cs(e,t,r){return P({[k]:"Constructor",type:"Constructor",parameters:e,returns:t},r)}function Wn(e,t,r){return P({[k]:"Function",type:"Function",parameters:e,returns:t},r)}function Wf(e,t){return P({[k]:"Union",anyOf:e},t)}function r5(e){return e.some(t=>br(t))}function f2(e){return e.map(t=>br(t)?n5(t):t)}function n5(e){return ft(e,[Ht])}function o5(e,t){return r5(e)?rr(Wf(f2(e),t)):Wf(f2(e),t)}function Xn(e,t){return e.length===1?P(e[0],t):e.length===0?ge(t):o5(e,t)}function Ce(e,t){return e.length===0?ge(t):e.length===1?P(e[0],t):Wf(e,t)}var ol=class extends ce{};function i5(e){return e.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function Gh(e,t,r){return e[t]===r&&e.charCodeAt(t-1)!==92}function Eo(e,t){return Gh(e,t,"(")}function Xf(e,t){return Gh(e,t,")")}function c2(e,t){return Gh(e,t,"|")}function a5(e){if(!(Eo(e,0)&&Xf(e,e.length-1)))return!1;let t=0;for(let r=0;r0&&n.push(us(a)),r=i+1}let o=e.slice(r);return o.length>0&&n.push(us(o)),n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"or",expr:n}}function l5(e){function t(o,i){if(!Eo(o,i))throw new ol("TemplateLiteralParser: Index must point to open parens");let a=0;for(let s=i;s0&&n.push(us(s)),o=a-1}return n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"and",expr:n}}function us(e){return a5(e)?us(s5(e)):f5(e)?u5(e):c5(e)?l5(e):{type:"const",const:i5(e)}}function ls(e){return us(e.slice(1,e.length-1))}var zh=class extends ce{};function p5(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="0"&&e.expr[1].type==="const"&&e.expr[1].const==="[1-9][0-9]*"}function m5(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="true"&&e.expr[1].type==="const"&&e.expr[1].const==="false"}function d5(e){return e.type==="const"&&e.const===".*"}function la(e){return p5(e)||d5(e)?!1:m5(e)?!0:e.type==="and"?e.expr.every(t=>la(t)):e.type==="or"?e.expr.every(t=>la(t)):e.type==="const"?!0:(()=>{throw new zh("Unknown expression type")})()}function il(e){let t=ls(e.pattern);return la(t)}var Kh=class extends ce{};function*u2(e){if(e.length===1)return yield*e[0];for(let t of e[0])for(let r of u2(e.slice(1)))yield`${t}${r}`}function*h5(e){return yield*u2(e.expr.map(t=>[...Zf(t)]))}function*y5(e){for(let t of e.expr)yield*Zf(t)}function*x5(e){return yield e.const}function*Zf(e){return e.type==="and"?yield*h5(e):e.type==="or"?yield*y5(e):e.type==="const"?yield*x5(e):(()=>{throw new Kh("Unknown expression")})()}function ps(e){let t=ls(e.pattern);return la(t)?[...Zf(t)]:[]}function _e(e,t){return P({[k]:"Literal",const:e,type:typeof e},t)}function al(e){return P({[k]:"Boolean",type:"boolean"},e)}function ms(e){return P({[k]:"BigInt",type:"bigint"},e)}function Xr(e){return P({[k]:"Number",type:"number"},e)}function lr(e){return P({[k]:"String",type:"string"},e)}function*g5(e){let t=e.trim().replace(/"|'/g,"");return t==="boolean"?yield al():t==="number"?yield Xr():t==="bigint"?yield ms():t==="string"?yield lr():yield(()=>{let r=t.split("|").map(n=>_e(n.trim()));return r.length===0?ge():r.length===1?r[0]:Xn(r)})()}function*b5(e){if(e[1]!=="{"){let t=_e("$"),r=qh(e.slice(1));return yield*[t,...r]}for(let t=2;tp2(r,t)).join("|")})`:vn(e)?`${t}${Yf}`:_n(e)?`${t}${Yf}`:sa(e)?`${t}${Yf}`:ko(e)?`${t}${Bh}`:Er(e)?`${t}${w5(e.const.toString())}`:Po(e)?`${t}${jh}`:(()=>{throw new Hh(`Unexpected Kind '${e[k]}'`)})()}function Yh(e){return`^${e.map(t=>p2(t,"")).join("")}$`}function pa(e){let r=ps(e).map(n=>_e(n));return Xn(r)}function sl(e,t){let r=ze(e)?Yh(l2(e)):Yh(e);return P({[k]:"TemplateLiteral",type:"string",pattern:r},t)}function S5(e){return ps(e).map(r=>r.toString())}function I5(e){let t=[];for(let r of e)t.push(...wr(r));return t}function _5(e){return[e.toString()]}function wr(e){return[...new Set(Lr(e)?S5(e):ve(e)?I5(e.anyOf):Er(e)?_5(e.const):vn(e)?["[number]"]:_n(e)?["[number]"]:[])]}function v5(e,t,r){let n={};for(let o of Object.getOwnPropertyNames(t))n[o]=Ii(e,wr(t[o]),r);return n}function T5(e,t,r){return v5(e,t.properties,r)}function m2(e,t,r){let n=T5(e,t,r);return Te(n)}function h2(e,t){return e.map(r=>y2(r,t))}function M5(e){return e.filter(t=>!yi(t))}function O5(e,t){return fl(M5(h2(e,t)))}function R5(e){return e.some(t=>yi(t))?[]:e}function C5(e,t){return Xn(R5(h2(e,t)))}function A5(e,t){return t in e?e[t]:t==="[number]"?Xn(e):ge()}function P5(e,t){return t==="[number]"?e:ge()}function k5(e,t){return t in e?e[t]:ge()}function y2(e,t){return st(e)?O5(e.allOf,t):ve(e)?C5(e.anyOf,t):Dr(e)?A5(e.items??[],t):bn(e)?P5(e.items,t):bt(e)?k5(e.properties,t):ge()}function Qf(e,t){return t.map(r=>y2(e,r))}function d2(e,t){return Xn(Qf(e,t))}function Ii(e,t,r){if(lt(e)||lt(t)){let n="Index types using Ref parameters require both Type and Key to be of TSchema";if(!rt(e)||!rt(t))throw new ce(n);return He("Index",[e,t])}return Je(t)?m2(e,t,r):$r(t)?x2(e,t,r):P(rt(t)?d2(e,wr(t)):d2(e,t),r)}function N5(e,t,r){return{[t]:Ii(e,[t],Xe(r))}}function F5(e,t,r){return t.reduce((n,o)=>({...n,...N5(e,o,r)}),{})}function E5(e,t,r){return F5(e,t.keys,r)}function x2(e,t,r){let n=E5(e,t,r);return Te(n)}function ds(e,t){return P({[k]:"Iterator",type:"Iterator",items:e},t)}function $5(e){return globalThis.Object.keys(e).filter(t=>!br(e[t]))}function L5(e,t){let r=$5(e),n=r.length>0?{[k]:"Object",type:"object",required:r,properties:e}:{[k]:"Object",type:"object",properties:e};return P(n,t)}var Ae=L5;function cl(e,t){return P({[k]:"Promise",type:"Promise",item:e},t)}function D5(e){return P(ft(e,[gn]))}function V5(e){return P({...e,[gn]:"Readonly"})}function U5(e,t){return t===!1?D5(e):V5(e)}function Sr(e,t){let r=t??!0;return Je(e)?g2(e,r):U5(e,r)}function j5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Sr(e[n],t);return r}function B5(e,t){return j5(e.properties,t)}function g2(e,t){let r=B5(e,t);return Te(r)}function Zr(e,t){return P(e.length>0?{[k]:"Tuple",type:"array",items:e,additionalItems:!1,minItems:e.length,maxItems:e.length}:{[k]:"Tuple",type:"array",minItems:e.length,maxItems:e.length},t)}function b2(e,t){return e in t?Qr(e,t[e]):Te(t)}function G5(e){return{[e]:_e(e)}}function z5(e){let t={};for(let r of e)t[r]=_e(r);return t}function K5(e,t){return n2(t,e)?G5(e):z5(t)}function q5(e,t){let r=K5(e,t);return b2(e,r)}function Jf(e,t){return t.map(r=>Qr(e,r))}function H5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(t))r[n]=Qr(e,t[n]);return r}function Qr(e,t){let r={...t};return br(t)?rr(Qr(e,ft(t,[Ht]))):os(t)?Sr(Qr(e,ft(t,[gn]))):Je(t)?b2(e,t.properties):$r(t)?q5(e,t.keys):Sn(t)?cs(Jf(e,t.parameters),Qr(e,t.returns),r):In(t)?Wn(Jf(e,t.parameters),Qr(e,t.returns),r):aa(t)?fs(Qr(e,t.items),r):fa(t)?ds(Qr(e,t.items),r):st(t)?nr(Jf(e,t.allOf),r):ve(t)?Ce(Jf(e,t.anyOf),r):Dr(t)?Zr(Jf(e,t.items??[]),r):bt(t)?Ae(H5(e,t.properties),r):bn(t)?ss(Qr(e,t.items),r):ca(t)?cl(Qr(e,t.item),r):t}function Y5(e,t){let r={};for(let n of e)r[n]=Qr(n,t);return r}function w2(e,t,r){let n=rt(e)?wr(e):e,o=t({[k]:"MappedKey",keys:n}),i=Y5(n,o);return Ae(i,r)}function W5(e){return P(ft(e,[Ht]))}function X5(e){return P({...e,[Ht]:"Optional"})}function Z5(e,t){return t===!1?W5(e):X5(e)}function rr(e,t){let r=t??!0;return Je(e)?S2(e,r):Z5(e,r)}function Q5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=rr(e[n],t);return r}function J5(e,t){return Q5(e.properties,t)}function S2(e,t){let r=J5(e,t);return Te(r)}function ec(e,t={}){let r=e.every(o=>bt(o)),n=rt(t.unevaluatedProperties)?{unevaluatedProperties:t.unevaluatedProperties}:{};return P(t.unevaluatedProperties===!1||rt(t.unevaluatedProperties)||r?{...n,[k]:"Intersect",type:"object",allOf:e}:{...n,[k]:"Intersect",allOf:e},t)}function eO(e){return e.every(t=>br(t))}function tO(e){return ft(e,[Ht])}function I2(e){return e.map(t=>br(t)?tO(t):t)}function rO(e,t){return eO(e)?rr(ec(I2(e),t)):ec(I2(e),t)}function fl(e,t={}){if(e.length===1)return P(e[0],t);if(e.length===0)return ge(t);if(e.some(r=>Re(r)))throw new Error("Cannot intersect transform types");return rO(e,t)}function nr(e,t){if(e.length===1)return P(e[0],t);if(e.length===0)return ge(t);if(e.some(r=>Re(r)))throw new Error("Cannot intersect transform types");return ec(e,t)}function Zn(...e){let[t,r]=typeof e[0]=="string"?[e[0],e[1]]:[e[0].$id,e[1]];if(typeof t!="string")throw new ce("Ref: $ref must be a string");return P({[k]:"Ref",$ref:t},r)}function nO(e,t){return He("Awaited",[He(e,t)])}function oO(e){return He("Awaited",[Zn(e)])}function iO(e){return nr(_2(e))}function aO(e){return Ce(_2(e))}function sO(e){return hs(e)}function _2(e){return e.map(t=>hs(t))}function hs(e,t){return P(wn(e)?nO(e.target,e.parameters):st(e)?iO(e.allOf):ve(e)?aO(e.anyOf):ca(e)?sO(e.item):lt(e)?oO(e.$ref):e,t)}function v2(e){let t=[];for(let r of e)t.push(Ir(r));return t}function fO(e){let t=v2(e);return a2(t)}function cO(e){let t=v2(e);return i2(t)}function uO(e){return e.map((t,r)=>r.toString())}function lO(e){return["[number]"]}function pO(e){return globalThis.Object.getOwnPropertyNames(e)}function mO(e){return Wh?globalThis.Object.getOwnPropertyNames(e).map(r=>r[0]==="^"&&r[r.length-1]==="$"?r.slice(1,r.length-1):r):[]}function Ir(e){return st(e)?fO(e.allOf):ve(e)?cO(e.anyOf):Dr(e)?uO(e.items??[]):bn(e)?lO(e.items):bt(e)?pO(e.properties):ua(e)?mO(e.patternProperties):[]}var Wh=!1;function ys(e){Wh=!0;let t=Ir(e);return Wh=!1,`^(${t.map(n=>`(${n})`).join("|")})$`}function dO(e,t){return He("KeyOf",[He(e,t)])}function hO(e){return He("KeyOf",[Zn(e)])}function yO(e,t){let r=Ir(e),n=xO(r),o=Xn(n);return P(o,t)}function xO(e){return e.map(t=>t==="[number]"?Xr():_e(t))}function xs(e,t){return wn(e)?dO(e.target,e.parameters):lt(e)?hO(e.$ref):Je(e)?T2(e,t):yO(e,t)}function gO(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=xs(e[n],Xe(t));return r}function bO(e,t){return gO(e.properties,t)}function T2(e,t){let r=bO(e,t);return Te(r)}function ul(e){let t=Ir(e),r=Qf(e,t);return t.map((n,o)=>[t[o],r[o]])}function wO(e){let t=[];for(let r of e)t.push(...Ir(r));return o2(t)}function SO(e){return e.filter(t=>!yi(t))}function IO(e,t){let r=[];for(let n of e)r.push(...Qf(n,[t]));return SO(r)}function _O(e,t){let r={};for(let n of t)r[n]=fl(IO(e,n));return r}function M2(e,t){let r=wO(e),n=_O(e,r);return Ae(n,t)}function ll(e){return P({[k]:"Date",type:"Date"},e)}function pl(e){return P({[k]:"Null",type:"null"},e)}function ml(e){return P({[k]:"Symbol",type:"symbol"},e)}function dl(e){return P({[k]:"Undefined",type:"undefined"},e)}function hl(e){return P({[k]:"Uint8Array",type:"Uint8Array"},e)}function Mn(e){return P({[k]:"Unknown"},e)}function vO(e){return e.map(t=>Xh(t,!1))}function TO(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=Sr(Xh(e[r],!1));return t}function yl(e,t){return t===!0?e:Sr(e)}function Xh(e,t){return Rh(e)?yl(Si(),t):Ah(e)?yl(Si(),t):xt(e)?Sr(Zr(vO(e))):Ro(e)?hl():ia(e)?ll():$e(e)?yl(Ae(TO(e)),t):Ch(e)?yl(Wn([],Mn()),t):gt(e)?dl():Ph(e)?pl():kh(e)?ml():jf(e)?ms():Nr(e)?_e(e):Oo(e)?_e(e):ze(e)?_e(e):Ae({})}function O2(e,t){return P(Xh(e,!0),t)}function R2(e,t){return Sn(e)?Zr(e.parameters,t):ge(t)}function C2(e,t){if(gt(e))throw new Error("Enum undefined or empty");let r=globalThis.Object.getOwnPropertyNames(e).filter(i=>isNaN(i)).map(i=>e[i]),o=[...new Set(r)].map(i=>_e(i));return Ce(o,{...t,[Wr]:"Enum"})}var Qh=class extends ce{},N;(function(e){e[e.Union=0]="Union",e[e.True=1]="True",e[e.False=2]="False"})(N||(N={}));function Jr(e){return e===N.False?e:N.True}function gs(e){throw new Qh(e)}function _t(e){return _.IsNever(e)||_.IsIntersect(e)||_.IsUnion(e)||_.IsUnknown(e)||_.IsAny(e)}function vt(e,t){return _.IsNever(t)?$2(e,t):_.IsIntersect(t)?xl(e,t):_.IsUnion(t)?r0(e,t):_.IsUnknown(t)?U2(e,t):_.IsAny(t)?t0(e,t):gs("StructuralRight")}function t0(e,t){return N.True}function MO(e,t){return _.IsIntersect(t)?xl(e,t):_.IsUnion(t)&&t.anyOf.some(r=>_.IsAny(r)||_.IsUnknown(r))?N.True:_.IsUnion(t)?N.Union:_.IsUnknown(t)||_.IsAny(t)?N.True:N.Union}function OO(e,t){return _.IsUnknown(e)?N.False:_.IsAny(e)?N.Union:_.IsNever(e)?N.True:N.False}function RO(e,t){return _.IsObject(t)&&gl(t)?N.True:_t(t)?vt(e,t):_.IsArray(t)?Jr(De(e.items,t.items)):N.False}function CO(e,t){return _t(t)?vt(e,t):_.IsAsyncIterator(t)?Jr(De(e.items,t.items)):N.False}function AO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsBigInt(t)?N.True:N.False}function F2(e,t){return _.IsLiteralBoolean(e)||_.IsBoolean(e)?N.True:N.False}function PO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsBoolean(t)?N.True:N.False}function kO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsConstructor(t)?e.parameters.length>t.parameters.length?N.False:e.parameters.every((r,n)=>Jr(De(t.parameters[n],r))===N.True)?Jr(De(e.returns,t.returns)):N.False:N.False}function NO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsDate(t)?N.True:N.False}function FO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsFunction(t)?e.parameters.length>t.parameters.length?N.False:e.parameters.every((r,n)=>Jr(De(t.parameters[n],r))===N.True)?Jr(De(e.returns,t.returns)):N.False:N.False}function E2(e,t){return _.IsLiteral(e)&&tr.IsNumber(e.const)||_.IsNumber(e)||_.IsInteger(e)?N.True:N.False}function EO(e,t){return _.IsInteger(t)||_.IsNumber(t)?N.True:_t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):N.False}function xl(e,t){return t.allOf.every(r=>De(e,r)===N.True)?N.True:N.False}function $O(e,t){return e.allOf.some(r=>De(r,t)===N.True)?N.True:N.False}function LO(e,t){return _t(t)?vt(e,t):_.IsIterator(t)?Jr(De(e.items,t.items)):N.False}function DO(e,t){return _.IsLiteral(t)&&t.const===e.const?N.True:_t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsString(t)?V2(e,t):_.IsNumber(t)?L2(e,t):_.IsInteger(t)?E2(e,t):_.IsBoolean(t)?F2(e,t):N.False}function $2(e,t){return N.False}function VO(e,t){return N.True}function A2(e){let[t,r]=[e,0];for(;_.IsNot(t);)t=t.not,r+=1;return r%2===0?t:Mn()}function UO(e,t){return _.IsNot(e)?De(A2(e),t):_.IsNot(t)?De(e,A2(t)):gs("Invalid fallthrough for Not")}function jO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsNull(t)?N.True:N.False}function L2(e,t){return _.IsLiteralNumber(e)||_.IsNumber(e)||_.IsInteger(e)?N.True:N.False}function BO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsInteger(t)||_.IsNumber(t)?N.True:N.False}function _r(e,t){return Object.getOwnPropertyNames(e.properties).length===t}function P2(e){return gl(e)}function k2(e){return _r(e,0)||_r(e,1)&&"description"in e.properties&&_.IsUnion(e.properties.description)&&e.properties.description.anyOf.length===2&&(_.IsString(e.properties.description.anyOf[0])&&_.IsUndefined(e.properties.description.anyOf[1])||_.IsString(e.properties.description.anyOf[1])&&_.IsUndefined(e.properties.description.anyOf[0]))}function Zh(e){return _r(e,0)}function N2(e){return _r(e,0)}function GO(e){return _r(e,0)}function zO(e){return _r(e,0)}function KO(e){return gl(e)}function qO(e){let t=Xr();return _r(e,0)||_r(e,1)&&"length"in e.properties&&Jr(De(e.properties.length,t))===N.True}function HO(e){return _r(e,0)}function gl(e){let t=Xr();return _r(e,0)||_r(e,1)&&"length"in e.properties&&Jr(De(e.properties.length,t))===N.True}function YO(e){let t=Wn([Si()],Si());return _r(e,0)||_r(e,1)&&"then"in e.properties&&Jr(De(e.properties.then,t))===N.True}function D2(e,t){return De(e,t)===N.False||_.IsOptional(e)&&!_.IsOptional(t)?N.False:N.True}function or(e,t){return _.IsUnknown(e)?N.False:_.IsAny(e)?N.Union:_.IsNever(e)||_.IsLiteralString(e)&&P2(t)||_.IsLiteralNumber(e)&&Zh(t)||_.IsLiteralBoolean(e)&&N2(t)||_.IsSymbol(e)&&k2(t)||_.IsBigInt(e)&&GO(t)||_.IsString(e)&&P2(t)||_.IsSymbol(e)&&k2(t)||_.IsNumber(e)&&Zh(t)||_.IsInteger(e)&&Zh(t)||_.IsBoolean(e)&&N2(t)||_.IsUint8Array(e)&&KO(t)||_.IsDate(e)&&zO(t)||_.IsConstructor(e)&&HO(t)||_.IsFunction(e)&&qO(t)?N.True:_.IsRecord(e)&&_.IsString(Jh(e))?t[Wr]==="Record"?N.True:N.False:_.IsRecord(e)&&_.IsNumber(Jh(e))?_r(t,0)?N.True:N.False:N.False}function WO(e,t){return _t(t)?vt(e,t):_.IsRecord(t)?en(e,t):_.IsObject(t)?(()=>{for(let r of Object.getOwnPropertyNames(t.properties)){if(!(r in e.properties)&&!_.IsOptional(t.properties[r]))return N.False;if(_.IsOptional(t.properties[r]))return N.True;if(D2(e.properties[r],t.properties[r])===N.False)return N.False}return N.True})():N.False}function XO(e,t){return _t(t)?vt(e,t):_.IsObject(t)&&YO(t)?N.True:_.IsPromise(t)?Jr(De(e.item,t.item)):N.False}function Jh(e){return gi in e.patternProperties?Xr():bi in e.patternProperties?lr():gs("Unknown record key pattern")}function e0(e){return gi in e.patternProperties?e.patternProperties[gi]:bi in e.patternProperties?e.patternProperties[bi]:gs("Unable to get record value schema")}function en(e,t){let[r,n]=[Jh(t),e0(t)];return _.IsLiteralString(e)&&_.IsNumber(r)&&Jr(De(e,n))===N.True?N.True:_.IsUint8Array(e)&&_.IsNumber(r)||_.IsString(e)&&_.IsNumber(r)||_.IsArray(e)&&_.IsNumber(r)?De(e,n):_.IsObject(e)?(()=>{for(let o of Object.getOwnPropertyNames(e.properties))if(D2(n,e.properties[o])===N.False)return N.False;return N.True})():N.False}function ZO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?De(e0(e),e0(t)):N.False}function QO(e,t){let r=_.IsRegExp(e)?lr():e,n=_.IsRegExp(t)?lr():t;return De(r,n)}function V2(e,t){return _.IsLiteral(e)&&tr.IsString(e.const)||_.IsString(e)?N.True:N.False}function JO(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsString(t)?N.True:N.False}function e4(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsSymbol(t)?N.True:N.False}function t4(e,t){return _.IsTemplateLiteral(e)?De(pa(e),t):_.IsTemplateLiteral(t)?De(e,pa(t)):gs("Invalid fallthrough for TemplateLiteral")}function r4(e,t){return _.IsArray(t)&&e.items!==void 0&&e.items.every(r=>De(r,t.items)===N.True)}function n4(e,t){return _.IsNever(e)?N.True:_.IsUnknown(e)?N.False:_.IsAny(e)?N.Union:N.False}function o4(e,t){return _t(t)?vt(e,t):_.IsObject(t)&&gl(t)||_.IsArray(t)&&r4(e,t)?N.True:_.IsTuple(t)?tr.IsUndefined(e.items)&&!tr.IsUndefined(t.items)||!tr.IsUndefined(e.items)&&tr.IsUndefined(t.items)?N.False:tr.IsUndefined(e.items)&&!tr.IsUndefined(t.items)||e.items.every((r,n)=>De(r,t.items[n])===N.True)?N.True:N.False:N.False}function i4(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsUint8Array(t)?N.True:N.False}function a4(e,t){return _t(t)?vt(e,t):_.IsObject(t)?or(e,t):_.IsRecord(t)?en(e,t):_.IsVoid(t)?c4(e,t):_.IsUndefined(t)?N.True:N.False}function r0(e,t){return t.anyOf.some(r=>De(e,r)===N.True)?N.True:N.False}function s4(e,t){return e.anyOf.every(r=>De(r,t)===N.True)?N.True:N.False}function U2(e,t){return N.True}function f4(e,t){return _.IsNever(t)?$2(e,t):_.IsIntersect(t)?xl(e,t):_.IsUnion(t)?r0(e,t):_.IsAny(t)?t0(e,t):_.IsString(t)?V2(e,t):_.IsNumber(t)?L2(e,t):_.IsInteger(t)?E2(e,t):_.IsBoolean(t)?F2(e,t):_.IsArray(t)?OO(e,t):_.IsTuple(t)?n4(e,t):_.IsObject(t)?or(e,t):_.IsUnknown(t)?N.True:N.False}function c4(e,t){return _.IsUndefined(e)||_.IsUndefined(e)?N.True:N.False}function u4(e,t){return _.IsIntersect(t)?xl(e,t):_.IsUnion(t)?r0(e,t):_.IsUnknown(t)?U2(e,t):_.IsAny(t)?t0(e,t):_.IsObject(t)?or(e,t):_.IsVoid(t)?N.True:N.False}function De(e,t){return _.IsTemplateLiteral(e)||_.IsTemplateLiteral(t)?t4(e,t):_.IsRegExp(e)||_.IsRegExp(t)?QO(e,t):_.IsNot(e)||_.IsNot(t)?UO(e,t):_.IsAny(e)?MO(e,t):_.IsArray(e)?RO(e,t):_.IsBigInt(e)?AO(e,t):_.IsBoolean(e)?PO(e,t):_.IsAsyncIterator(e)?CO(e,t):_.IsConstructor(e)?kO(e,t):_.IsDate(e)?NO(e,t):_.IsFunction(e)?FO(e,t):_.IsInteger(e)?EO(e,t):_.IsIntersect(e)?$O(e,t):_.IsIterator(e)?LO(e,t):_.IsLiteral(e)?DO(e,t):_.IsNever(e)?VO(e,t):_.IsNull(e)?jO(e,t):_.IsNumber(e)?BO(e,t):_.IsObject(e)?WO(e,t):_.IsRecord(e)?ZO(e,t):_.IsString(e)?JO(e,t):_.IsSymbol(e)?e4(e,t):_.IsTuple(e)?o4(e,t):_.IsPromise(e)?XO(e,t):_.IsUint8Array(e)?i4(e,t):_.IsUndefined(e)?a4(e,t):_.IsUnion(e)?s4(e,t):_.IsUnknown(e)?f4(e,t):_.IsVoid(e)?u4(e,t):gs(`Unknown left type operand '${e[k]}'`)}function _i(e,t){return De(e,t)}function l4(e,t,r,n,o){let i={};for(let a of globalThis.Object.getOwnPropertyNames(e))i[a]=bs(e[a],t,r,n,Xe(o));return i}function p4(e,t,r,n,o){return l4(e.properties,t,r,n,o)}function j2(e,t,r,n,o){let i=p4(e,t,r,n,o);return Te(i)}function m4(e,t,r,n){let o=_i(e,t);return o===N.Union?Ce([r,n]):o===N.True?r:n}function bs(e,t,r,n,o){return Je(e)?j2(e,t,r,n,o):$r(e)?P(B2(e,t,r,n,o)):P(m4(e,t,r,n),o)}function d4(e,t,r,n,o){return{[e]:bs(_e(e),t,r,n,Xe(o))}}function h4(e,t,r,n,o){return e.reduce((i,a)=>({...i,...d4(a,t,r,n,o)}),{})}function y4(e,t,r,n,o){return h4(e.keys,t,r,n,o)}function B2(e,t,r,n,o){let i=y4(e,t,r,n,o);return Te(i)}function x4(e){return e.allOf.every(t=>ma(t))}function g4(e){return e.anyOf.some(t=>ma(t))}function b4(e){return!ma(e.not)}function ma(e){return e[k]==="Intersect"?x4(e):e[k]==="Union"?g4(e):e[k]==="Not"?b4(e):e[k]==="Undefined"}function G2(e,t){return ws(pa(e),t)}function w4(e,t){let r=e.filter(n=>_i(n,t)===N.False);return r.length===1?r[0]:Ce(r)}function ws(e,t,r={}){return Lr(e)?P(G2(e,t),r):Je(e)?P(z2(e,t),r):P(ve(e)?w4(e.anyOf,t):_i(e,t)!==N.False?ge():e,r)}function S4(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=ws(e[n],t);return r}function I4(e,t){return S4(e.properties,t)}function z2(e,t){let r=I4(e,t);return Te(r)}function K2(e,t){return Ss(pa(e),t)}function _4(e,t){let r=e.filter(n=>_i(n,t)!==N.False);return r.length===1?r[0]:Ce(r)}function Ss(e,t,r){return Lr(e)?P(K2(e,t),r):Je(e)?P(q2(e,t),r):P(ve(e)?_4(e.anyOf,t):_i(e,t)!==N.False?e:ge(),r)}function v4(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Ss(e[n],t);return r}function T4(e,t){return v4(e.properties,t)}function q2(e,t){let r=T4(e,t);return Te(r)}function H2(e,t){return Sn(e)?P(e.returns,t):ge(t)}function bl(e){return Sr(rr(e))}function da(e,t,r){return P({[k]:"Record",type:"object",patternProperties:{[e]:t}},r)}function n0(e,t,r){let n={};for(let o of e)n[o]=t;return Ae(n,{...r,[Wr]:"Record"})}function M4(e,t,r){return il(e)?n0(wr(e),t,r):da(e.pattern,t,r)}function O4(e,t,r){return n0(wr(Ce(e)),t,r)}function R4(e,t,r){return n0([e.toString()],t,r)}function C4(e,t,r){return da(e.source,t,r)}function A4(e,t,r){let n=gt(e.pattern)?bi:e.pattern;return da(n,t,r)}function P4(e,t,r){return da(bi,t,r)}function k4(e,t,r){return da(r2,t,r)}function N4(e,t,r){return Ae({true:t,false:t},r)}function F4(e,t,r){return da(gi,t,r)}function E4(e,t,r){return da(gi,t,r)}function wl(e,t,r={}){return ve(e)?O4(e.anyOf,t,r):Lr(e)?M4(e,t,r):Er(e)?R4(e.const,t,r):Po(e)?N4(e,t,r):_n(e)?F4(e,t,r):vn(e)?E4(e,t,r):$h(e)?C4(e,t,r):ko(e)?A4(e,t,r):Fh(e)?P4(e,t,r):yi(e)?k4(e,t,r):ge(r)}function Sl(e){return globalThis.Object.getOwnPropertyNames(e.patternProperties)[0]}function Y2(e){let t=Sl(e);return t===bi?lr():t===gi?Xr():lr({pattern:t})}function Il(e){return e.patternProperties[Sl(e)]}function $4(e,t){return t.parameters=tc(e,t.parameters),t.returns=On(e,t.returns),t}function L4(e,t){return t.parameters=tc(e,t.parameters),t.returns=On(e,t.returns),t}function D4(e,t){return t.allOf=tc(e,t.allOf),t}function V4(e,t){return t.anyOf=tc(e,t.anyOf),t}function U4(e,t){return gt(t.items)||(t.items=tc(e,t.items)),t}function j4(e,t){return t.items=On(e,t.items),t}function B4(e,t){return t.items=On(e,t.items),t}function G4(e,t){return t.items=On(e,t.items),t}function z4(e,t){return t.item=On(e,t.item),t}function K4(e,t){let r=W4(e,t.properties);return{...t,...Ae(r)}}function q4(e,t){let r=On(e,Y2(t)),n=On(e,Il(t)),o=wl(r,n);return{...t,...o}}function H4(e,t){return t.index in e?e[t.index]:Mn()}function Y4(e,t){let r=os(t),n=br(t),o=On(e,t);return r&&n?bl(o):r&&!n?Sr(o):!r&&n?rr(o):o}function W4(e,t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:Y4(e,t[n])}),{})}function tc(e,t){return t.map(r=>On(e,r))}function On(e,t){return Sn(t)?$4(e,t):In(t)?L4(e,t):st(t)?D4(e,t):ve(t)?V4(e,t):Dr(t)?U4(e,t):bn(t)?j4(e,t):aa(t)?B4(e,t):fa(t)?G4(e,t):ca(t)?z4(e,t):bt(t)?K4(e,t):ua(t)?q4(e,t):Eh(t)?H4(e,t):t}function W2(e,t){return On(t,rs(e))}function X2(e){return P({[k]:"Integer",type:"integer"},e)}function X4(e,t,r){return{[e]:Rn(_e(e),t,Xe(r))}}function Z4(e,t,r){return e.reduce((o,i)=>({...o,...X4(i,t,r)}),{})}function Q4(e,t,r){return Z4(e.keys,t,r)}function Z2(e,t,r){let n=Q4(e,t,r);return Te(n)}function J4(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toLowerCase(),r].join("")}function eR(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toUpperCase(),r].join("")}function tR(e){return e.toUpperCase()}function rR(e){return e.toLowerCase()}function nR(e,t,r){let n=ls(e.pattern);if(!la(n))return{...e,pattern:Q2(e.pattern,t)};let a=[...Zf(n)].map(u=>_e(u)),s=J2(a,t),f=Ce(s);return sl([f],r)}function Q2(e,t){return typeof e=="string"?t==="Uncapitalize"?J4(e):t==="Capitalize"?eR(e):t==="Uppercase"?tR(e):t==="Lowercase"?rR(e):e:e.toString()}function J2(e,t){return e.map(r=>Rn(r,t))}function Rn(e,t,r={}){return $r(e)?Z2(e,t,r):Lr(e)?nR(e,t,r):ve(e)?Ce(J2(e.anyOf,t),r):Er(e)?_e(Q2(e.const,t),r):P(e,r)}function ew(e,t={}){return Rn(e,"Capitalize",t)}function tw(e,t={}){return Rn(e,"Lowercase",t)}function rw(e,t={}){return Rn(e,"Uncapitalize",t)}function nw(e,t={}){return Rn(e,"Uppercase",t)}function oR(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=vi(e[o],t,Xe(r));return n}function iR(e,t,r){return oR(e.properties,t,r)}function ow(e,t,r){let n=iR(e,t,r);return Te(n)}function aR(e,t){return e.map(r=>o0(r,t))}function sR(e,t){return e.map(r=>o0(r,t))}function fR(e,t){let{[t]:r,...n}=e;return n}function cR(e,t){return t.reduce((r,n)=>fR(r,n),e)}function uR(e,t,r){let n=ft(e,[tt,"$id","required","properties"]),o=cR(r,t);return Ae(o,n)}function lR(e){let t=e.reduce((r,n)=>rl(n)?[...r,_e(n)]:r,[]);return Ce(t)}function o0(e,t){return st(e)?nr(aR(e.allOf,t)):ve(e)?Ce(sR(e.anyOf,t)):bt(e)?uR(e,t,e.properties):Ae({})}function vi(e,t,r){let n=xt(t)?lR(t):t,o=rt(t)?wr(t):t,i=lt(e),a=lt(t);return Je(e)?ow(e,o,r):$r(t)?iw(e,t,r):i&&a?He("Omit",[e,n],r):!i&&a?He("Omit",[e,n],r):i&&!a?He("Omit",[e,n],r):P({...o0(e,o),...r})}function pR(e,t,r){return{[t]:vi(e,[t],Xe(r))}}function mR(e,t,r){return t.reduce((n,o)=>({...n,...pR(e,o,r)}),{})}function dR(e,t,r){return mR(e,t.keys,r)}function iw(e,t,r){let n=dR(e,t,r);return Te(n)}function hR(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=Ti(e[o],t,Xe(r));return n}function yR(e,t,r){return hR(e.properties,t,r)}function aw(e,t,r){let n=yR(e,t,r);return Te(n)}function xR(e,t){return e.map(r=>i0(r,t))}function gR(e,t){return e.map(r=>i0(r,t))}function bR(e,t){let r={};for(let n of t)n in e&&(r[n]=e[n]);return r}function wR(e,t,r){let n=ft(e,[tt,"$id","required","properties"]),o=bR(r,t);return Ae(o,n)}function SR(e){let t=e.reduce((r,n)=>rl(n)?[...r,_e(n)]:r,[]);return Ce(t)}function i0(e,t){return st(e)?nr(xR(e.allOf,t)):ve(e)?Ce(gR(e.anyOf,t)):bt(e)?wR(e,t,e.properties):Ae({})}function Ti(e,t,r){let n=xt(t)?SR(t):t,o=rt(t)?wr(t):t,i=lt(e),a=lt(t);return Je(e)?aw(e,o,r):$r(t)?sw(e,t,r):i&&a?He("Pick",[e,n],r):!i&&a?He("Pick",[e,n],r):i&&!a?He("Pick",[e,n],r):P({...i0(e,o),...r})}function IR(e,t,r){return{[t]:Ti(e,[t],Xe(r))}}function _R(e,t,r){return t.reduce((n,o)=>({...n,...IR(e,o,r)}),{})}function vR(e,t,r){return _R(e,t.keys,r)}function sw(e,t,r){let n=vR(e,t,r);return Te(n)}function TR(e,t){return He("Partial",[He(e,t)])}function MR(e){return He("Partial",[Zn(e)])}function OR(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=rr(e[r]);return t}function RR(e,t){let r=ft(e,[tt,"$id","required","properties"]),n=OR(t);return Ae(n,r)}function fw(e){return e.map(t=>cw(t))}function cw(e){return wn(e)?TR(e.target,e.parameters):lt(e)?MR(e.$ref):st(e)?nr(fw(e.allOf)):ve(e)?Ce(fw(e.anyOf)):bt(e)?RR(e,e.properties):sa(e)||Po(e)||_n(e)||Er(e)||zf(e)||vn(e)||ko(e)||Kf(e)||No(e)?e:Ae({})}function Is(e,t){return Je(e)?uw(e,t):P({...cw(e),...t})}function CR(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Is(e[n],Xe(t));return r}function AR(e,t){return CR(e.properties,t)}function uw(e,t){let r=AR(e,t);return Te(r)}function PR(e,t){return He("Required",[He(e,t)])}function kR(e){return He("Required",[Zn(e)])}function NR(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=ft(e[r],[Ht]);return t}function FR(e,t){let r=ft(e,[tt,"$id","required","properties"]),n=NR(t);return Ae(n,r)}function lw(e){return e.map(t=>pw(t))}function pw(e){return wn(e)?PR(e.target,e.parameters):lt(e)?kR(e.$ref):st(e)?nr(lw(e.allOf)):ve(e)?Ce(lw(e.anyOf)):bt(e)?FR(e,e.properties):sa(e)||Po(e)||_n(e)||Er(e)||zf(e)||vn(e)||ko(e)||Kf(e)||No(e)?e:Ae({})}function _s(e,t){return Je(e)?mw(e,t):P({...pw(e),...t})}function ER(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=_s(e[n],t);return r}function $R(e,t){return ER(e.properties,t)}function mw(e,t){let r=$R(e,t);return Te(r)}function LR(e,t){return t.map(r=>lt(r)?a0(e,r.$ref):Vr(e,r))}function a0(e,t){return t in e?lt(e[t])?a0(e,e[t].$ref):Vr(e,e[t]):ge()}function DR(e){return hs(e[0])}function VR(e){return Ii(e[0],e[1])}function UR(e){return xs(e[0])}function jR(e){return Is(e[0])}function BR(e){return vi(e[0],e[1])}function GR(e){return Ti(e[0],e[1])}function zR(e){return _s(e[0])}function KR(e,t,r){let n=LR(e,r);return t==="Awaited"?DR(n):t==="Index"?VR(n):t==="KeyOf"?UR(n):t==="Partial"?jR(n):t==="Omit"?BR(n):t==="Pick"?GR(n):t==="Required"?zR(n):ge()}function qR(e,t){return ss(Vr(e,t))}function HR(e,t){return fs(Vr(e,t))}function YR(e,t,r){return cs(rc(e,t),Vr(e,r))}function WR(e,t,r){return Wn(rc(e,t),Vr(e,r))}function XR(e,t){return nr(rc(e,t))}function ZR(e,t){return ds(Vr(e,t))}function QR(e,t){return Ae(globalThis.Object.keys(t).reduce((r,n)=>({...r,[n]:Vr(e,t[n])}),{}))}function JR(e,t){let[r,n]=[Vr(e,Il(t)),Sl(t)],o=rs(t);return o.patternProperties[n]=r,o}function eC(e,t){return lt(t)?{...a0(e,t.$ref),[tt]:t[tt]}:t}function tC(e,t){return Zr(rc(e,t))}function rC(e,t){return Ce(rc(e,t))}function rc(e,t){return t.map(r=>Vr(e,r))}function Vr(e,t){return br(t)?P(Vr(e,ft(t,[Ht])),t):os(t)?P(Vr(e,ft(t,[gn])),t):Re(t)?P(eC(e,t),t):bn(t)?P(qR(e,t.items),t):aa(t)?P(HR(e,t.items),t):wn(t)?P(KR(e,t.target,t.parameters)):Sn(t)?P(YR(e,t.parameters,t.returns),t):In(t)?P(WR(e,t.parameters,t.returns),t):st(t)?P(XR(e,t.allOf),t):fa(t)?P(ZR(e,t.items),t):bt(t)?P(QR(e,t.properties),t):ua(t)?P(JR(e,t)):Dr(t)?P(tC(e,t.items||[]),t):ve(t)?P(rC(e,t.anyOf),t):t}function nC(e,t){return t in e?Vr(e,e[t]):ge()}function dw(e){return globalThis.Object.getOwnPropertyNames(e).reduce((t,r)=>({...t,[r]:nC(e,r)}),{})}var s0=class{constructor(t){let r=dw(t),n=this.WithIdentifiers(r);this.$defs=n}Import(t,r){let n={...this.$defs,[t]:P(this.$defs[t],r)};return P({[k]:"Import",$defs:n,$ref:t})}WithIdentifiers(t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:{...t[n],$id:n}}),{})}};function hw(e){return new s0(e)}function yw(e,t){return P({[k]:"Not",not:e},t)}function xw(e,t){return In(e)?Zr(e.parameters,t):ge()}var oC=0;function gw(e,t={}){gt(t.$id)&&(t.$id=`T${oC++}`);let r=rs(e({[k]:"This",$ref:`${t.$id}`}));return r.$id=t.$id,P({[Wr]:"Recursive",...r},t)}function bw(e,t){let r=ze(e)?new globalThis.RegExp(e):e;return P({[k]:"RegExp",type:"RegExp",source:r.source,flags:r.flags},t)}function iC(e){return st(e)?e.allOf:ve(e)?e.anyOf:Dr(e)?e.items??[]:[]}function ww(e){return iC(e)}function Sw(e,t){return In(e)?P(e.returns,t):ge(t)}var f0=class{constructor(t){this.schema=t}Decode(t){return new c0(this.schema,t)}},c0=class{constructor(t,r){this.schema=t,this.decode=r}EncodeTransform(t,r){let i={Encode:a=>r[tt].Encode(t(a)),Decode:a=>this.decode(r[tt].Decode(a))};return{...r,[tt]:i}}EncodeSchema(t,r){let n={Decode:this.decode,Encode:t};return{...r,[tt]:n}}Encode(t){return Re(this.schema)?this.EncodeTransform(t,this.schema):this.EncodeSchema(t,this.schema)}};function Iw(e){return new f0(e)}function _w(e={}){return P({[k]:e[k]??"Unsafe"},e)}function vw(e){return P({[k]:"Void",type:"void"},e)}var u0={};oa(u0,{Any:()=>Si,Argument:()=>s2,Array:()=>ss,AsyncIterator:()=>fs,Awaited:()=>hs,BigInt:()=>ms,Boolean:()=>al,Capitalize:()=>ew,Composite:()=>M2,Const:()=>O2,Constructor:()=>cs,ConstructorParameters:()=>R2,Date:()=>ll,Enum:()=>C2,Exclude:()=>ws,Extends:()=>bs,Extract:()=>Ss,Function:()=>Wn,Index:()=>Ii,InstanceType:()=>H2,Instantiate:()=>W2,Integer:()=>X2,Intersect:()=>nr,Iterator:()=>ds,KeyOf:()=>xs,Literal:()=>_e,Lowercase:()=>tw,Mapped:()=>w2,Module:()=>hw,Never:()=>ge,Not:()=>yw,Null:()=>pl,Number:()=>Xr,Object:()=>Ae,Omit:()=>vi,Optional:()=>rr,Parameters:()=>xw,Partial:()=>Is,Pick:()=>Ti,Promise:()=>cl,Readonly:()=>Sr,ReadonlyOptional:()=>bl,Record:()=>wl,Recursive:()=>gw,Ref:()=>Zn,RegExp:()=>bw,Required:()=>_s,Rest:()=>ww,ReturnType:()=>Sw,String:()=>lr,Symbol:()=>ml,TemplateLiteral:()=>sl,Transform:()=>Iw,Tuple:()=>Zr,Uint8Array:()=>hl,Uncapitalize:()=>rw,Undefined:()=>dl,Union:()=>Ce,Unknown:()=>Mn,Unsafe:()=>_w,Uppercase:()=>nw,Void:()=>vw});var h=u0;var Cn=h.Object({label:h.String(),domain:h.Optional(h.Tuple([h.Number(),h.Number()]))}),nc=h.Object({type:h.Union([h.Literal("identity"),h.Literal("horizontal"),h.Literal("vertical")]),value:h.Optional(h.Number())}),bZ=h.Object({schemaVersion:h.Literal("1.0"),title:h.Optional(h.String()),xAxis:Cn,yAxis:Cn,references:h.Optional(h.Array(nc))});var aC=h.Object({model:h.String(),population:h.Optional(h.String()),horizon:h.Optional(h.Number()),predicted:h.Number({minimum:0,maximum:1}),observed:h.Number({minimum:0,maximum:1}),method:h.Union([h.Literal("discrete"),h.Literal("smooth")]),events:h.Optional(h.Number({minimum:0})),total:h.Optional(h.Number({minimum:0}))}),sC=h.Object({model:h.String(),population:h.Optional(h.String()),horizon:h.Optional(h.Number()),midpoint:h.Number({minimum:0,maximum:1}),count:h.Number({minimum:0}),binWidth:h.Number({exclusiveMinimum:0,maximum:1})}),l0=h.Object({schemaVersion:h.Literal("1.0"),type:h.Literal("calibration"),data:h.Array(aC),distribution:h.Optional(h.Array(sC)),x:h.Literal("predicted"),y:h.Literal("observed"),xAxis:Cn,yAxis:Cn,references:h.Optional(h.Array(nc))});var fC=h.Object({model:h.String(),population:h.Optional(h.String()),horizon:h.Optional(h.Number()),cutoff:h.Number(),sensitivity:h.Number({minimum:0,maximum:1}),specificity:h.Number({minimum:0,maximum:1})}),p0=h.Object({schemaVersion:h.Literal("1.0"),type:h.Literal("roc"),data:h.Array(fC),x:h.Literal("false_positive_rate"),y:h.Literal("sensitivity"),xAxis:Cn,yAxis:Cn,references:h.Optional(h.Array(nc))});var cC=h.Union([p0,l0],{$id:"https://rtichoke.dev/schema/viz/1.0.json",title:"rtichoke visualization specification"});var An=h.Object({id:h.String(),model:h.Optional(h.String()),population:h.String(),label:h.Optional(h.String())}),Tw=h.Union([h.Literal("model"),h.Literal("population"),h.Literal("evaluation"),h.Literal("context")]),Mw=h.Object({label:h.String(),group:h.String(),role:Tw}),vs=h.Object({id:h.String(),evaluationId:h.String(),horizon:h.Optional(h.Number({minimum:0})),display:Mw}),uC=h.Object({x:h.Number(),y:h.Number()}),m0=h.Union([h.Object({type:h.Literal("identity"),label:h.Optional(h.String())}),h.Object({type:h.Literal("horizontal"),value:h.Number(),label:h.Optional(h.String())}),h.Object({type:h.Literal("vertical"),value:h.Number(),label:h.Optional(h.String())}),h.Object({type:h.Literal("path"),points:h.Array(uC,{minItems:2}),label:h.Optional(h.String())})]),lC=h.Intersect([m0,h.Object({scope:h.Literal("global")})]),pC=h.Intersect([m0,h.Object({scope:h.Literal("population"),population:h.String()})]),mC=h.Intersect([m0,h.Object({scope:h.Literal("population_horizon"),population:h.String(),horizon:h.Number({minimum:0})})]),Ow=h.Union([lC,pC,mC]),vr=h.Object({schemaVersion:h.Literal("2.0"),title:h.Optional(h.String()),evaluations:h.Array(An),series:h.Array(vs),xAxis:Cn,yAxis:Cn,references:h.Optional(h.Array(Ow))}),Rw=h.Union([h.Literal("probability_threshold"),h.Literal("ppcr")]),$o=h.Object({operatingPoint:h.Optional(h.Object({dimension:Rw}))}),_l=h.Object({operatingPoint:h.Optional(h.Object({dimension:h.Literal("probability_threshold")}))});var Cw=h.Object({seriesId:h.String(),predicted:h.Number({minimum:0,maximum:1}),observed:h.Number({minimum:0,maximum:1}),method:h.Literal("discrete"),events:h.Optional(h.Number({minimum:0})),total:h.Optional(h.Number({minimum:0}))}),Aw=h.Object({seriesId:h.String(),predicted:h.Number({minimum:0,maximum:1}),observed:h.Number(),method:h.Literal("smooth"),events:h.Optional(h.Number({minimum:0})),total:h.Optional(h.Number({minimum:0}))}),Pw=h.Union([Cw,Aw]),dC=h.Object({seriesId:h.String(),midpoint:h.Number({minimum:0,maximum:1}),count:h.Number({minimum:0}),binWidth:h.Number({exclusiveMinimum:0,maximum:1})}),d0=h.Intersect([vr,h.Object({type:h.Literal("calibration"),data:h.Array(Pw),distribution:h.Optional(h.Array(dC)),x:h.Literal("predicted"),y:h.Literal("observed")})]);var Nw=h.Object({seriesId:h.String(),threshold:h.Number({minimum:0,maximum:1}),netBenefit:h.Number()}),Fw=h.Intersect([An,h.Object({id:h.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Ew=h.Intersect([vs,h.Object({id:h.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:h.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),$w=h.Object({type:h.Literal("horizontal"),value:h.Literal(0),label:h.Optional(h.String()),scope:h.Literal("global"),benchmark:h.Literal("treat_none")}),kw={type:h.Literal("path"),points:h.Array(h.Object({x:h.Number(),y:h.Number()}),{minItems:2}),label:h.Optional(h.String()),benchmark:h.Literal("treat_all")},Lw=h.Union([h.Object({...kw,scope:h.Literal("population"),population:h.String()}),h.Object({...kw,scope:h.Literal("population_horizon"),population:h.String(),horizon:h.Number({minimum:0})})]),Dw=h.Union([$w,Lw]),h0=h.Intersect([vr,_l,h.Object({type:h.Literal("decision_curve"),evaluations:h.Array(Fw,{minItems:1}),series:h.Array(Ew,{minItems:1}),data:h.Array(Nw),x:h.Literal("threshold"),y:h.Literal("netBenefit"),references:h.Array(Dw,{minItems:2})})]);var hC=h.Object({seriesId:h.String(),cutoff:h.Number(),ppcr:h.Number({minimum:0,maximum:1}),sensitivity:h.Number({minimum:0,maximum:1})}),y0=h.Intersect([vr,$o,h.Object({type:h.Literal("gains"),data:h.Array(hC),x:h.Literal("ppcr"),y:h.Literal("sensitivity")})]);var Uw=h.Object({seriesId:h.String(),threshold:h.Number({minimum:0,maximum:1}),interventionsAvoided:h.Number()}),jw=h.Intersect([An,h.Object({id:h.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Bw=h.Intersect([vs,h.Object({id:h.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:h.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),Gw=h.Object({type:h.Literal("horizontal"),value:h.Literal(0),label:h.Optional(h.String()),scope:h.Literal("global"),benchmark:h.Literal("treat_all")}),Vw={type:h.Literal("path"),points:h.Array(h.Object({x:h.Number(),y:h.Number()}),{minItems:2}),label:h.Optional(h.String()),benchmark:h.Literal("treat_none")},zw=h.Union([h.Object({...Vw,scope:h.Literal("population"),population:h.String()}),h.Object({...Vw,scope:h.Literal("population_horizon"),population:h.String(),horizon:h.Number({minimum:0})})]),Kw=h.Union([Gw,zw]),x0=h.Intersect([vr,_l,h.Object({type:h.Literal("interventions_avoided"),evaluations:h.Array(jw,{minItems:1}),series:h.Array(Bw,{minItems:1}),data:h.Array(Uw),x:h.Literal("threshold"),y:h.Literal("interventionsAvoided"),references:h.Array(Kw,{minItems:2})})]);var yC=h.Object({seriesId:h.String(),cutoff:h.Number(),ppcr:h.Number({minimum:0,maximum:1}),lift:h.Number()}),g0=h.Intersect([vr,$o,h.Object({type:h.Literal("lift"),data:h.Array(yC),x:h.Literal("ppcr"),y:h.Literal("lift")})]);var xC=h.Object({seriesId:h.String(),cutoff:h.Number(),ppcr:h.Optional(h.Number({minimum:0,maximum:1})),sensitivity:h.Number({minimum:0,maximum:1}),ppv:h.Number({minimum:0,maximum:1})}),b0=h.Intersect([vr,$o,h.Object({type:h.Literal("precision_recall"),data:h.Array(xC),x:h.Literal("sensitivity"),y:h.Literal("ppv")})]);var gC=h.Object({seriesId:h.String(),cutoff:h.Number(),ppcr:h.Optional(h.Number({minimum:0,maximum:1})),sensitivity:h.Number({minimum:0,maximum:1}),specificity:h.Number({minimum:0,maximum:1})}),w0=h.Intersect([vr,$o,h.Object({type:h.Literal("roc"),data:h.Array(gC),x:h.Literal("false_positive_rate"),y:h.Literal("sensitivity")})]);var S0=h.Union([w0,d0,b0,y0,g0,h0,x0],{$id:"https://rtichoke.dev/schema/viz/2.0.json",title:"rtichoke visualization specification v2"});var I0=h.Union([h.Literal("true_positives"),h.Literal("true_negatives"),h.Literal("false_positives"),h.Literal("false_negatives"),h.Literal("sensitivity"),h.Literal("specificity"),h.Literal("false_positive_rate"),h.Literal("ppv"),h.Literal("npv"),h.Literal("lift"),h.Literal("predicted_positives"),h.Literal("ppcr"),h.Literal("net_benefit"),h.Literal("net_benefit_interventions_avoided")]),qw=h.Object({id:I0,label:h.String()}),Hw=h.Object({metricId:I0,estimate:h.Union([h.Number(),h.Null()]),lower:h.Optional(h.Union([h.Number(),h.Null()])),upper:h.Optional(h.Union([h.Number(),h.Null()]))}),Yw=h.Union([h.Object({type:h.Literal("probability_threshold"),value:h.Number()}),h.Object({type:h.Literal("ppcr"),value:h.Number({minimum:0,maximum:1})})]),Ww=h.Object({censoringHeuristic:h.Optional(h.String()),competingEventHeuristic:h.Optional(h.String())}),Xw=h.Object({evaluationId:h.String(),horizon:h.Optional(h.Number({minimum:0})),operatingPoint:Yw,context:h.Optional(Ww),values:h.Array(Hw)}),_0=h.Object({schemaVersion:h.Literal("2.0"),type:h.Literal("performance_table"),title:h.Optional(h.String()),evaluations:h.Array(An),metrics:h.Array(qw),rows:h.Array(Xw)});var v0=h.Object({id:h.String(),label:h.String()}),T0=h.Object({metric:h.Literal("auroc"),owner:h.Object({type:h.Literal("evaluation"),evaluationId:h.String()}),estimate:h.Union([h.Number(),h.Null()])}),M0=h.Object({metric:h.Literal("prevalence"),owner:h.Object({type:h.Literal("population"),populationId:h.String()}),estimate:h.Union([h.Number(),h.Null()])}),bC=h.Object({metric:h.Literal("event_risk"),owner:h.Object({type:h.Literal("population"),populationId:h.String()}),horizon:h.Number({minimum:0}),estimate:h.Union([h.Number(),h.Null()])}),wC=h.Union([T0,M0]),Zw=h.Union([T0,M0,bC]),SC=Zw,IC=h.Object({schemaVersion:h.Literal("1.0"),type:h.Literal("summary_metrics"),title:h.Optional(h.String()),evaluations:h.Array(An),populations:h.Array(v0),metrics:h.Array(wC)}),_C=h.Object({schemaVersion:h.Literal("1.1"),type:h.Literal("summary_metrics"),title:h.Optional(h.String()),evaluations:h.Array(An),populations:h.Array(v0),metrics:h.Array(Zw)}),O0=h.Union([IC,_C],{$id:"https://rtichoke.dev/schema/viz/summary-metrics.json",title:"rtichoke summary metrics specification"});var R0=h.Union([S0,_0,O0]),Qw=h.Object({id:h.String(),title:h.Optional(h.String()),spec:R0}),vl=h.Object({schemaVersion:h.Literal("1.0"),type:h.Literal("report"),title:h.Optional(h.String()),components:h.Array(Qw,{minItems:1})}),C0=h.Object({type:h.Literal("component"),id:h.String(),title:h.Optional(h.String()),spec:R0}),Jw=h.Object({type:h.Literal("group"),id:h.String(),title:h.String(),components:h.Array(C0,{minItems:1})}),eS=h.Object({id:h.String(),title:h.String(),items:h.Array(h.Union([C0,Jw]),{minItems:1})}),Tl=h.Object({schemaVersion:h.Literal("1.1"),type:h.Literal("report"),title:h.Optional(h.String()),sections:h.Array(eS,{minItems:1})}),vC=h.Union([vl,Tl],{$id:"https://rtichoke.dev/schema/viz/report.json",title:"rtichoke report specification"});function Ml(e){let t=new Set,r=i=>{if(t.has(i.id))throw new Error(`duplicate component id: ${i.id}`);t.add(i.id)};if(e.schemaVersion==="1.0"){for(let i of e.components)r(i);return}let n=new Set,o=new Set;for(let i of e.sections){if(n.has(i.id))throw new Error(`duplicate section id: ${i.id}`);n.add(i.id);for(let a of i.items){if(a.type==="component"){r(a);continue}if(o.has(a.id))throw new Error(`duplicate group id: ${a.id}`);o.add(a.id);for(let s of a.components)r(s)}}}function A0(e){let t=new Set;for(let n of e.evaluations){if(t.has(n.id))throw new Error(`duplicate evaluation id: ${n.id}`);t.add(n.id)}let r=new Set;for(let n of e.metrics){if(r.has(n.id))throw new Error(`duplicate metric id: ${n.id}`);r.add(n.id)}for(let n of e.rows){if(!t.has(n.evaluationId))throw new Error(`unknown evaluation id: ${n.evaluationId}`);for(let o of n.values)if(!r.has(o.metricId))throw new Error(`unknown metric id: ${o.metricId}`)}}function P0(e){let t=new Set;for(let o of e.evaluations){if(t.has(o.id))throw new Error(`duplicate evaluation id: ${o.id}`);t.add(o.id)}let r=new Set;for(let o of e.populations){if(r.has(o.id))throw new Error(`duplicate population id: ${o.id}`);r.add(o.id)}let n=new Set;for(let o of e.metrics){if(o.estimate!==null&&!Number.isFinite(o.estimate))throw new Error(`non-finite metric estimate: ${o.estimate}`);if("horizon"in o&&o.horizon!==void 0&&(!Number.isFinite(o.horizon)||o.horizon<0))throw new Error(`invalid horizon: ${o.horizon}`);if(o.metric==="auroc"){if("horizon"in o&&o.horizon!==void 0)throw new Error("auroc metric cannot specify horizon");if(!t.has(o.owner.evaluationId))throw new Error(`unknown evaluation id: ${o.owner.evaluationId}`);let i=`auroc:${o.owner.evaluationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: auroc for evaluation ${o.owner.evaluationId}`);n.add(i)}else if(o.metric==="prevalence"){if("horizon"in o&&o.horizon!==void 0)throw new Error("prevalence metric cannot specify horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`prevalence:${o.owner.populationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: prevalence for population ${o.owner.populationId}`);n.add(i)}else if(o.metric==="event_risk"){if(e.schemaVersion!=="1.1")throw new Error(`event_risk metric requires schemaVersion 1.1, got ${e.schemaVersion}`);if(!("horizon"in o)||o.horizon===void 0)throw new Error("event_risk metric requires horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`event_risk:${o.owner.populationId}:${o.horizon}`;if(n.has(i))throw new Error(`duplicate metric ownership: event_risk for population ${o.owner.populationId} at horizon ${o.horizon}`);n.add(i)}}}function Lo(e){let t=new Set(e.evaluations.map(o=>o.id)),r=new Set;if(t.size!==e.evaluations.length)throw new Error("duplicate evaluation id");for(let o of e.series){if(r.has(o.id))throw new Error(`duplicate series id: ${o.id}`);if(r.add(o.id),!t.has(o.evaluationId))throw new Error(`unknown evaluation id: ${o.evaluationId}`)}for(let o of e.data)if(!r.has(o.seriesId))throw new Error(`unknown series id: ${o.seriesId}`);if(e.type==="calibration"){for(let o of e.distribution??[])if(!r.has(o.seriesId))throw new Error(`unknown distribution series id: ${o.seriesId}`)}let n=new Set(e.evaluations.map(o=>o.population));for(let o of e.references??[])if((o.scope==="population"||o.scope==="population_horizon")&&!n.has(o.population))throw new Error(`unknown reference population: ${o.population}`);if(e.type==="decision_curve"){let o=e,i=o.references;o.evaluations.forEach((d,y)=>{let x=`evaluation-${y+1}`;if(d.id!==x)throw new Error(`decision curve evaluation ids must be ordinal: expected ${x}`)});let a=o.series.filter(d=>d.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("decision curve cannot mix static and horizon-qualified series");let s=a>0,f=[...new Set(o.series.map(d=>d.horizon).filter(d=>d!==void 0))],u=new Set;if(o.series.forEach((d,y)=>{if(d.id!==`series-${y+1}`)throw new Error(`decision curve series ids must be ordinal: expected series-${y+1}`);let x=o.evaluations.find(b=>b.id===d.evaluationId),w=x.model??x.population,g=x.model===void 0?"population":"model";if(d.display.label!==w||d.display.group!==w||d.display.role!==g)throw new Error("decision curve display must follow evaluation semantics");let S=`${d.evaluationId}\0${d.horizon??"static"}`;if(u.has(S))throw new Error(`duplicate decision curve evaluation-horizon series: ${d.evaluationId}`);u.add(S)}),s){if(!o.evaluations.every(y=>f.every(x=>u.has(`${y.id}\0${x}`)))||o.series.length!==o.evaluations.length*f.length)throw new Error("decision curve requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(d=>!u.has(`${d.id}\0static`)))throw new Error("decision curve requires exactly one series per evaluation");if(i.filter(d=>"benchmark"in d&&d.benchmark==="treat_none").length!==1)throw new Error("decision curve requires exactly one Treat None reference");let m=i.filter(d=>"benchmark"in d&&d.benchmark==="treat_all"),l=new Set;for(let d of m){if(s&&d.scope!=="population_horizon")throw new Error("time-dependent decision curve Treat All must use population_horizon scope");if(!s&&d.scope!=="population")throw new Error("static decision curve Treat All must use population scope");let y=d.scope==="population_horizon"?`${d.population}\0${d.horizon}`:d.population;if(l.has(y))throw new Error(`duplicate Treat All owner: ${d.population}`);l.add(y)}let p=s?[...n].flatMap(d=>f.map(y=>`${d}\0${y}`)):[...n];if(l.size!==p.length||p.some(d=>!l.has(d)))throw new Error(s?"decision curve requires exactly one Treat All reference per population and horizon":"decision curve requires exactly one Treat All reference per population")}if(e.type==="interventions_avoided"){let o=e,i=o.references;o.evaluations.forEach((d,y)=>{let x=`evaluation-${y+1}`;if(d.id!==x)throw new Error(`interventions avoided evaluation ids must be ordinal: expected ${x}`)});let a=o.series.filter(d=>d.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("interventions avoided cannot mix static and horizon-qualified series");let s=a>0,f=[...new Set(o.series.map(d=>d.horizon).filter(d=>d!==void 0))],u=new Set;if(o.series.forEach((d,y)=>{if(d.id!==`series-${y+1}`)throw new Error(`interventions avoided series ids must be ordinal: expected series-${y+1}`);let x=o.evaluations.find(b=>b.id===d.evaluationId);if(!x)throw new Error(`unknown evaluation id: ${d.evaluationId}`);let w=x.model??x.population,g=x.model===void 0?"population":"model";if(d.display.label!==w||d.display.group!==w||d.display.role!==g)throw new Error("interventions avoided display must follow evaluation semantics");let S=`${d.evaluationId}\0${d.horizon??"static"}`;if(u.has(S))throw new Error(`duplicate interventions avoided evaluation-horizon series: ${d.evaluationId}`);u.add(S)}),s){if(!o.evaluations.every(y=>f.every(x=>u.has(`${y.id}\0${x}`)))||o.series.length!==o.evaluations.length*f.length)throw new Error("interventions avoided requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(d=>!u.has(`${d.id}\0static`)))throw new Error("interventions avoided requires exactly one series per evaluation");let c=i.filter(d=>"benchmark"in d&&d.benchmark==="treat_all");if(c.length!==1)throw new Error("interventions avoided requires exactly one Treat All reference");if(c[0].scope!=="global"||c[0].type!=="horizontal"||c[0].value!==0)throw new Error("interventions avoided Treat All must be the global zero reference");let m=i.filter(d=>"benchmark"in d&&d.benchmark==="treat_none"),l=new Set;for(let d of m){if(s&&d.scope!=="population_horizon")throw new Error("time-dependent interventions avoided Treat None must use population_horizon scope");if(!s&&d.scope!=="population")throw new Error("static interventions avoided Treat None must use population scope");let y=d.scope==="population_horizon"?`${d.population}\0${d.horizon}`:d.population;if(l.has(y))throw new Error(`duplicate Treat None owner: ${d.population}`);l.add(y)}let p=s?[...n].flatMap(d=>f.map(y=>`${d}\0${y}`)):[...n];if(l.size!==p.length||p.some(d=>!l.has(d)))throw new Error(s?"interventions avoided requires exactly one Treat None reference per population and horizon":"interventions avoided requires exactly one Treat None reference per population")}}function tS(e){return{schemaVersion:"1.0",type:"roc",data:e,x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity"}]}}function TC(e){return tS(e.map(t=>({model:t.model,cutoff:t.probability_threshold,sensitivity:t.sensitivity,specificity:t.specificity})))}function MC(e){return tS(e.map(t=>({model:t.reference_group,cutoff:t.chosen_cutoff,sensitivity:t.sensitivity,specificity:t.specificity})))}function OC(e,t,r){let n=e.map(i=>{let a=i.sum_reals??i.n_reals,s=i.total_obs??i.n;return{model:i.reference_group,predicted:i.x,observed:i.y,method:t,...t==="discrete"&&a!==void 0?{events:a}:{},...t==="discrete"&&s!==void 0?{total:s}:{}}}),o=r?.map(i=>({model:i.reference_group,midpoint:i.mids,count:i.counts,binWidth:.01}));return{schemaVersion:"1.0",type:"calibration",data:n,...o?{distribution:o}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[0,1]},references:[{type:"identity"}]}}function RC(e,t){let r=t.role==="model"?t.population??"population":e,n=`evaluation:${e}`;return{evaluation:{id:n,...t.role==="model"?{model:e}:{},population:r,label:e},series:{id:`series:${e}`,evaluationId:n,display:{label:e,group:e,role:t.role}}}}function k0(e,t){return[...new Set(e)].map(n=>RC(n,t))}function CC(e,t="population"){let r=k0(e.map(n=>n.model),{role:"model",population:t});return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.model}`,cutoff:n.probability_threshold,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function AC(e,t){let r=k0(e.map(n=>n.reference_group),t);return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.reference_group}`,cutoff:n.chosen_cutoff,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function PC(e,t,r,n){let o=k0(e.map(f=>f.reference_group),r),i=e.map(f=>f.y).filter(Number.isFinite),a=Math.min(0,...i),s=Math.max(1,...i);return{schemaVersion:"2.0",type:"calibration",evaluations:o.map(f=>f.evaluation),series:o.map(f=>f.series),data:e.map(f=>{let u=f.sum_reals??f.n_reals,c=f.total_obs??f.n;return{seriesId:`series:${f.reference_group}`,predicted:f.x,observed:f.y,method:t,...t==="discrete"&&u!==void 0?{events:u}:{},...t==="discrete"&&c!==void 0?{total:c}:{}}}),...n?{distribution:n.map(f=>({seriesId:`series:${f.reference_group}`,midpoint:f.mids,count:f.counts,binWidth:.01}))}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[a,s]},references:[{type:"identity",scope:"global",label:"Perfectly Calibrated"}]}}function ct(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function tn(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function Do(e){let t,r,n;e.length!==2?(t=ct,r=(s,f)=>ct(e(s),f),n=(s,f)=>e(s)-f):(t=e===ct||e===tn?e:kC,r=e,n=e);function o(s,f,u=0,c=s.length){if(u>>1;r(s[m],f)<0?u=m+1:c=m}while(u>>1;r(s[m],f)<=0?u=m+1:c=m}while(uu&&n(s[m-1],f)>-n(s[m],f)?m-1:m}return{left:o,center:a,right:i}}function kC(){return 0}function oc(e){return e===null?NaN:+e}function*rS(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var nS=Do(ct),oS=nS.right,NC=nS.left,FC=Do(oc).center,ha=oS;function EC(e){return e.length|0}function $C(e){return!(e>0)}function LC(e){return typeof e!="object"||"length"in e?e:Array.from(e)}function DC(e){return t=>e(...t)}function Ol(...e){let t=typeof e[e.length-1]=="function"&&DC(e.pop());e=e.map(LC);let r=e.map(EC),n=e.length-1,o=new Array(n+1).fill(0),i=[];if(n<0||r.some($C))return i;for(;;){i.push(o.map((s,f)=>e[f][s]));let a=n;for(;++o[a]===r[a];){if(a===0)return t?i.map(t):i;o[a--]=0}}}function Rl(e,t){var r=0,n=0;return Float64Array.from(e,t===void 0?o=>r+=+o||0:o=>r+=+t(o,n++,e)||0)}function Ts(e,t){let r=0,n,o=0,i=0;if(t===void 0)for(let a of e)a!=null&&(a=+a)>=a&&(n=a-o,o+=n/++r,i+=n*(a-o));else{let a=-1;for(let s of e)(s=t(s,++a,e))!=null&&(s=+s)>=s&&(n=s-o,o+=n/++r,i+=n*(s-o))}if(r>1)return i/(r-1)}function Cl(e,t){let r=Ts(e,t);return r&&Math.sqrt(r)}function Tr(e,t){let r,n;if(t===void 0)for(let o of e)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n=i&&(r=n=i):(r>i&&(r=i),n0){for(a=t[--r];r>0&&(n=a,o=t[--r],a=n+o,i=o-(a-n),!i););r>0&&(i<0&&t[r-1]<0||i>0&&t[r-1]>0)&&(o=i*2,n=a+o,o==n-a&&(a=n))}return a}};var pr=class extends Map{constructor(t,r=sS){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,o]of t)this.set(n,o)}get(t){return super.get(N0(this,t))}has(t){return super.has(N0(this,t))}set(t,r){return super.set(iS(this,t),r)}delete(t){return super.delete(aS(this,t))}},Pn=class extends Set{constructor(t,r=sS){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let n of t)this.add(n)}has(t){return super.has(N0(this,t))}add(t){return super.add(iS(this,t))}delete(t){return super.delete(aS(this,t))}};function N0({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function iS({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function aS({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function sS(e){return e!==null&&typeof e=="object"?e.valueOf():e}function ic(e){return e}function Vo(e,...t){return E0(e,ic,ic,t)}function Qn(e,t,...r){return E0(e,ic,t,r)}function F0(e,t,...r){return E0(e,Array.from,t,r)}function E0(e,t,r,n){return(function o(i,a){if(a>=n.length)return r(i);let s=new pr,f=n[a++],u=-1;for(let c of i){let m=f(c,++u,i),l=s.get(m);l?l.push(c):s.set(m,[c])}for(let[c,m]of s)s.set(c,o(m,a));return t(s)})(e,0)}function $0(e,t){return Array.from(t,r=>e[r])}function Mi(e,...t){if(typeof e[Symbol.iterator]!="function")throw new TypeError("values is not iterable");e=Array.from(e);let[r]=t;if(r&&r.length!==2||t.length>1){let n=Uint32Array.from(e,(o,i)=>i);return t.length>1?(t=t.map(o=>e.map(o)),n.sort((o,i)=>{for(let a of t){let s=ac(a[o],a[i]);if(s)return s}})):(r=e.map(r),n.sort((o,i)=>ac(r[o],r[i]))),$0(e,n)}return e.sort(L0(r))}function L0(e=ct){if(e===ct)return ac;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function ac(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}function Ms(e,t,r){return(t.length!==2?Mi(Qn(e,t,r),(([n,o],[i,a])=>ct(o,a)||ct(n,i))):Mi(Vo(e,r),(([n,o],[i,a])=>t(o,a)||ct(n,i)))).map(([n])=>n)}var VC=Math.sqrt(50),UC=Math.sqrt(10),jC=Math.sqrt(2);function Al(e,t,r){let n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),a=i>=VC?10:i>=UC?5:i>=jC?2:1,s,f,u;return o<0?(u=Math.pow(10,-o)/a,s=Math.round(e*u),f=Math.round(t*u),s/ut&&--f,u=-u):(u=Math.pow(10,o)*a,s=Math.round(e/u),f=Math.round(t/u),s*ut&&--f),f0))return[];if(e===t)return[e];let n=t=o))return[];let s=i-o+1,f=new Array(s);if(n)if(a<0)for(let u=0;u=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r=o)&&(r=o)}return r}function Pl(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r=i)&&(r=i,n=o);return n}function mr(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}return r}function kl(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);return n}function Nl(e,t,r=0,n=1/0,o){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(o=o===void 0?ac:L0(o);n>r;){if(n-r>600){let f=n-r+1,u=t-r+1,c=Math.log(f),m=.5*Math.exp(2*c/3),l=.5*Math.sqrt(c*m*(f-m)/f)*(u-f/2<0?-1:1),p=Math.max(r,Math.floor(t-u*m/f+l)),d=Math.min(n,Math.floor(t+(f-u)*m/f+l));Nl(e,t,p,d,o)}let i=e[t],a=r,s=n;for(fc(e,r,t),o(e[n],i)>0&&fc(e,r,n);a0;)--s}o(e[r],i)===0?fc(e,r,s):(++s,fc(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function fc(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function cc(e,t=ct){let r,n=!1;if(t.length===1){let o;for(let i of e){let a=t(i);(n?ct(a,o)>0:ct(a,a)===0)&&(r=i,o=a,n=!0)}}else for(let o of e)(n?t(o,r)>0:t(o,o)===0)&&(r=o,n=!0);return r}function jo(e,t,r){if(e=Float64Array.from(rS(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return mr(e);if(t>=1)return Nt(e);var n,o=(n-1)*t,i=Math.floor(o),a=Nt(Nl(e,i).subarray(0,i+1)),s=mr(e.subarray(i+1));return a+(s-a)*(o-i)}}function D0(e,t,r=oc){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,o=(n-1)*t,i=Math.floor(o),a=+r(e[i],i,e),s=+r(e[i+1],i+1,e);return a+(s-a)*(o-i)}}function Fl(e,t){let r=0,n=0;if(t===void 0)for(let o of e)o!=null&&(o=+o)>=o&&(++r,n+=o);else{let o=-1;for(let i of e)(i=t(i,++o,e))!=null&&(i=+i)>=i&&(++r,n+=i)}if(r)return n/r}function ya(e,t){return jo(e,.5,t)}function*GC(e){for(let t of e)yield*t}function Rs(e){return Array.from(GC(e))}function El(e,t){let r=new pr;if(t===void 0)for(let i of e)i!=null&&i>=i&&r.set(i,(r.get(i)||0)+1);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&a>=a&&r.set(a,(r.get(a)||0)+1)}let n,o=0;for(let[i,a]of r)a>o&&(o=a,n=i);return n}function $l(e,t=zC){let r=[],n,o=!1;for(let i of e)o&&r.push(t(n,i)),n=i,o=!0;return r}function zC(e,t){return[e,t]}function xa(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,i=new Array(o);++n+e(t)}function YC(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function WC(){return!this.__axis}function XC(e,t){var r=[],n=null,o=null,i=6,a=6,s=3,f=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===V0||e===Ll?-1:1,c=e===Ll||e===U0?"x":"y",m=e===V0||e===j0?KC:qC;function l(p){var d=n??(t.ticks?t.ticks.apply(t,r):t.domain()),y=o??(t.tickFormat?t.tickFormat.apply(t,r):fS),x=Math.max(i,0)+s,w=t.range(),g=+w[0]+f,S=+w[w.length-1]+f,b=(t.bandwidth?YC:HC)(t.copy(),f),T=p.selection?p.selection():p,I=T.selectAll(".domain").data([null]),v=T.selectAll(".tick").data(d,t).order(),O=v.exit(),C=v.enter().append("g").attr("class","tick"),E=v.select("line"),A=v.select("text");I=I.merge(I.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),v=v.merge(C),E=E.merge(C.append("line").attr("stroke","currentColor").attr(c+"2",u*i)),A=A.merge(C.append("text").attr("fill","currentColor").attr(c,u*x).attr("dy",e===V0?"0em":e===j0?"0.71em":"0.32em")),p!==T&&(I=I.transition(p),v=v.transition(p),E=E.transition(p),A=A.transition(p),O=O.transition(p).attr("opacity",cS).attr("transform",function(F){return isFinite(F=b(F))?m(F+f):this.getAttribute("transform")}),C.attr("opacity",cS).attr("transform",function(F){var H=this.parentNode.__axis;return m((H&&isFinite(H=H(F))?H:b(F))+f)})),O.remove(),I.attr("d",e===Ll||e===U0?a?"M"+u*a+","+g+"H"+f+"V"+S+"H"+u*a:"M"+f+","+g+"V"+S:a?"M"+g+","+u*a+"V"+f+"H"+S+"V"+u*a:"M"+g+","+f+"H"+S),v.attr("opacity",1).attr("transform",function(F){return m(b(F)+f)}),E.attr(c+"2",u*i),A.attr(c,u*x).text(y),T.filter(WC).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===U0?"start":e===Ll?"end":"middle"),T.each(function(){this.__axis=b})}return l.scale=function(p){return arguments.length?(t=p,l):t},l.ticks=function(){return r=Array.from(arguments),l},l.tickArguments=function(p){return arguments.length?(r=p==null?[]:Array.from(p),l):r.slice()},l.tickValues=function(p){return arguments.length?(n=p==null?null:Array.from(p),l):n&&n.slice()},l.tickFormat=function(p){return arguments.length?(o=p,l):o},l.tickSize=function(p){return arguments.length?(i=a=+p,l):i},l.tickSizeInner=function(p){return arguments.length?(i=+p,l):i},l.tickSizeOuter=function(p){return arguments.length?(a=+p,l):a},l.tickPadding=function(p){return arguments.length?(s=+p,l):s},l.offset=function(p){return arguments.length?(f=+p,l):f},l}function B0(e){return XC(j0,e)}var ZC={value:()=>{}};function lS(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}Dl.prototype=lS.prototype={constructor:Dl,on:function(e,t){var r=this._,n=QC(e+"",r),o,i=-1,a=n.length;if(arguments.length<2){for(;++i0)for(var r=new Array(o),n=0,o,i;n=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),Jn.hasOwnProperty(t)?{space:Jn[t],local:e}:e}function eA(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Vl&&t.documentElement.namespaceURI===Vl?t.createElement(e):t.createElementNS(r,e)}}function tA(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Go(e){var t=Bo(e);return(t.local?tA:eA)(t)}function rA(){}function ga(e){return e==null?rA:function(){return this.querySelector(e)}}function pS(e){typeof e!="function"&&(e=ga(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o=S&&(S=g+1);!(T=x[S])&&++S=0;)(a=n[o])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function vS(e){e||(e=hA);function t(m,l){return m&&l?e(m.__data__,l.__data__):!m-!l}for(var r=this._groups,n=r.length,o=new Array(n),i=0;it?1:e>=t?0:NaN}function TS(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function MS(){return Array.from(this)}function OS(){for(var e=this._groups,t=0,r=e.length;t1?this.each((t==null?IA:typeof t=="function"?vA:_A)(e,t,r??"")):Ri(this.node(),e)}function Ri(e,t){return e.style.getPropertyValue(t)||Bl(e).getComputedStyle(e,null).getPropertyValue(t)}function TA(e){return function(){delete this[e]}}function MA(e,t){return function(){this[e]=t}}function OA(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function NS(e,t){return arguments.length>1?this.each((t==null?TA:typeof t=="function"?OA:MA)(e,t)):this.node()[e]}function FS(e){return e.trim().split(/^|\s+/)}function K0(e){return e.classList||new ES(e)}function ES(e){this._node=e,this._names=FS(e.getAttribute("class")||"")}ES.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function $S(e,t){for(var r=K0(e),n=-1,o=t.length;++n=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function KA(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,o=t.length,i;r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?Gl(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?Gl(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=ZA.exec(e))?new Tt(t[1],t[2],t[3],1):(t=QA.exec(e))?new Tt(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=JA.exec(e))?Gl(t[1],t[2],t[3],t[4]):(t=e7.exec(e))?Gl(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=t7.exec(e))?aI(t[1],t[2]/100,t[3]/100,1):(t=r7.exec(e))?aI(t[1],t[2]/100,t[3]/100,t[4]):eI.hasOwnProperty(e)?nI(eI[e]):e==="transparent"?new Tt(NaN,NaN,NaN,0):null}function nI(e){return new Tt(e>>16&255,e>>8&255,e&255,1)}function Gl(e,t,r,n){return n<=0&&(e=t=r=NaN),new Tt(e,t,r,n)}function dc(e){return e instanceof to||(e=Nn(e)),e?(e=e.rgb(),new Tt(e.r,e.g,e.b,e.opacity)):new Tt}function on(e,t,r,n){return arguments.length===1?dc(e):new Tt(e,t,r,n??1)}function Tt(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Ko(Tt,on,Ci(to,{brighter(e){return e=e==null?Sa:Math.pow(Sa,e),new Tt(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ai:Math.pow(Ai,e),new Tt(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Tt(wa(this.r),wa(this.g),wa(this.b),Kl(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:oI,formatHex:oI,formatHex8:i7,formatRgb:iI,toString:iI}));function oI(){return`#${ba(this.r)}${ba(this.g)}${ba(this.b)}`}function i7(){return`#${ba(this.r)}${ba(this.g)}${ba(this.b)}${ba((isNaN(this.opacity)?1:this.opacity)*255)}`}function iI(){let e=Kl(this.opacity);return`${e===1?"rgb(":"rgba("}${wa(this.r)}, ${wa(this.g)}, ${wa(this.b)}${e===1?")":`, ${e})`}`}function Kl(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function wa(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ba(e){return e=wa(e),(e<16?"0":"")+e.toString(16)}function aI(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new kn(e,t,r,n)}function fI(e){if(e instanceof kn)return new kn(e.h,e.s,e.l,e.opacity);if(e instanceof to||(e=Nn(e)),!e)return new kn;if(e instanceof kn)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),i=Math.max(t,r,n),a=NaN,s=i-o,f=(i+o)/2;return s?(t===i?a=(r-n)/s+(r0&&f<1?0:a,new kn(a,s,f,e.opacity)}function hc(e,t,r,n){return arguments.length===1?fI(e):new kn(e,t,r,n??1)}function kn(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Ko(kn,hc,Ci(to,{brighter(e){return e=e==null?Sa:Math.pow(Sa,e),new kn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ai:Math.pow(Ai,e),new kn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Tt(Y0(e>=240?e-240:e+120,o,n),Y0(e,o,n),Y0(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new kn(sI(this.h),zl(this.s),zl(this.l),Kl(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Kl(this.opacity);return`${e===1?"hsl(":"hsla("}${sI(this.h)}, ${zl(this.s)*100}%, ${zl(this.l)*100}%${e===1?")":`, ${e})`}`}}));function sI(e){return e=(e||0)%360,e<0?e+360:e}function zl(e){return Math.max(0,Math.min(1,e||0))}function Y0(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var ql=Math.PI/180,Hl=180/Math.PI;var Yl=18,cI=.96422,uI=1,lI=.82521,pI=4/29,As=6/29,mI=3*As*As,a7=As*As*As;function dI(e){if(e instanceof ro)return new ro(e.l,e.a,e.b,e.opacity);if(e instanceof qo)return hI(e);e instanceof Tt||(e=dc(e));var t=Q0(e.r),r=Q0(e.g),n=Q0(e.b),o=W0((.2225045*t+.7168786*r+.0606169*n)/uI),i,a;return t===r&&r===n?i=a=o:(i=W0((.4360747*t+.3850649*r+.1430804*n)/cI),a=W0((.0139322*t+.0971045*r+.7141733*n)/lI)),new ro(116*o-16,500*(i-o),200*(o-a),e.opacity)}function Ps(e,t,r,n){return arguments.length===1?dI(e):new ro(e,t,r,n??1)}function ro(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}Ko(ro,Ps,Ci(to,{brighter(e){return new ro(this.l+Yl*(e??1),this.a,this.b,this.opacity)},darker(e){return new ro(this.l-Yl*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=cI*X0(t),e=uI*X0(e),r=lI*X0(r),new Tt(Z0(3.1338561*t-1.6168667*e-.4906146*r),Z0(-.9787684*t+1.9161415*e+.033454*r),Z0(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));function W0(e){return e>a7?Math.pow(e,1/3):e/mI+pI}function X0(e){return e>As?e*e*e:mI*(e-pI)}function Z0(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function Q0(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function s7(e){if(e instanceof qo)return new qo(e.h,e.c,e.l,e.opacity);if(e instanceof ro||(e=dI(e)),e.a===0&&e.b===0)return new qo(NaN,0=1?(r=1,t-1):Math.floor(r*t),o=e[n],i=e[n+1],a=n>0?e[n-1]:2*o-i,s=n()=>e;function II(e,t){return function(r){return e+r*t}}function c7(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function Ns(e,t){var r=t-e;return r?II(e,r>180||r<-180?r-360*Math.round(r/360):r):ks(isNaN(e)?t:e)}function _I(e){return(e=+e)==1?nt:function(t,r){return r-t?c7(t,r,e):ks(isNaN(t)?r:t)}}function nt(e,t){var r=t-e;return r?II(e,r):ks(isNaN(e)?t:e)}var an=(function e(t){var r=_I(t);function n(o,i){var a=r((o=on(o)).r,(i=on(i)).r),s=r(o.g,i.g),f=r(o.b,i.b),u=nt(o.opacity,i.opacity);return function(c){return o.r=a(c),o.g=s(c),o.b=f(c),o.opacity=u(c),o+""}}return n.gamma=e,n})(1);function vI(e){return function(t){var r=t.length,n=new Array(r),o=new Array(r),i=new Array(r),a,s;for(a=0;ar&&(i=t.slice(r,i),s[a]?s[a]+=i:s[++a]=i),(n=n[0])===(o=o[0])?s[a]?s[a]+=o:s[++a]=o:(s[++a]=null,f.push({i:a,x:et(n,o)})),r=ny.lastIndex;return r180?c+=360:c-u>180&&(u+=360),l.push({i:m.push(o(m)+"rotate(",null,n)-2,x:et(u,c)})):c&&m.push(o(m)+"rotate("+c+n)}function s(u,c,m,l){u!==c?l.push({i:m.push(o(m)+"skewX(",null,n)-2,x:et(u,c)}):c&&m.push(o(m)+"skewX("+c+n)}function f(u,c,m,l,p,d){if(u!==m||c!==l){var y=p.push(o(p)+"scale(",null,",",null,")");d.push({i:y-4,x:et(u,m)},{i:y-2,x:et(c,l)})}else(m!==1||l!==1)&&p.push(o(p)+"scale("+m+","+l+")")}return function(u,c){var m=[],l=[];return u=e(u),c=e(c),i(u.translateX,u.translateY,c.translateX,c.translateY,m,l),a(u.rotate,c.rotate,m,l),s(u.skewX,c.skewX,m,l),f(u.scaleX,u.scaleY,c.scaleX,c.scaleY,m,l),u=c=null,function(p){for(var d=-1,y=l.length,x;++d=0&&e._call.call(void 0,t),e=e._next;--Es}function LI(){va=(ep=Ic.now())+tp,Es=wc=0;try{UI()}finally{Es=0,g7(),va=0}}function x7(){var e=Ic.now(),t=e-ep;t>DI&&(tp-=t,ep=e)}function g7(){for(var e,t=Jl,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:Jl=r);Sc=e,uy(n)}function uy(e){if(!Es){wc&&(wc=clearTimeout(wc));var t=e-va;t>24?(e<1/0&&(wc=setTimeout(LI,e-Ic.now()-tp)),bc&&(bc=clearInterval(bc))):(bc||(ep=Ic.now(),bc=setInterval(x7,DI)),Es=1,VI(LI))}}function np(e,t,r){var n=new _c;return t=t==null?0:+t,n.restart(o=>{n.stop(),e(o+t)},t,r),n}var b7=G0("start","end","cancel","interrupt"),w7=[],GI=0,jI=1,ip=2,op=3,BI=4,ap=5,Tc=6;function Pi(e,t,r,n,o,i){var a=e.__transition;if(!a)e.__transition={};else if(r in a)return;S7(e,r,{name:t,index:n,group:o,on:b7,tween:w7,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:GI})}function Mc(e,t){var r=Ot(e,t);if(r.state>GI)throw new Error("too late; already scheduled");return r}function Yt(e,t){var r=Ot(e,t);if(r.state>op)throw new Error("too late; already running");return r}function Ot(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function S7(e,t,r){var n=e.__transition,o;n[t]=r,r.timer=rp(i,0,r.time);function i(u){r.state=jI,r.timer.restart(a,r.delay,r.time),r.delay<=u&&a(u-r.delay)}function a(u){var c,m,l,p;if(r.state!==jI)return f();for(c in n)if(p=n[c],p.name===r.name){if(p.state===op)return np(a);p.state===BI?(p.state=Tc,p.timer.stop(),p.on.call("interrupt",e,e.__data__,p.index,p.group),delete n[c]):+cip&&n.state=0&&(t=t.slice(0,r)),!t||t==="start"})}function j7(e,t,r){var n,o,i=U7(t)?Mc:Yt;return function(){var a=i(this,e),s=a.on;s!==n&&(o=(n=s).copy()).on(t,r),a.on=o}}function e_(e,t){var r=this._id;return arguments.length<2?Ot(this.node(),r).on.on(e):this.each(j7(r,e,t))}function B7(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function t_(){return this.on("end.remove",B7(this._id))}function r_(e){var t=this._name,r=this._id;typeof e!="function"&&(e=ga(e));for(var n=this._groups,o=n.length,i=new Array(o),a=0;a=0))throw new Error(`invalid digits: ${e}`);if(t>15)return h_;let r=10**t;return function(n){this._+=n[0];for(let o=1,i=n.length;oTa)if(!(Math.abs(m*f-u*c)>Ta)||!i)this._append`L${this._x1=t},${this._y1=r}`;else{let p=n-a,d=o-s,y=f*f+u*u,x=p*p+d*d,w=Math.sqrt(y),g=Math.sqrt(l),S=i*Math.tan((py-Math.acos((y+l-x)/(2*w*g)))/2),b=S/g,T=S/w;Math.abs(b-1)>Ta&&this._append`L${t+b*c},${r+b*m}`,this._append`A${i},${i},0,0,${+(m*p>c*d)},${this._x1=t+T*f},${this._y1=r+T*u}`}}arc(t,r,n,o,i,a){if(t=+t,r=+r,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(o),f=n*Math.sin(o),u=t+s,c=r+f,m=1^a,l=a?o-i:i-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>Ta||Math.abs(this._y1-c)>Ta)&&this._append`L${u},${c}`,n&&(l<0&&(l=l%my+my),l>oP?this._append`A${n},${n},0,1,${m},${t-s},${r-f}A${n},${n},0,1,${m},${this._x1=u},${this._y1=c}`:l>Ta&&this._append`A${n},${n},0,${+(l>=py)},${m},${this._x1=t+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}};function y_(){return new ki}y_.prototype=ki.prototype;function En(e=3){return new ki(+e)}function x_(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Ma(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function oo(e){return e=Ma(Math.abs(e)),e?e[1]:NaN}function g_(e,t){return function(r,n){for(var o=r.length,i=[],a=0,s=e[0],f=0;o>0&&s>0&&(f+s+1>n&&(s=Math.max(1,n-f)),i.push(r.substring(o-=s,o+s)),!((f+=s+1)>n));)s=e[a=(a+1)%e.length];return i.reverse().join(t)}}function b_(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var aP=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function io(e){if(!(t=aP.exec(e)))throw new Error("invalid format: "+e);var t;return new lp({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}io.prototype=lp.prototype;function lp(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}lp.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function w_(e){e:for(var t=e.length,r=1,n=-1,o;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var Oc;function S_(e,t){var r=Ma(e,t);if(!r)return Oc=void 0,e.toPrecision(t);var n=r[0],o=r[1],i=o-(Oc=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,a=n.length;return i===a?n:i>a?n+new Array(i-a+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+Ma(e,Math.max(0,t+i-1))[0]}function dy(e,t){var r=Ma(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}var hy={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:x_,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>dy(e*100,t),r:dy,s:S_,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function yy(e){return e}var I_=Array.prototype.map,__=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function v_(e){var t=e.grouping===void 0||e.thousands===void 0?yy:g_(I_.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?yy:b_(I_.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",f=e.nan===void 0?"NaN":e.nan+"";function u(m,l){m=io(m);var p=m.fill,d=m.align,y=m.sign,x=m.symbol,w=m.zero,g=m.width,S=m.comma,b=m.precision,T=m.trim,I=m.type;I==="n"?(S=!0,I="g"):hy[I]||(b===void 0&&(b=12),T=!0,I="g"),(w||p==="0"&&d==="=")&&(w=!0,p="0",d="=");var v=(l&&l.prefix!==void 0?l.prefix:"")+(x==="$"?r:x==="#"&&/[boxX]/.test(I)?"0"+I.toLowerCase():""),O=(x==="$"?n:/[%p]/.test(I)?a:"")+(l&&l.suffix!==void 0?l.suffix:""),C=hy[I],E=/[defgprs%]/.test(I);b=b===void 0?6:/[gprs]/.test(I)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function A(F){var H=v,j=O,M,U,D;if(I==="c")j=C(F)+j,F="";else{F=+F;var oe=F<0||1/F<0;if(F=isNaN(F)?f:C(Math.abs(F),b),T&&(F=w_(F)),oe&&+F==0&&y!=="+"&&(oe=!1),H=(oe?y==="("?y:s:y==="-"||y==="("?"":y)+H,j=(I==="s"&&!isNaN(F)&&Oc!==void 0?__[8+Oc/3]:"")+j+(oe&&y==="("?")":""),E){for(M=-1,U=F.length;++MD||D>57){j=(D===46?o+F.slice(M+1):F.slice(M))+j,F=F.slice(0,M);break}}}S&&!w&&(F=t(F,1/0));var V=H.length+F.length+j.length,K=V>1)+H+F+j+K.slice(V);break;default:F=K+H+F+j;break}return i(F)}return A.toString=function(){return m+""},A}function c(m,l){var p=Math.max(-8,Math.min(8,Math.floor(oo(l)/3)))*3,d=Math.pow(10,-p),y=u((m=io(m),m.type="f",m),{suffix:__[8+p/3]});return function(x){return y(d*x)}}return{format:u,formatPrefix:c}}var pp,sn,mp;xy({thousands:",",grouping:[3],currency:["$",""]});function xy(e){return pp=v_(e),sn=pp.format,mp=pp.formatPrefix,pp}function gy(e){return Math.max(0,-oo(Math.abs(e)))}function by(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(oo(t)/3)))*3-oo(Math.abs(e)))}function wy(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,oo(t)-oo(e))+1}var ne=1e-6,dp=1e-12,ue=Math.PI,Ue=ue/2,Sy=ue/4,Ft=ue*2,Rt=180/ue,je=ue/180,de=Math.abs,fn=Math.atan,Wt=Math.atan2,te=Math.cos;var hp=Math.exp;var Oa=Math.log,yp=Math.pow,ee=Math.sin,ar=Math.sign||function(e){return e>0?1:e<0?-1:0},Ye=Math.sqrt,Ls=Math.tan;function xp(e){return e>1?0:e<-1?ue:Math.acos(e)}function mt(e){return e>1?Ue:e<-1?-Ue:Math.asin(e)}function Et(){}function gp(e,t){e&&M_.hasOwnProperty(e.type)&&M_[e.type](e,t)}var T_={Feature:function(e,t){gp(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,n=-1,o=r.length;++nue&&(e-=Math.round(e/Ft)*Ft),[e,t]}_y.invert=_y;function vy(e,t,r){return(e%=Ft)?t||r?kc(C_(e),A_(t,r)):C_(e):t||r?A_(t,r):_y}function R_(e){return function(t,r){return t+=e,de(t)>ue&&(t-=Math.round(t/Ft)*Ft),[t,r]}}function C_(e){var t=R_(e);return t.invert=R_(-e),t}function A_(e,t){var r=te(e),n=ee(e),o=te(t),i=ee(t);function a(s,f){var u=te(f),c=te(s)*u,m=ee(s)*u,l=ee(f),p=l*r+c*n;return[Wt(m*o-p*i,c*r-l*n),mt(p*o+m*i)]}return a.invert=function(s,f){var u=te(f),c=te(s)*u,m=ee(s)*u,l=ee(f),p=l*o-m*i;return[Wt(m*o+l*i,c*r+p*n),mt(p*r-c*n)]},a}function P_(e){e=vy(e[0]*je,e[1]*je,e.length>2?e[2]*je:0);function t(r){return r=e(r[0]*je,r[1]*je),r[0]*=Rt,r[1]*=Rt,r}return t.invert=function(r){return r=e.invert(r[0]*je,r[1]*je),r[0]*=Rt,r[1]*=Rt,r},t}function N_(e,t,r,n,o,i){if(r){var a=te(t),s=ee(t),f=n*r;o==null?(o=t+n*Ft,i=t-f/2):(o=k_(a,o),i=k_(a,i),(n>0?oi)&&(o+=n*Ft));for(var u,c=o;n>0?c>i:c1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function Vs(e,t){return de(e[0]-t[0])=0;--s)o.point((m=c[s])[0],m[1]);else n(l.x,l.p.x,-1,o);l=l.p}l=l.o,c=l.z,p=!p}while(!l.v);o.lineEnd()}}}function F_(e){if(t=e.length){for(var t,r=0,n=e[0],o;++r=0?1:-1,E=C*O,A=E>ue,F=x*I;if(f.add(Wt(F*C*ee(E),w*v+F*te(E))),a+=A?O+C*Ft:O,A^d>=r^b>=r){var H=Ds(ao(p),ao(S));Pc(H);var j=Ds(i,H);Pc(j);var M=(A^O>=0?-1:1)*mt(j[2]);(n>M||n===M&&(H[0]||H[1]))&&(s+=A^O>=0?1:-1)}}return(a<-ne||a0){for(f||(o.polygonStart(),f=!0),o.lineStart(),I=0;I1&&b&2&&T.push(T.pop().concat(T.shift())),c.push(T.filter(sP))}}return l}}function sP(e){return e.length>1}function fP(e,t){return((e=e.x)[0]<0?e[1]-Ue-ne:Ue-e[1])-((t=t.x)[0]<0?t[1]-Ue-ne:Ue-t[1])}var My=_p(function(){return!0},cP,lP,[-ue,-Ue]);function cP(e){var t=NaN,r=NaN,n=NaN,o;return{lineStart:function(){e.lineStart(),o=1},point:function(i,a){var s=i>0?ue:-ue,f=de(i-t);de(f-ue)0?Ue:-Ue),e.point(n,r),e.lineEnd(),e.lineStart(),e.point(s,r),e.point(i,r),o=0):n!==s&&f>=ue&&(de(t-n)ne?fn((ee(t)*(i=te(n))*ee(r)-ee(n)*(o=te(t))*ee(e))/(o*i*a)):(t+n)/2}function lP(e,t,r,n){var o;if(e==null)o=r*Ue,n.point(-ue,o),n.point(0,o),n.point(ue,o),n.point(ue,0),n.point(ue,-o),n.point(0,-o),n.point(-ue,-o),n.point(-ue,0),n.point(-ue,o);else if(de(e[0]-t[0])>ne){var i=e[0]0,o=de(t)>ne;function i(c,m,l,p){N_(p,e,r,l,c,m)}function a(c,m){return te(c)*te(m)>t}function s(c){var m,l,p,d,y;return{lineStart:function(){d=p=!1,y=1},point:function(x,w){var g=[x,w],S,b=a(x,w),T=n?b?0:u(x,w):b?u(x+(x<0?ue:-ue),w):0;if(!m&&(d=p=b)&&c.lineStart(),b!==p&&(S=f(m,g),(!S||Vs(m,S)||Vs(g,S))&&(g[2]=1)),b!==p)y=0,b?(c.lineStart(),S=f(g,m),c.point(S[0],S[1])):(S=f(m,g),c.point(S[0],S[1],2),c.lineEnd()),m=S;else if(o&&m&&n^b){var I;!(T&l)&&(I=f(g,m,!0))&&(y=0,n?(c.lineStart(),c.point(I[0][0],I[0][1]),c.point(I[1][0],I[1][1]),c.lineEnd()):(c.point(I[1][0],I[1][1]),c.lineEnd(),c.lineStart(),c.point(I[0][0],I[0][1],3)))}b&&(!m||!Vs(m,g))&&c.point(g[0],g[1]),m=g,p=b,l=T},lineEnd:function(){p&&c.lineEnd(),m=null},clean:function(){return y|(d&&p)<<1}}}function f(c,m,l){var p=ao(c),d=ao(m),y=[1,0,0],x=Ds(p,d),w=Cc(x,x),g=x[0],S=w-g*g;if(!S)return!l&&c;var b=t*w/S,T=-t*g/S,I=Ds(y,x),v=Ac(y,b),O=Ac(x,T);bp(v,O);var C=I,E=Cc(v,C),A=Cc(C,C),F=E*E-A*(Cc(v,v)-1);if(!(F<0)){var H=Ye(F),j=Ac(C,(-E-H)/A);if(bp(j,v),j=Rc(j),!l)return j;var M=c[0],U=m[0],D=c[1],oe=m[1],V;U0^j[1]<(de(j[0]-M)ue^(M<=j[0]&&j[0]<=U)){var J=Ac(C,(-E+H)/A);return bp(J,v),[j,Rc(J)]}}}function u(c,m){var l=n?e:ue-e,p=0;return c<-l?p|=1:c>l&&(p|=2),m<-l?p|=4:m>l&&(p|=8),p}return _p(a,s,i,n?[0,-e]:[-ue,e-ue])}function L_(e,t,r,n,o,i){var a=e[0],s=e[1],f=t[0],u=t[1],c=0,m=1,l=f-a,p=u-s,d;if(d=r-a,!(!l&&d>0)){if(d/=l,l<0){if(d0){if(d>m)return;d>c&&(c=d)}if(d=o-a,!(!l&&d<0)){if(d/=l,l<0){if(d>m)return;d>c&&(c=d)}else if(l>0){if(d0)){if(d/=p,p<0){if(d0){if(d>m)return;d>c&&(c=d)}if(d=i-s,!(!p&&d<0)){if(d/=p,p<0){if(d>m)return;d>c&&(c=d)}else if(p>0){if(d0&&(e[0]=a+c*l,e[1]=s+c*p),m<1&&(t[0]=a+m*l,t[1]=s+m*p),!0}}}}}var Nc=1e9,vp=-Nc;function Us(e,t,r,n){function o(u,c){return e<=u&&u<=r&&t<=c&&c<=n}function i(u,c,m,l){var p=0,d=0;if(u==null||(p=a(u,m))!==(d=a(c,m))||f(u,c)<0^m>0)do l.point(p===0||p===3?e:r,p>1?n:t);while((p=(p+m+4)%4)!==d);else l.point(c[0],c[1])}function a(u,c){return de(u[0]-e)0?0:3:de(u[0]-r)0?2:1:de(u[1]-t)0?1:0:c>0?3:2}function s(u,c){return f(u.x,c.x)}function f(u,c){var m=a(u,1),l=a(c,1);return m!==l?m-l:m===0?c[1]-u[1]:m===1?u[0]-c[0]:m===2?u[1]-c[1]:c[0]-u[0]}return function(u){var c=u,m=wp(),l,p,d,y,x,w,g,S,b,T,I,v={point:O,lineStart:F,lineEnd:H,polygonStart:E,polygonEnd:A};function O(M,U){o(M,U)&&c.point(M,U)}function C(){for(var M=0,U=0,D=p.length;Un&&(ye-Z)*(n-J)>(B-J)*(e-Z)&&++M:B<=n&&(ye-Z)*(n-J)<(B-J)*(e-Z)&&--M;return M}function E(){c=m,l=[],p=[],I=!0}function A(){var M=C(),U=I&&M,D=(l=Rs(l)).length;(U||D)&&(u.polygonStart(),U&&(u.lineStart(),i(null,null,1,u),u.lineEnd()),D&&Ip(l,s,M,i,u),u.polygonEnd()),c=u,l=p=d=null}function F(){v.point=j,p&&p.push(d=[]),T=!0,b=!1,g=S=NaN}function H(){l&&(j(y,x),w&&b&&m.rejoin(),l.push(m.result())),v.point=O,b&&c.lineEnd()}function j(M,U){var D=o(M,U);if(p&&d.push([M,U]),T)y=M,x=U,w=D,T=!1,D&&(c.lineStart(),c.point(M,U));else if(D&&b)c.point(M,U);else{var oe=[g=Math.max(vp,Math.min(Nc,g)),S=Math.max(vp,Math.min(Nc,S))],V=[M=Math.max(vp,Math.min(Nc,M)),U=Math.max(vp,Math.min(Nc,U))];L_(oe,V,e,t,r,n)?(b||(c.lineStart(),c.point(oe[0],oe[1])),c.point(V[0],V[1]),D||c.lineEnd(),I=!1):D&&(c.lineStart(),c.point(M,U),I=!1)}g=M,S=U,b=D}return v}}var Fc=e=>e;var Oy=new Ur,Ry=new Ur,D_,V_,Cy,Ay,Ni={point:Et,lineStart:Et,lineEnd:Et,polygonStart:function(){Ni.lineStart=pP,Ni.lineEnd=dP},polygonEnd:function(){Ni.lineStart=Ni.lineEnd=Ni.point=Et,Oy.add(de(Ry)),Ry=new Ur},result:function(){var e=Oy/2;return Oy=new Ur,e}};function pP(){Ni.point=mP}function mP(e,t){Ni.point=U_,D_=Cy=e,V_=Ay=t}function U_(e,t){Ry.add(Ay*e-Cy*t),Cy=e,Ay=t}function dP(){U_(D_,V_)}var Py=Ni;var js=1/0,Tp=js,Ec=-js,Mp=Ec,hP={point:yP,lineStart:Et,lineEnd:Et,polygonStart:Et,polygonEnd:Et,result:function(){var e=[[js,Tp],[Ec,Mp]];return Ec=Mp=-(Tp=js=1/0),e}};function yP(e,t){eEc&&(Ec=e),tMp&&(Mp=t)}var Bs=hP;var ky=0,Ny=0,$c=0,Op=0,Rp=0,Gs=0,Fy=0,Ey=0,Lc=0,G_,z_,so,fo,Ln={point:Ra,lineStart:j_,lineEnd:B_,polygonStart:function(){Ln.lineStart=bP,Ln.lineEnd=wP},polygonEnd:function(){Ln.point=Ra,Ln.lineStart=j_,Ln.lineEnd=B_},result:function(){var e=Lc?[Fy/Lc,Ey/Lc]:Gs?[Op/Gs,Rp/Gs]:$c?[ky/$c,Ny/$c]:[NaN,NaN];return ky=Ny=$c=Op=Rp=Gs=Fy=Ey=Lc=0,e}};function Ra(e,t){ky+=e,Ny+=t,++$c}function j_(){Ln.point=xP}function xP(e,t){Ln.point=gP,Ra(so=e,fo=t)}function gP(e,t){var r=e-so,n=t-fo,o=Ye(r*r+n*n);Op+=o*(so+e)/2,Rp+=o*(fo+t)/2,Gs+=o,Ra(so=e,fo=t)}function B_(){Ln.point=Ra}function bP(){Ln.point=SP}function wP(){K_(G_,z_)}function SP(e,t){Ln.point=K_,Ra(G_=so=e,z_=fo=t)}function K_(e,t){var r=e-so,n=t-fo,o=Ye(r*r+n*n);Op+=o*(so+e)/2,Rp+=o*(fo+t)/2,Gs+=o,o=fo*e-so*t,Fy+=o*(so+e),Ey+=o*(fo+t),Lc+=o*3,Ra(so=e,fo=t)}var $y=Ln;function Cp(e){this._context=e}Cp.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:{this._context.moveTo(e,t),this._point=1;break}case 1:{this._context.lineTo(e,t);break}default:{this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,Ft);break}}},result:Et};var Dy=new Ur,Ly,q_,H_,Dc,Vc,Ap={point:Et,lineStart:function(){Ap.point=IP},lineEnd:function(){Ly&&Y_(q_,H_),Ap.point=Et},polygonStart:function(){Ly=!0},polygonEnd:function(){Ly=null},result:function(){var e=+Dy;return Dy=new Ur,e}};function IP(e,t){Ap.point=Y_,q_=Dc=e,H_=Vc=t}function Y_(e,t){Dc-=e,Vc-=t,Dy.add(Ye(Dc*Dc+Vc*Vc)),Dc=e,Vc=t}var Vy=Ap;var W_,Pp,X_,Z_,zs=class{constructor(t){this._append=t==null?Q_:_P(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,r){switch(this._point){case 0:{this._append`M${t},${r}`,this._point=1;break}case 1:{this._append`L${t},${r}`;break}default:{if(this._append`M${t},${r}`,this._radius!==X_||this._append!==Pp){let n=this._radius,o=this._;this._="",this._append`m0,${n}a${n},${n} 0 1,1 0,${-2*n}a${n},${n} 0 1,1 0,${2*n}z`,X_=n,Pp=this._append,Z_=this._,this._=o}this._+=Z_;break}}}result(){let t=this._;return this._="",t.length?t:null}};function Q_(e){let t=1;this._+=e[0];for(let r=e.length;t=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return Q_;if(t!==W_){let r=10**t;W_=t,Pp=function(o){let i=1;this._+=o[0];for(let a=o.length;i=0))throw new RangeError(`invalid digits: ${s}`);r=f}return t===null&&(i=new zs(r)),a},a.projection(e).digits(r).context(t)}function qs(e){return{stream:Hs(e)}}function Hs(e){return function(t){var r=new Uy;for(var n in e)r[n]=e[n];return r.stream=t,r}}function Uy(){}Uy.prototype={constructor:Uy,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function jy(e,t,r){var n=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),n!=null&&e.clipExtent(null),$n(r,e.stream(Bs)),t(Bs.result()),n!=null&&e.clipExtent(n),e}function Uc(e,t,r){return jy(e,function(n){var o=t[1][0]-t[0][0],i=t[1][1]-t[0][1],a=Math.min(o/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),s=+t[0][0]+(o-a*(n[1][0]+n[0][0]))/2,f=+t[0][1]+(i-a*(n[1][1]+n[0][1]))/2;e.scale(150*a).translate([s,f])},r)}function kp(e,t,r){return Uc(e,[[0,0],t],r)}function Np(e,t,r){return jy(e,function(n){var o=+t,i=o/(n[1][0]-n[0][0]),a=(o-i*(n[1][0]+n[0][0]))/2,s=-i*n[0][1];e.scale(150*i).translate([a,s])},r)}function Fp(e,t,r){return jy(e,function(n){var o=+t,i=o/(n[1][1]-n[0][1]),a=-i*n[0][0],s=(o-i*(n[1][1]+n[0][1]))/2;e.scale(150*i).translate([a,s])},r)}var J_=16,vP=te(30*je);function By(e,t){return+t?MP(e,t):TP(e)}function TP(e){return Hs({point:function(t,r){t=e(t,r),this.stream.point(t[0],t[1])}})}function MP(e,t){function r(n,o,i,a,s,f,u,c,m,l,p,d,y,x){var w=u-n,g=c-o,S=w*w+g*g;if(S>4*t&&y--){var b=a+l,T=s+p,I=f+d,v=Ye(b*b+T*T+I*I),O=mt(I/=v),C=de(de(I)-1)t||de((w*H+g*j)/S-.5)>.3||a*l+s*p+f*d2?M[2]%360*je:0,H()):[s*Rt,f*Rt,u*Rt]},A.angle=function(M){return arguments.length?(m=M%360*je,H()):m*Rt},A.reflectX=function(M){return arguments.length?(l=M?-1:1,H()):l<0},A.reflectY=function(M){return arguments.length?(p=M?-1:1,H()):p<0},A.precision=function(M){return arguments.length?(I=By(v,T=M*M),j()):Ye(T)},A.fitExtent=function(M,U){return Uc(A,M,U)},A.fitSize=function(M,U){return kp(A,M,U)},A.fitWidth=function(M,U){return Np(A,M,U)},A.fitHeight=function(M,U){return Fp(A,M,U)};function H(){var M=ev(r,0,0,l,p,m).apply(null,t(i,a)),U=ev(r,n-M[0],o-M[1],l,p,m);return c=vy(s,f,u),v=kc(t,U),O=kc(c,v),I=By(v,T),j()}function j(){return C=E=null,A}return function(){return t=e.apply(this,arguments),A.invert=t.invert&&F,H()}}function Ys(e){var t=0,r=ue/3,n=Gy(e),o=n(t,r);return o.parallels=function(i){return arguments.length?n(t=i[0]*je,r=i[1]*je):[t*Rt,r*Rt]},o}function tv(e){var t=te(e);function r(n,o){return[n*t,ee(o)/t]}return r.invert=function(n,o){return[n/t,mt(o*t)]},r}function rv(e,t){var r=ee(e),n=(r+ee(t))/2;if(de(n)=.12&&x<.234&&y>=-.425&&y<-.214?o:x>=.166&&x<.234&&y>=-.214&&y<-.115?a:r).invert(l)},c.stream=function(l){return e&&t===l?e:e=AP([r.stream(t=l),o.stream(l),a.stream(l)])},c.precision=function(l){return arguments.length?(r.precision(l),o.precision(l),a.precision(l),m()):r.precision()},c.scale=function(l){return arguments.length?(r.scale(l),o.scale(l*.35),a.scale(l),c.translate(r.translate())):r.scale()},c.translate=function(l){if(!arguments.length)return r.translate();var p=r.scale(),d=+l[0],y=+l[1];return n=r.translate(l).clipExtent([[d-.455*p,y-.238*p],[d+.455*p,y+.238*p]]).stream(u),i=o.translate([d-.307*p,y+.201*p]).clipExtent([[d-.425*p+ne,y+.12*p+ne],[d-.214*p-ne,y+.234*p-ne]]).stream(u),s=a.translate([d-.205*p,y+.212*p]).clipExtent([[d-.214*p+ne,y+.166*p+ne],[d-.115*p-ne,y+.234*p-ne]]).stream(u),m()},c.fitExtent=function(l,p){return Uc(c,l,p)},c.fitSize=function(l,p){return kp(c,l,p)},c.fitWidth=function(l,p){return Np(c,l,p)},c.fitHeight=function(l,p){return Fp(c,l,p)};function m(){return e=t=null,c}return c.scale(1070)}function Ep(e){return function(t,r){var n=te(t),o=te(r),i=e(n*o);return i===1/0?[2,0]:[i*o*ee(t),i*ee(r)]}}function co(e){return function(t,r){var n=Ye(t*t+r*r),o=e(n),i=ee(o),a=te(o);return[Wt(t*i,n*a),mt(n&&r*i/n)]}}var Ky=Ep(function(e){return Ye(2/(1+e))});Ky.invert=co(function(e){return 2*mt(e/2)});function qy(){return Xt(Ky).scale(124.75).clipAngle(180-.001)}var Hy=Ep(function(e){return(e=xp(e))&&e/ee(e)});Hy.invert=co(function(e){return e});function Yy(){return Xt(Hy).scale(79.4188).clipAngle(180-.001)}function Ws(e,t){return[e,Oa(Ls((Ue+t)/2))]}Ws.invert=function(e,t){return[e,2*fn(hp(t))-Ue]};function Wy(){return Xy(Ws).scale(961/Ft)}function Xy(e){var t=Xt(e),r=t.center,n=t.scale,o=t.translate,i=t.clipExtent,a=null,s,f,u;t.scale=function(m){return arguments.length?(n(m),c()):n()},t.translate=function(m){return arguments.length?(o(m),c()):o()},t.center=function(m){return arguments.length?(r(m),c()):r()},t.clipExtent=function(m){return arguments.length?(m==null?a=s=f=u=null:(a=+m[0][0],s=+m[0][1],f=+m[1][0],u=+m[1][1]),c()):a==null?null:[[a,s],[f,u]]};function c(){var m=ue*n(),l=t(P_(t.rotate()).invert([0,0]));return i(a==null?[[l[0]-m,l[1]-m],[l[0]+m,l[1]+m]]:e===Ws?[[Math.max(l[0]-m,a),s],[Math.min(l[0]+m,f),u]]:[[a,Math.max(l[1]-m,s)],[f,Math.min(l[1]+m,u)]])}return c()}function $p(e){return Ls((Ue+e)/2)}function nv(e,t){var r=te(e),n=e===t?ee(e):Oa(r/te(t))/Oa($p(t)/$p(e)),o=r*yp($p(e),n)/n;if(!n)return Ws;function i(a,s){o>0?s<-Ue+ne&&(s=-Ue+ne):s>Ue-ne&&(s=Ue-ne);var f=o/yp($p(s),n);return[f*ee(n*a),o-f*te(n*a)]}return i.invert=function(a,s){var f=o-s,u=ar(n)*Ye(a*a+f*f),c=Wt(a,de(f))*ar(f);return f*n<0&&(c-=ue*ar(a)*ar(f)),[c/n,2*fn(yp(o/u,1/n))-Ue]},i}function Zy(){return Ys(nv).scale(109.5).parallels([30,30])}function Xs(e,t){return[e,t]}Xs.invert=Xs;function Qy(){return Xt(Xs).scale(152.63)}function ov(e,t){var r=te(e),n=e===t?ee(e):(r-te(t))/(t-e),o=r/n+e;if(de(n)2?n[2]+90:90]):(n=r(),[n[0],n[1],n[2]-90])},r([0,0,90]).scale(159.155)}function Mt(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function qc(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}var Hc=Symbol("implicit");function Ca(){var e=new pr,t=[],r=[],n=Hc;function o(i){let a=e.get(i);if(a===void 0){if(n!==Hc)return n;e.set(i,a=t.push(i)-1)}return r[a%r.length]}return o.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new pr;for(let a of i)e.has(a)||e.set(a,t.push(a)-1);return o},o.range=function(i){return arguments.length?(r=Array.from(i),o):r.slice()},o.unknown=function(i){return arguments.length?(n=i,o):n},o.copy=function(){return Ca(t,r).unknown(n)},Mt.apply(o,arguments),o}function Ei(){var e=Ca().unknown(void 0),t=e.domain,r=e.range,n=0,o=1,i,a,s=!1,f=0,u=0,c=.5;delete e.unknown;function m(){var l=t().length,p=ot&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function NP(e,t,r){var n=e[0],o=e[1],i=t[0],a=t[1];return o2?FP:NP,f=u=null,m}function m(l){return l==null||isNaN(l=+l)?i:(f||(f=s(e.map(n),t,r)))(n(a(l)))}return m.invert=function(l){return a(o((u||(u=s(t,e.map(n),et)))(l)))},m.domain=function(l){return arguments.length?(e=Array.from(l,Zs),c()):e.slice()},m.range=function(l){return arguments.length?(t=Array.from(l),c()):t.slice()},m.rangeRound=function(l){return t=Array.from(l),r=_a,c()},m.clamp=function(l){return arguments.length?(a=l?!0:Mr,c()):a!==Mr},m.interpolate=function(l){return arguments.length?(r=l,c()):r},m.unknown=function(l){return arguments.length?(i=l,m):i},function(l,p){return n=l,o=p,c()}}function Yc(){return Aa()(Mr,Mr)}function mx(e,t,r,n){var o=Os(e,t,r),i;switch(n=io(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(i=by(o,a))&&(n.precision=i),mp(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=wy(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=gy(o))&&(n.precision=i-(n.type==="%")*2);break}}return sn(n)}function Yo(e){var t=e.domain;return e.ticks=function(r){var n=t();return Uo(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return mx(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,i=n.length-1,a=n[o],s=n[i],f,u,c=10;for(s0;){if(u=sc(a,s,r),u===f)return n[o]=a,n[i]=s,t(n);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;f=u}return e},e}function Pa(){var e=Yc();return e.copy=function(){return uo(e,Pa())},Mt.apply(e,arguments),Yo(e)}function Wc(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,Zs),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Wc(e).unknown(t)},e=arguments.length?Array.from(e,Zs):[0,1],Yo(r)}function Xc(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],i=e[n],a;return iMath.pow(e,t)}function VP(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function cv(e){return(t,r)=>-e(-t,r)}function dx(e){let t=e(sv,fv),r=t.domain,n=10,o,i;function a(){return o=VP(n),i=DP(n),r()[0]<0?(o=cv(o),i=cv(i),e(EP,$P)):e(sv,fv),t}return t.base=function(s){return arguments.length?(n=+s,a()):n},t.domain=function(s){return arguments.length?(r(s),a()):r()},t.ticks=s=>{let f=r(),u=f[0],c=f[f.length-1],m=c0){for(;l<=p;++l)for(d=1;dc)break;w.push(y)}}else for(;l<=p;++l)for(d=n-1;d>=1;--d)if(y=l>0?d/i(-l):d*i(l),!(yc)break;w.push(y)}w.length*2{if(s==null&&(s=10),f==null&&(f=n===10?"s":","),typeof f!="function"&&(!(n%1)&&(f=io(f)).precision==null&&(f.trim=!0),f=sn(f)),s===1/0)return f;let u=Math.max(1,n*s/t.ticks().length);return c=>{let m=c/i(Math.round(o(c)));return m*nr(Xc(r(),{floor:s=>i(Math.floor(o(s))),ceil:s=>i(Math.ceil(o(s)))})),t}function Zc(){let e=dx(Aa()).domain([1,10]);return e.copy=()=>uo(e,Zc()).base(e.base()),Mt.apply(e,arguments),e}function uv(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function lv(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function hx(e){var t=1,r=e(uv(t),lv(t));return r.constant=function(n){return arguments.length?e(uv(t=+n),lv(t)):t},Yo(r)}function Qc(){var e=hx(Aa());return e.copy=function(){return uo(e,Qc()).constant(e.constant())},Mt.apply(e,arguments)}function pv(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function UP(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function jP(e){return e<0?-e*e:e*e}function yx(e){var t=e(Mr,Mr),r=1;function n(){return r===1?e(Mr,Mr):r===.5?e(UP,jP):e(pv(r),pv(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},Yo(t)}function Jc(){var e=yx(Aa());return e.copy=function(){return uo(e,Jc()).exponent(e.exponent())},Mt.apply(e,arguments),e}function eu(){var e=[],t=[],r=[],n;function o(){var a=0,s=Math.max(1,t.length);for(r=new Array(s-1);++a0?r[s-1]:e[0],s(e(i=new Date(+i)),i),o.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),o.round=i=>{let a=o(i),s=o.ceil(i);return i-a(t(i=new Date(+i),a==null?1:Math.floor(a)),i),o.range=(i,a,s)=>{let f=[];if(i=o.ceil(i),s=s==null?1:Math.floor(s),!(i0))return f;let u;do f.push(u=new Date(+i)),t(i,s),e(i);while(uqe(a=>{if(a>=a)for(;e(a),!i(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;t(a,-1),!i(a););else for(;--s>=0;)for(;t(a,1),!i(a););}),r&&(o.count=(i,a)=>(xx.setTime(+i),gx.setTime(+a),e(xx),e(gx),Math.floor(r(xx,gx))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?a=>n(a)%i===0:a=>o.count(0,a)%i===0):o)),o}var ru=qe(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ru.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?qe(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):ru);var ble=ru.range;var $t=qe(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),mv=$t.range;var Wo=qe(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),BP=Wo.range,Xo=qe(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),GP=Xo.range;var Zo=qe(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),zP=Zo.range,Qo=qe(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),KP=Qo.range;var cn=qe(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),qP=cn.range,Fa=qe(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),HP=Fa.range,Ea=qe(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),YP=Ea.range;function $a(e){return qe(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var jr=$a(0),$i=$a(1),Dp=$a(2),Vp=$a(3),po=$a(4),Up=$a(5),jp=$a(6),hv=jr.range,WP=$i.range,XP=Dp.range,ZP=Vp.range,QP=po.range,JP=Up.range,ek=jp.range;function La(e){return qe(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var Br=La(0),Li=La(1),Bp=La(2),Gp=La(3),mo=La(4),zp=La(5),Kp=La(6),yv=Br.range,tk=Li.range,rk=Bp.range,nk=Gp.range,ok=mo.range,ik=zp.range,ak=Kp.range;var Jo=qe(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),sk=Jo.range,ei=qe(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),fk=ei.range;var sr=qe(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());sr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qe(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var ck=sr.range,fr=qe(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());fr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qe(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var uk=fr.range;function gv(e,t,r,n,o,i){let a=[[$t,1,1e3],[$t,5,5*1e3],[$t,15,15*1e3],[$t,30,30*1e3],[i,1,6e4],[i,5,5*6e4],[i,15,15*6e4],[i,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(u,c,m){let l=cx).right(a,l);if(p===a.length)return e.every(Os(u/31536e6,c/31536e6,m));if(p===0)return ru.every(Math.max(Os(u,c,m),1));let[d,y]=a[l/a[p-1][2]53)return null;"w"in $||($.w=1),"Z"in $?(G=vx(ou($.y,0,1)),ae=G.getUTCDay(),G=ae>4||ae===0?Li.ceil(G):Li(G),G=Fa.offset(G,($.V-1)*7),$.y=G.getUTCFullYear(),$.m=G.getUTCMonth(),$.d=G.getUTCDate()+($.w+6)%7):(G=_x(ou($.y,0,1)),ae=G.getDay(),G=ae>4||ae===0?$i.ceil(G):$i(G),G=cn.offset(G,($.V-1)*7),$.y=G.getFullYear(),$.m=G.getMonth(),$.d=G.getDate()+($.w+6)%7)}else("W"in $||"U"in $)&&("w"in $||($.w="u"in $?$.u%7:"W"in $?1:0),ae="Z"in $?vx(ou($.y,0,1)).getUTCDay():_x(ou($.y,0,1)).getDay(),$.m=0,$.d="W"in $?($.w+6)%7+$.W*7-(ae+5)%7:$.w+$.U*7-(ae+6)%7);return"Z"in $?($.H+=$.Z/100|0,$.M+=$.Z%100,vx($)):_x($)}}function O(L,Q,re,$){for(var ke=0,G=Q.length,ae=re.length,xe,Ge;ke=ae)return-1;if(xe=Q.charCodeAt(ke++),xe===37){if(xe=Q.charAt(ke++),Ge=T[xe in bv?Q.charAt(ke++):xe],!Ge||($=Ge(L,re,$))<0)return-1}else if(xe!=re.charCodeAt($++))return-1}return $}function C(L,Q,re){var $=u.exec(Q.slice(re));return $?(L.p=c.get($[0].toLowerCase()),re+$[0].length):-1}function E(L,Q,re){var $=p.exec(Q.slice(re));return $?(L.w=d.get($[0].toLowerCase()),re+$[0].length):-1}function A(L,Q,re){var $=m.exec(Q.slice(re));return $?(L.w=l.get($[0].toLowerCase()),re+$[0].length):-1}function F(L,Q,re){var $=w.exec(Q.slice(re));return $?(L.m=g.get($[0].toLowerCase()),re+$[0].length):-1}function H(L,Q,re){var $=y.exec(Q.slice(re));return $?(L.m=x.get($[0].toLowerCase()),re+$[0].length):-1}function j(L,Q,re){return O(L,t,Q,re)}function M(L,Q,re){return O(L,r,Q,re)}function U(L,Q,re){return O(L,n,Q,re)}function D(L){return a[L.getDay()]}function oe(L){return i[L.getDay()]}function V(L){return f[L.getMonth()]}function K(L){return s[L.getMonth()]}function Y(L){return o[+(L.getHours()>=12)]}function Z(L){return 1+~~(L.getMonth()/3)}function J(L){return a[L.getUTCDay()]}function ye(L){return i[L.getUTCDay()]}function B(L){return f[L.getUTCMonth()]}function W(L){return s[L.getUTCMonth()]}function X(L){return o[+(L.getUTCHours()>=12)]}function le(L){return 1+~~(L.getUTCMonth()/3)}return{format:function(L){var Q=I(L+="",S);return Q.toString=function(){return L},Q},parse:function(L){var Q=v(L+="",!1);return Q.toString=function(){return L},Q},utcFormat:function(L){var Q=I(L+="",b);return Q.toString=function(){return L},Q},utcParse:function(L){var Q=v(L+="",!0);return Q.toString=function(){return L},Q}}}var bv={"-":"",_:" ",0:"0"},Lt=/^\s*\d+/,pk=/^%/,mk=/[\\^$*+?|[\]().{}]/g;function Ne(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",i=o.length;return n+(i[t.toLowerCase(),r]))}function hk(e,t,r){var n=Lt.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function yk(e,t,r){var n=Lt.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function xk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function gk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function bk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function wv(e,t,r){var n=Lt.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function Sv(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function wk(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function Sk(e,t,r){var n=Lt.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Ik(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function Iv(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function _k(e,t,r){var n=Lt.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function _v(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function vk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Tk(e,t,r){var n=Lt.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Mk(e,t,r){var n=Lt.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Ok(e,t,r){var n=Lt.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Rk(e,t,r){var n=pk.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Ck(e,t,r){var n=Lt.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Ak(e,t,r){var n=Lt.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function vv(e,t){return Ne(e.getDate(),t,2)}function Pk(e,t){return Ne(e.getHours(),t,2)}function kk(e,t){return Ne(e.getHours()%12||12,t,2)}function Nk(e,t){return Ne(1+cn.count(sr(e),e),t,3)}function Cv(e,t){return Ne(e.getMilliseconds(),t,3)}function Fk(e,t){return Cv(e,t)+"000"}function Ek(e,t){return Ne(e.getMonth()+1,t,2)}function $k(e,t){return Ne(e.getMinutes(),t,2)}function Lk(e,t){return Ne(e.getSeconds(),t,2)}function Dk(e){var t=e.getDay();return t===0?7:t}function Vk(e,t){return Ne(jr.count(sr(e)-1,e),t,2)}function Av(e){var t=e.getDay();return t>=4||t===0?po(e):po.ceil(e)}function Uk(e,t){return e=Av(e),Ne(po.count(sr(e),e)+(sr(e).getDay()===4),t,2)}function jk(e){return e.getDay()}function Bk(e,t){return Ne($i.count(sr(e)-1,e),t,2)}function Gk(e,t){return Ne(e.getFullYear()%100,t,2)}function zk(e,t){return e=Av(e),Ne(e.getFullYear()%100,t,2)}function Kk(e,t){return Ne(e.getFullYear()%1e4,t,4)}function qk(e,t){var r=e.getDay();return e=r>=4||r===0?po(e):po.ceil(e),Ne(e.getFullYear()%1e4,t,4)}function Hk(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Ne(t/60|0,"0",2)+Ne(t%60,"0",2)}function Tv(e,t){return Ne(e.getUTCDate(),t,2)}function Yk(e,t){return Ne(e.getUTCHours(),t,2)}function Wk(e,t){return Ne(e.getUTCHours()%12||12,t,2)}function Xk(e,t){return Ne(1+Fa.count(fr(e),e),t,3)}function Pv(e,t){return Ne(e.getUTCMilliseconds(),t,3)}function Zk(e,t){return Pv(e,t)+"000"}function Qk(e,t){return Ne(e.getUTCMonth()+1,t,2)}function Jk(e,t){return Ne(e.getUTCMinutes(),t,2)}function e9(e,t){return Ne(e.getUTCSeconds(),t,2)}function t9(e){var t=e.getUTCDay();return t===0?7:t}function r9(e,t){return Ne(Br.count(fr(e)-1,e),t,2)}function kv(e){var t=e.getUTCDay();return t>=4||t===0?mo(e):mo.ceil(e)}function n9(e,t){return e=kv(e),Ne(mo.count(fr(e),e)+(fr(e).getUTCDay()===4),t,2)}function o9(e){return e.getUTCDay()}function i9(e,t){return Ne(Li.count(fr(e)-1,e),t,2)}function a9(e,t){return Ne(e.getUTCFullYear()%100,t,2)}function s9(e,t){return e=kv(e),Ne(e.getUTCFullYear()%100,t,2)}function f9(e,t){return Ne(e.getUTCFullYear()%1e4,t,4)}function c9(e,t){var r=e.getUTCDay();return e=r>=4||r===0?mo(e):mo.ceil(e),Ne(e.getUTCFullYear()%1e4,t,4)}function u9(){return"+0000"}function Mv(){return"%"}function Ov(e){return+e}function Rv(e){return Math.floor(+e/1e3)}var Qs,Js,Nv,ho,Fv;Mx({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function Mx(e){return Qs=Tx(e),Js=Qs.format,Nv=Qs.parse,ho=Qs.utcFormat,Fv=Qs.utcParse,Qs}function l9(e){return new Date(e)}function p9(e){return e instanceof Date?+e:+new Date(+e)}function qp(e,t,r,n,o,i,a,s,f,u){var c=Yc(),m=c.invert,l=c.domain,p=u(".%L"),d=u(":%S"),y=u("%I:%M"),x=u("%I %p"),w=u("%a %d"),g=u("%b %d"),S=u("%B"),b=u("%Y");function T(I){return(f(I)ry(e[e.length-1]);var Jp=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(z),em=ie(Jp);var tm=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(z),rm=ie(tm);var nm=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(z),om=ie(nm);var im=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(z),am=ie(im);var cu=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(z),ef=ie(cu);var sm=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(z),fm=ie(sm);var uu=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(z),tf=ie(uu);var cm=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(z),um=ie(cm);var lm=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(z),pm=ie(lm);var mm=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(z),dm=ie(mm);var hm=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(z),ym=ie(hm);var xm=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(z),gm=ie(xm);var bm=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(z),wm=ie(bm);var Sm=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(z),Im=ie(Sm);var _m=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(z),vm=ie(_m);var Tm=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(z),Mm=ie(Tm);var Om=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(z),Rm=ie(Om);var Cm=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(z),Am=ie(Cm);var Pm=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(z),km=ie(Pm);var Nm=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(z),Fm=ie(Nm);var Em=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(z),$m=ie(Em);var Lm=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(z),Dm=ie(Lm);var Vm=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(z),Um=ie(Vm);var jm=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(z),Bm=ie(jm);var Gm=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(z),zm=ie(Gm);var Km=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(z),qm=ie(Km);var Hm=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(z),Ym=ie(Hm);function Wm(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-e*2710.57)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-e*67.37)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-e*2475.67)))))))+")"}var Xm=Fs(dr(300,.5,0),dr(-240,.5,1));var Qm=Fs(dr(-100,.75,.35),dr(80,1.5,.8)),Jm=Fs(dr(260,.75,.35),dr(80,1.5,.8)),Zm=dr();function ed(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return Zm.h=360*e-100,Zm.s=1.5-1.5*t,Zm.l=.8-.9*t,Zm+""}var td=on(),m9=Math.PI/3,d9=Math.PI*2/3;function rd(e){var t;return e=(.5-e)*Math.PI,td.r=255*(t=Math.sin(e))*t,td.g=255*(t=Math.sin(e+m9))*t,td.b=255*(t=Math.sin(e+d9))*t,td+""}function nd(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-e*14825.05)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+e*707.56)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-e*6838.66)))))))+")"}function od(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var id=od(z("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),ad=od(z("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),sd=od(z("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),fd=od(z("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function Da(e){return function(){return e}}var Dx=Math.cos;var rf=Math.min,lu=Math.sin,Fe=Math.sqrt,Vx=1e-12,Va=Math.PI,zhe=Va/2,nf=2*Va;function Ev(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new ki(t)}var Yhe=Array.prototype.slice;function $v(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Lv(e){this._context=e}Lv.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Ua(e){return new Lv(e)}function Dv(e){return e[0]}function Vv(e){return e[1]}function Ux(e,t){var r=Da(!0),n=null,o=Ua,i=null,a=Ev(s);e=typeof e=="function"?e:e===void 0?Dv:Da(e),t=typeof t=="function"?t:t===void 0?Vv:Da(t);function s(f){var u,c=(f=$v(f)).length,m,l=!1,p;for(n==null&&(i=o(p=a())),u=0;u<=c;++u)!(u0)for(var n=e[0],o=t[0],i=e[r]-n,a=t[r]-o,s=-1,f;++s<=r;)f=s/r,this._basis.point(this._beta*e[s]+(1-this._beta)*(n+f*i),this._beta*t[s]+(1-this._beta)*(o+f*a));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var Wx=(function e(t){function r(n){return t===1?new _u(n):new zv(n,t)}return r.beta=function(n){return e(+n)},r})(.85);function sf(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function ld(e,t){this._context=e,this._k=(1-t)/6}ld.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:sf(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:sf(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Xx=(function e(t){function r(n){return new ld(n,t)}return r.tension=function(n){return e(+n)},r})(0);function pd(e,t){this._context=e,this._k=(1-t)/6}pd.prototype={areaStart:pn,areaEnd:pn,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:sf(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Zx=(function e(t){function r(n){return new pd(n,t)}return r.tension=function(n){return e(+n)},r})(0);function md(e,t){this._context=e,this._k=(1-t)/6}md.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:sf(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Qx=(function e(t){function r(n){return new md(n,t)}return r.tension=function(n){return e(+n)},r})(0);function vu(e,t,r){var n=e._x1,o=e._y1,i=e._x2,a=e._y2;if(e._l01_a>Vx){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,f=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/f,o=(o*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/f}if(e._l23_a>Vx){var u=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,c=3*e._l23_a*(e._l23_a+e._l12_a);i=(i*u+e._x1*e._l23_2a-t*e._l12_2a)/c,a=(a*u+e._y1*e._l23_2a-r*e._l12_2a)/c}e._context.bezierCurveTo(n,o,i,a,e._x2,e._y2)}function Kv(e,t){this._context=e,this._alpha=t}Kv.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:vu(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Jx=(function e(t){function r(n){return t?new Kv(n,t):new ld(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function qv(e,t){this._context=e,this._alpha=t}qv.prototype={areaStart:pn,areaEnd:pn,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:vu(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var eg=(function e(t){function r(n){return t?new qv(n,t):new pd(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function Hv(e,t){this._context=e,this._alpha=t}Hv.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:vu(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var tg=(function e(t){function r(n){return t?new Hv(n,t):new md(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function Yv(e){this._context=e}Yv.prototype={areaStart:pn,areaEnd:pn,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function rg(e){return new Yv(e)}function Wv(e){return e<0?-1:1}function Xv(e,t,r){var n=e._x1-e._x0,o=t-e._x1,i=(e._y1-e._y0)/(n||o<0&&-0),a=(r-e._y1)/(o||n<0&&-0),s=(i*o+a*n)/(n+o);return(Wv(i)+Wv(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(s))||0}function Zv(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function ng(e,t,r){var n=e._x0,o=e._y0,i=e._x1,a=e._y1,s=(i-n)/3;e._context.bezierCurveTo(n+s,o+s*t,i-s,a-s*r,i,a)}function dd(e){this._context=e}dd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ng(this,this._t0,Zv(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,ng(this,Zv(this,r=Xv(this,e,t)),r);break;default:ng(this,this._t0,r=Xv(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function Qv(e){this._context=new Jv(e)}(Qv.prototype=Object.create(dd.prototype)).point=function(e,t){dd.prototype.point.call(this,t,e)};function Jv(e){this._context=e}Jv.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,o,i){this._context.bezierCurveTo(t,e,n,r,i,o)}};function og(e){return new dd(e)}function ig(e){return new Qv(e)}function t6(e){this._context=e}t6.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=e6(e),o=e6(t),i=0,a=1;a=0;--t)o[t]=(a[t]-o[t+1])/i[t];for(i[r-1]=(e[r]+o[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function sg(e){return new hd(e,.5)}function fg(e){return new hd(e,0)}function cg(e){return new hd(e,1)}function Di(e,t,r){this.k=e,this.x=t,this.y=r}Di.prototype={constructor:Di,scale:function(e){return e===1?this:new Di(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Di(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var ug=new Di(1,0,0);lg.prototype=Di.prototype;function lg(e){for(;!e.__zoom;)if(!(e=e.parentNode))return ug;return e.__zoom}function mn(e){return e!=null&&!Number.isNaN(e)}function Or(e,t){return+mn(t)-+mn(e)||ct(e,t)}function ja(e,t){return+mn(t)-+mn(e)||tn(e,t)}function Tu(e){return e!=null&&`${e}`!=""}function pg(e){return isFinite(e)?e:NaN}function Ba(e){return e>0&&isFinite(e)?e:NaN}function ff(e){return e<0&&isFinite(e)?e:NaN}function yd(e,t){if(e instanceof Date||(e=new Date(+e)),isNaN(e))return typeof t=="function"?t(e):t;let r=e.getUTCHours(),n=e.getUTCMinutes(),o=e.getUTCSeconds(),i=e.getUTCMilliseconds();return`${I9(e.getUTCFullYear(),4)}-${ri(e.getUTCMonth()+1,2)}-${ri(e.getUTCDate(),2)}${r||n||o||i?`T${ri(r,2)}:${ri(n,2)}${o||i?`:${ri(o,2)}${i?`.${ri(i,3)}`:""}`:""}Z`:""}`}function I9(e){return e<0?`-${ri(-e,6)}`:e>9999?`+${ri(e,6)}`:ri(e,4)}function ri(e,t){return`${e}`.padStart(t,"0")}var _9=/^(?:[-+]\d{2})?\d{4}(?:-\d{2}(?:-\d{2})?)?(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{3})?)?(?:Z|[-+]\d{2}:?\d{2})?)?$/;function Mu(e,t){return _9.test(e+="")?new Date(e):typeof t=="function"?t(e):t}function ni(e){if(e==null)return;let t=e[0],r=e[e.length-1];return tn(t,r)}var uf=1e3,Ui=uf*60,ji=Ui*60,xo=ji*24,yo=xo*7,Ga=xo*30,Vi=xo*365,mg=[["millisecond",1],["2 milliseconds",2],["5 milliseconds",5],["10 milliseconds",10],["20 milliseconds",20],["50 milliseconds",50],["100 milliseconds",100],["200 milliseconds",200],["500 milliseconds",500],["second",uf],["5 seconds",5*uf],["15 seconds",15*uf],["30 seconds",30*uf],["minute",Ui],["5 minutes",5*Ui],["15 minutes",15*Ui],["30 minutes",30*Ui],["hour",ji],["3 hours",3*ji],["6 hours",6*ji],["12 hours",12*ji],["day",xo],["2 days",2*xo],["week",yo],["2 weeks",2*yo],["month",Ga],["3 months",3*Ga],["6 months",6*Ga],["year",Vi],["2 years",2*Vi],["5 years",5*Vi],["10 years",10*Vi],["20 years",20*Vi],["50 years",50*Vi],["100 years",100*Vi]],dg=new Map([["second",uf],["minute",Ui],["hour",ji],["day",xo],["monday",yo],["tuesday",yo],["wednesday",yo],["thursday",yo],["friday",yo],["saturday",yo],["sunday",yo],["week",yo],["month",Ga],["year",Vi]]),n6=new Map([["second",$t],["minute",Wo],["hour",Zo],["day",cn],["monday",$i],["tuesday",Dp],["wednesday",Vp],["thursday",po],["friday",Up],["saturday",jp],["sunday",jr],["week",jr],["month",Jo],["year",sr]]),hg=new Map([["second",$t],["minute",Xo],["hour",Qo],["day",Ea],["monday",Li],["tuesday",Bp],["wednesday",Gp],["thursday",mo],["friday",zp],["saturday",Kp],["sunday",Br],["week",Br],["month",ei],["year",fr]]),lf=Symbol("intervalDuration"),gd=Symbol("intervalType");for(let[e,t]of n6)t[lf]=dg.get(e),t[gd]="time";for(let[e,t]of hg)t[lf]=dg.get(e),t[gd]="utc";var Ou=[["year",fr,"utc"],["month",ei,"utc"],["day",Ea,"utc",6*Ga],["hour",Qo,"utc",3*xo],["minute",Xo,"utc",6*ji],["second",$t,"utc",30*Ui]],xd=[["year",sr,"time"],["month",Jo,"time"],["day",cn,"time",6*Ga],["hour",Zo,"time",3*xo],["minute",Wo,"time",6*ji],["second",$t,"time",30*Ui]],v9=[Ou[0],xd[0],Ou[1],xd[1],Ou[2],xd[2],...Ou.slice(3)];function o6(e){let t=`${e}`.toLowerCase();t.endsWith("s")&&(t=t.slice(0,-1));let r=1,n=/^(?:(\d+)\s+)/.exec(t);switch(n&&(t=t.slice(n[0].length),r=+n[1]),t){case"quarter":t="month",r*=3;break;case"half":t="month",r*=6;break}let o=hg.get(t);if(!o)throw new Error(`unknown interval: ${e}`);if(r>1&&!o.every)throw new Error(`non-periodic interval: ${t}`);return[t,r]}function yg(e){return i6(o6(e),"time")}function xg(e){return i6(o6(e),"utc")}function i6([e,t],r){let n=(r==="time"?n6:hg).get(e);return t>1&&(n=n.every(t),n[lf]=dg.get(e)*t,n[gd]=r),n}function gg(e,t){if(!(t>1))return;let r=e[lf];if(!mg.some(([,o])=>o===r)||r%xo===0&&xoMath.log(o)).center(mg,Math.log(r*t))];return(e[gd]==="time"?yg:xg)(n)}function r6(e,t,r){let n=t==="time"?Js:ho;if(r==null)return n(e==="year"?"%Y":e==="month"?"%Y-%m":e==="day"?"%Y-%m-%d":e==="hour"||e==="minute"?"%Y-%m-%dT%H:%M":e==="second"?"%Y-%m-%dT%H:%M:%S":"%Y-%m-%dT%H:%M:%S.%L");let o=T9(r);switch(e){case"millisecond":return cf(n(".%L"),n(":%M:%S"),o);case"second":return cf(n(":%S"),n("%-I:%M"),o);case"minute":return cf(n("%-I:%M"),n("%p"),o);case"hour":return cf(n("%-I %p"),n("%b %-d"),o);case"day":return cf(n("%-d"),n("%b"),o);case"month":return cf(n("%b"),n("%Y"),o);case"year":return n("%Y")}throw new Error("unable to format time ticks")}function T9(e){return e==="left"||e==="right"?(t,r)=>` +var PC=Object.defineProperty;var Oa=(e,t)=>{for(var r in t)PC(e,r,{get:t[r],enumerable:!0})};var cr={};Oa(cr,{HasPropertyKey:()=>kl,IsArray:()=>vt,IsAsyncIterator:()=>S0,IsBigInt:()=>bf,IsBoolean:()=>Ho,IsDate:()=>Ca,IsFunction:()=>I0,IsIterator:()=>_0,IsNull:()=>v0,IsNumber:()=>zr,IsObject:()=>je,IsRegExp:()=>gf,IsString:()=>We,IsSymbol:()=>P0,IsUint8Array:()=>Yo,IsUndefined:()=>Pt});function kl(e,t){return t in e}function S0(e){return je(e)&&!vt(e)&&!Yo(e)&&Symbol.asyncIterator in e}function vt(e){return Array.isArray(e)}function bf(e){return typeof e=="bigint"}function Ho(e){return typeof e=="boolean"}function Ca(e){return e instanceof globalThis.Date}function I0(e){return typeof e=="function"}function _0(e){return je(e)&&!vt(e)&&!Yo(e)&&Symbol.iterator in e}function v0(e){return e===null}function zr(e){return typeof e=="number"}function je(e){return typeof e=="object"&&e!==null}function gf(e){return e instanceof globalThis.RegExp}function We(e){return typeof e=="string"}function P0(e){return typeof e=="symbol"}function Yo(e){return e instanceof globalThis.Uint8Array}function Pt(e){return e===void 0}function TC(e){return e.map(t=>Rl(t))}function MC(e){return new Date(e.getTime())}function OC(e){return new Uint8Array(e)}function CC(e){return new RegExp(e.source,e.flags)}function kC(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Rl(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Rl(e[r]);return t}function Rl(e){return vt(e)?TC(e):Ca(e)?MC(e):Yo(e)?OC(e):gf(e)?CC(e):je(e)?kC(e):e}function rt(e){return Rl(e)}function Os(e,t){return t===void 0?rt(e):rt({...t,...e})}function Nl(e){return ye(e)&&globalThis.Symbol.asyncIterator in e}function Al(e){return ye(e)&&globalThis.Symbol.iterator in e}function T0(e){return ye(e)&&(globalThis.Object.getPrototypeOf(e)===Object.prototype||globalThis.Object.getPrototypeOf(e)===null)}function El(e){return e instanceof globalThis.Promise}function xr(e){return e instanceof Date&&globalThis.Number.isFinite(e.getTime())}function gw(e){return e instanceof globalThis.Map}function xw(e){return e instanceof globalThis.Set}function an(e){return globalThis.ArrayBuffer.isView(e)}function Cs(e){return e instanceof globalThis.Uint8Array}function ce(e,t){return t in e}function ye(e){return e!==null&&typeof e=="object"}function fe(e){return globalThis.Array.isArray(e)&&!globalThis.ArrayBuffer.isView(e)}function nt(e){return e===void 0}function Wo(e){return e===null}function uo(e){return typeof e=="boolean"}function ot(e){return typeof e=="number"}function Fl(e){return globalThis.Number.isInteger(e)}function kn(e){return typeof e=="bigint"}function Ve(e){return typeof e=="string"}function Di(e){return typeof e=="function"}function Xo(e){return typeof e=="symbol"}function Gr(e){return kn(e)||uo(e)||Wo(e)||ot(e)||Ve(e)||Xo(e)||nt(e)}var kt;(function(e){e.InstanceMode="default",e.ExactOptionalPropertyTypes=!1,e.AllowArrayObject=!1,e.AllowNaN=!1,e.AllowNullVoid=!1;function t(a,s){return e.ExactOptionalPropertyTypes?s in a:a[s]!==void 0}e.IsExactOptionalProperty=t;function r(a){let s=ye(a);return e.AllowArrayObject?s:s&&!fe(a)}e.IsObjectLike=r;function n(a){return r(a)&&!(a instanceof Date)&&!(a instanceof Uint8Array)}e.IsRecordLike=n;function o(a){return e.AllowNaN?ot(a):Number.isFinite(a)}e.IsNumberLike=o;function i(a){let s=nt(a);return e.AllowNullVoid?s||a===null:s}e.IsVoidLike=i})(kt||(kt={}));function RC(e){return globalThis.Object.freeze(e).map(t=>xf(t))}function NC(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=xf(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=xf(e[r]);return globalThis.Object.freeze(t)}function xf(e){return vt(e)?RC(e):Ca(e)?e:Yo(e)?e:gf(e)?e:je(e)?NC(e):e}function F(e,t){let r=t!==void 0?{...t,...e}:e;switch(kt.InstanceMode){case"freeze":return xf(r);case"clone":return rt(r);default:return r}}var le=class extends Error{constructor(t){super(t)}};var ct=Symbol.for("TypeBox.Transform"),Rn=Symbol.for("TypeBox.Readonly"),er=Symbol.for("TypeBox.Optional"),sn=Symbol.for("TypeBox.Hint"),$=Symbol.for("TypeBox.Kind");function ks(e){return je(e)&&e[Rn]==="Readonly"}function Or(e){return je(e)&&e[er]==="Optional"}function M0(e){return Pe(e,"Any")}function O0(e){return Pe(e,"Argument")}function Nn(e){return Pe(e,"Array")}function ka(e){return Pe(e,"AsyncIterator")}function Ra(e){return Pe(e,"BigInt")}function Zo(e){return Pe(e,"Boolean")}function An(e){return Pe(e,"Computed")}function En(e){return Pe(e,"Constructor")}function AC(e){return Pe(e,"Date")}function Fn(e){return Pe(e,"Function")}function $n(e){return Pe(e,"Integer")}function mt(e){return Pe(e,"Intersect")}function Na(e){return Pe(e,"Iterator")}function Pe(e,t){return je(e)&&$ in e&&e[$]===t}function $l(e){return Ho(e)||zr(e)||We(e)}function Kr(e){return Pe(e,"Literal")}function qr(e){return Pe(e,"MappedKey")}function at(e){return Pe(e,"MappedResult")}function Li(e){return Pe(e,"Never")}function EC(e){return Pe(e,"Not")}function wf(e){return Pe(e,"Null")}function Dn(e){return Pe(e,"Number")}function Tt(e){return Pe(e,"Object")}function Aa(e){return Pe(e,"Promise")}function Ea(e){return Pe(e,"Record")}function gt(e){return Pe(e,"Ref")}function C0(e){return Pe(e,"RegExp")}function Qo(e){return Pe(e,"String")}function Sf(e){return Pe(e,"Symbol")}function Hr(e){return Pe(e,"TemplateLiteral")}function FC(e){return Pe(e,"This")}function Ae(e){return je(e)&&ct in e}function Yr(e){return Pe(e,"Tuple")}function Jo(e){return Pe(e,"Undefined")}function Oe(e){return Pe(e,"Union")}function $C(e){return Pe(e,"Uint8Array")}function DC(e){return Pe(e,"Unknown")}function LC(e){return Pe(e,"Unsafe")}function VC(e){return Pe(e,"Void")}function Vi(e){return je(e)&&$ in e&&We(e[$])}function ft(e){return M0(e)||O0(e)||Nn(e)||Zo(e)||Ra(e)||ka(e)||An(e)||En(e)||AC(e)||Fn(e)||$n(e)||mt(e)||Na(e)||Kr(e)||qr(e)||at(e)||Li(e)||EC(e)||wf(e)||Dn(e)||Tt(e)||Aa(e)||Ea(e)||gt(e)||C0(e)||Qo(e)||Sf(e)||Hr(e)||FC(e)||Yr(e)||Jo(e)||Oe(e)||$C(e)||DC(e)||LC(e)||VC(e)||Vi(e)}var P={};Oa(P,{IsAny:()=>_w,IsArgument:()=>vw,IsArray:()=>Pw,IsAsyncIterator:()=>Tw,IsBigInt:()=>Mw,IsBoolean:()=>Ow,IsComputed:()=>Cw,IsConstructor:()=>kw,IsDate:()=>Rw,IsFunction:()=>Nw,IsImport:()=>KC,IsInteger:()=>Aw,IsIntersect:()=>Ew,IsIterator:()=>Fw,IsKind:()=>s2,IsKindOf:()=>Ie,IsLiteral:()=>_f,IsLiteralBoolean:()=>qC,IsLiteralNumber:()=>Dw,IsLiteralString:()=>$w,IsLiteralValue:()=>Lw,IsMappedKey:()=>Vw,IsMappedResult:()=>jw,IsNever:()=>Uw,IsNot:()=>Bw,IsNull:()=>zw,IsNumber:()=>Gw,IsObject:()=>Kw,IsOptional:()=>GC,IsPromise:()=>qw,IsProperties:()=>Dl,IsReadonly:()=>zC,IsRecord:()=>Hw,IsRecursive:()=>HC,IsRef:()=>Yw,IsRegExp:()=>Ww,IsSchema:()=>Vt,IsString:()=>Xw,IsSymbol:()=>Zw,IsTemplateLiteral:()=>Qw,IsThis:()=>Jw,IsTransform:()=>e2,IsTuple:()=>t2,IsUint8Array:()=>n2,IsUndefined:()=>r2,IsUnion:()=>A0,IsUnionLiteral:()=>YC,IsUnknown:()=>o2,IsUnsafe:()=>i2,IsVoid:()=>a2,TypeGuardUnknownTypeError:()=>k0});var k0=class extends le{},jC=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"];function ww(e){try{return new RegExp(e),!0}catch{return!1}}function R0(e){if(!We(e))return!1;for(let t=0;t=7&&r<=13||r===27||r===127)return!1}return!0}function Sw(e){return N0(e)||Vt(e)}function If(e){return Pt(e)||bf(e)}function Xe(e){return Pt(e)||zr(e)}function N0(e){return Pt(e)||Ho(e)}function Ue(e){return Pt(e)||We(e)}function UC(e){return Pt(e)||We(e)&&R0(e)&&ww(e)}function BC(e){return Pt(e)||We(e)&&R0(e)}function Iw(e){return Pt(e)||Vt(e)}function zC(e){return je(e)&&e[Rn]==="Readonly"}function GC(e){return je(e)&&e[er]==="Optional"}function _w(e){return Ie(e,"Any")&&Ue(e.$id)}function vw(e){return Ie(e,"Argument")&&zr(e.index)}function Pw(e){return Ie(e,"Array")&&e.type==="array"&&Ue(e.$id)&&Vt(e.items)&&Xe(e.minItems)&&Xe(e.maxItems)&&N0(e.uniqueItems)&&Iw(e.contains)&&Xe(e.minContains)&&Xe(e.maxContains)}function Tw(e){return Ie(e,"AsyncIterator")&&e.type==="AsyncIterator"&&Ue(e.$id)&&Vt(e.items)}function Mw(e){return Ie(e,"BigInt")&&e.type==="bigint"&&Ue(e.$id)&&If(e.exclusiveMaximum)&&If(e.exclusiveMinimum)&&If(e.maximum)&&If(e.minimum)&&If(e.multipleOf)}function Ow(e){return Ie(e,"Boolean")&&e.type==="boolean"&&Ue(e.$id)}function Cw(e){return Ie(e,"Computed")&&We(e.target)&&vt(e.parameters)&&e.parameters.every(t=>Vt(t))}function kw(e){return Ie(e,"Constructor")&&e.type==="Constructor"&&Ue(e.$id)&&vt(e.parameters)&&e.parameters.every(t=>Vt(t))&&Vt(e.returns)}function Rw(e){return Ie(e,"Date")&&e.type==="Date"&&Ue(e.$id)&&Xe(e.exclusiveMaximumTimestamp)&&Xe(e.exclusiveMinimumTimestamp)&&Xe(e.maximumTimestamp)&&Xe(e.minimumTimestamp)&&Xe(e.multipleOfTimestamp)}function Nw(e){return Ie(e,"Function")&&e.type==="Function"&&Ue(e.$id)&&vt(e.parameters)&&e.parameters.every(t=>Vt(t))&&Vt(e.returns)}function KC(e){return Ie(e,"Import")&&kl(e,"$defs")&&je(e.$defs)&&Dl(e.$defs)&&kl(e,"$ref")&&We(e.$ref)&&e.$ref in e.$defs}function Aw(e){return Ie(e,"Integer")&&e.type==="integer"&&Ue(e.$id)&&Xe(e.exclusiveMaximum)&&Xe(e.exclusiveMinimum)&&Xe(e.maximum)&&Xe(e.minimum)&&Xe(e.multipleOf)}function Dl(e){return je(e)&&Object.entries(e).every(([t,r])=>R0(t)&&Vt(r))}function Ew(e){return Ie(e,"Intersect")&&!(We(e.type)&&e.type!=="object")&&vt(e.allOf)&&e.allOf.every(t=>Vt(t)&&!e2(t))&&Ue(e.type)&&(N0(e.unevaluatedProperties)||Iw(e.unevaluatedProperties))&&Ue(e.$id)}function Fw(e){return Ie(e,"Iterator")&&e.type==="Iterator"&&Ue(e.$id)&&Vt(e.items)}function Ie(e,t){return je(e)&&$ in e&&e[$]===t}function $w(e){return _f(e)&&We(e.const)}function Dw(e){return _f(e)&&zr(e.const)}function qC(e){return _f(e)&&Ho(e.const)}function _f(e){return Ie(e,"Literal")&&Ue(e.$id)&&Lw(e.const)}function Lw(e){return Ho(e)||zr(e)||We(e)}function Vw(e){return Ie(e,"MappedKey")&&vt(e.keys)&&e.keys.every(t=>zr(t)||We(t))}function jw(e){return Ie(e,"MappedResult")&&Dl(e.properties)}function Uw(e){return Ie(e,"Never")&&je(e.not)&&Object.getOwnPropertyNames(e.not).length===0}function Bw(e){return Ie(e,"Not")&&Vt(e.not)}function zw(e){return Ie(e,"Null")&&e.type==="null"&&Ue(e.$id)}function Gw(e){return Ie(e,"Number")&&e.type==="number"&&Ue(e.$id)&&Xe(e.exclusiveMaximum)&&Xe(e.exclusiveMinimum)&&Xe(e.maximum)&&Xe(e.minimum)&&Xe(e.multipleOf)}function Kw(e){return Ie(e,"Object")&&e.type==="object"&&Ue(e.$id)&&Dl(e.properties)&&Sw(e.additionalProperties)&&Xe(e.minProperties)&&Xe(e.maxProperties)}function qw(e){return Ie(e,"Promise")&&e.type==="Promise"&&Ue(e.$id)&&Vt(e.item)}function Hw(e){return Ie(e,"Record")&&e.type==="object"&&Ue(e.$id)&&Sw(e.additionalProperties)&&je(e.patternProperties)&&(t=>{let r=Object.getOwnPropertyNames(t.patternProperties);return r.length===1&&ww(r[0])&&je(t.patternProperties)&&Vt(t.patternProperties[r[0]])})(e)}function HC(e){return je(e)&&sn in e&&e[sn]==="Recursive"}function Yw(e){return Ie(e,"Ref")&&Ue(e.$id)&&We(e.$ref)}function Ww(e){return Ie(e,"RegExp")&&Ue(e.$id)&&We(e.source)&&We(e.flags)&&Xe(e.maxLength)&&Xe(e.minLength)}function Xw(e){return Ie(e,"String")&&e.type==="string"&&Ue(e.$id)&&Xe(e.minLength)&&Xe(e.maxLength)&&UC(e.pattern)&&BC(e.format)}function Zw(e){return Ie(e,"Symbol")&&e.type==="symbol"&&Ue(e.$id)}function Qw(e){return Ie(e,"TemplateLiteral")&&e.type==="string"&&We(e.pattern)&&e.pattern[0]==="^"&&e.pattern[e.pattern.length-1]==="$"}function Jw(e){return Ie(e,"This")&&Ue(e.$id)&&We(e.$ref)}function e2(e){return je(e)&&ct in e}function t2(e){return Ie(e,"Tuple")&&e.type==="array"&&Ue(e.$id)&&zr(e.minItems)&&zr(e.maxItems)&&e.minItems===e.maxItems&&(Pt(e.items)&&Pt(e.additionalItems)&&e.minItems===0||vt(e.items)&&e.items.every(t=>Vt(t)))}function r2(e){return Ie(e,"Undefined")&&e.type==="undefined"&&Ue(e.$id)}function YC(e){return A0(e)&&e.anyOf.every(t=>$w(t)||Dw(t))}function A0(e){return Ie(e,"Union")&&Ue(e.$id)&&je(e)&&vt(e.anyOf)&&e.anyOf.every(t=>Vt(t))}function n2(e){return Ie(e,"Uint8Array")&&e.type==="Uint8Array"&&Ue(e.$id)&&Xe(e.minByteLength)&&Xe(e.maxByteLength)}function o2(e){return Ie(e,"Unknown")&&Ue(e.$id)}function i2(e){return Ie(e,"Unsafe")}function a2(e){return Ie(e,"Void")&&e.type==="void"&&Ue(e.$id)}function s2(e){return je(e)&&$ in e&&We(e[$])&&!jC.includes(e[$])}function Vt(e){return je(e)&&(_w(e)||vw(e)||Pw(e)||Ow(e)||Mw(e)||Tw(e)||Cw(e)||kw(e)||Rw(e)||Nw(e)||Aw(e)||Ew(e)||Fw(e)||_f(e)||Vw(e)||jw(e)||Uw(e)||Bw(e)||zw(e)||Gw(e)||Kw(e)||qw(e)||Hw(e)||Yw(e)||Ww(e)||Xw(e)||Zw(e)||Qw(e)||Jw(e)||t2(e)||r2(e)||A0(e)||n2(e)||o2(e)||i2(e)||a2(e)||s2(e))}var E0="(true|false)",vf="(0|[1-9][0-9]*)",F0="(.*)",WC="(?!.*)",fB=`^${E0}$`,ji=`^${vf}$`,Ui=`^${F0}$`,c2=`^${WC}$`;var Bi={};Oa(Bi,{Clear:()=>ZC,Delete:()=>QC,Entries:()=>XC,Get:()=>t8,Has:()=>JC,Set:()=>e8});var Rs=new Map;function XC(){return new Map(Rs)}function ZC(){return Rs.clear()}function QC(e){return Rs.delete(e)}function JC(e){return Rs.has(e)}function e8(e,t){Rs.set(e,t)}function t8(e){return Rs.get(e)}var Ln={};Oa(Ln,{Clear:()=>n8,Delete:()=>o8,Entries:()=>r8,Get:()=>s8,Has:()=>i8,Set:()=>a8});var Ns=new Map;function r8(){return new Map(Ns)}function n8(){return Ns.clear()}function o8(e){return Ns.delete(e)}function i8(e){return Ns.has(e)}function a8(e,t){Ns.set(e,t)}function s8(e){return Ns.get(e)}function f2(e,t){return e.includes(t)}function u2(e){return[...new Set(e)]}function c8(e,t){return e.filter(r=>t.includes(r))}function f8(e,t){return e.reduce((r,n)=>c8(r,n),t)}function l2(e){return e.length===1?e[0]:e.length>1?f8(e.slice(1),e[0]):[]}function p2(e){let t=[];for(let r of e)t.push(...r);return t}function zi(e){return F({[$]:"Any"},e)}function As(e,t){return F({[$]:"Array",type:"array",items:e},t)}function m2(e){return F({[$]:"Argument",index:e})}function Es(e,t){return F({[$]:"AsyncIterator",type:"AsyncIterator",items:e},t)}function Qe(e,t,r){return F({[$]:"Computed",target:e,parameters:t},r)}function u8(e,t){let{[t]:r,...n}=e;return n}function dt(e,t){return t.reduce((r,n)=>u8(r,n),e)}function Se(e){return F({[$]:"Never",not:{}},e)}function ke(e){return F({[$]:"MappedResult",properties:e})}function Fs(e,t,r){return F({[$]:"Constructor",type:"Constructor",parameters:e,returns:t},r)}function lo(e,t,r){return F({[$]:"Function",type:"Function",parameters:e,returns:t},r)}function Pf(e,t){return F({[$]:"Union",anyOf:e},t)}function l8(e){return e.some(t=>Or(t))}function d2(e){return e.map(t=>Or(t)?p8(t):t)}function p8(e){return dt(e,[er])}function m8(e,t){return l8(e)?fr(Pf(d2(e),t)):Pf(d2(e),t)}function po(e,t){return e.length===1?F(e[0],t):e.length===0?Se(t):m8(e,t)}function Ee(e,t){return e.length===0?Se(t):e.length===1?F(e[0],t):Pf(e,t)}var Ll=class extends le{};function d8(e){return e.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function $0(e,t,r){return e[t]===r&&e.charCodeAt(t-1)!==92}function ti(e,t){return $0(e,t,"(")}function Tf(e,t){return $0(e,t,")")}function h2(e,t){return $0(e,t,"|")}function h8(e){if(!(ti(e,0)&&Tf(e,e.length-1)))return!1;let t=0;for(let r=0;r0&&n.push($s(a)),r=i+1}let o=e.slice(r);return o.length>0&&n.push($s(o)),n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"or",expr:n}}function w8(e){function t(o,i){if(!ti(o,i))throw new Ll("TemplateLiteralParser: Index must point to open parens");let a=0;for(let s=i;s0&&n.push($s(s)),o=a-1}return n.length===0?{type:"const",const:""}:n.length===1?n[0]:{type:"and",expr:n}}function $s(e){return h8(e)?$s(y8(e)):b8(e)?x8(e):g8(e)?w8(e):{type:"const",const:d8(e)}}function Ds(e){return $s(e.slice(1,e.length-1))}var D0=class extends le{};function S8(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="0"&&e.expr[1].type==="const"&&e.expr[1].const==="[1-9][0-9]*"}function I8(e){return e.type==="or"&&e.expr.length===2&&e.expr[0].type==="const"&&e.expr[0].const==="true"&&e.expr[1].type==="const"&&e.expr[1].const==="false"}function _8(e){return e.type==="const"&&e.const===".*"}function Fa(e){return S8(e)||_8(e)?!1:I8(e)?!0:e.type==="and"?e.expr.every(t=>Fa(t)):e.type==="or"?e.expr.every(t=>Fa(t)):e.type==="const"?!0:(()=>{throw new D0("Unknown expression type")})()}function Vl(e){let t=Ds(e.pattern);return Fa(t)}var L0=class extends le{};function*y2(e){if(e.length===1)return yield*e[0];for(let t of e[0])for(let r of y2(e.slice(1)))yield`${t}${r}`}function*v8(e){return yield*y2(e.expr.map(t=>[...Mf(t)]))}function*P8(e){for(let t of e.expr)yield*Mf(t)}function*T8(e){return yield e.const}function*Mf(e){return e.type==="and"?yield*v8(e):e.type==="or"?yield*P8(e):e.type==="const"?yield*T8(e):(()=>{throw new L0("Unknown expression")})()}function Ls(e){let t=Ds(e.pattern);return Fa(t)?[...Mf(t)]:[]}function Te(e,t){return F({[$]:"Literal",const:e,type:typeof e},t)}function jl(e){return F({[$]:"Boolean",type:"boolean"},e)}function Vs(e){return F({[$]:"BigInt",type:"bigint"},e)}function cn(e){return F({[$]:"Number",type:"number"},e)}function wr(e){return F({[$]:"String",type:"string"},e)}function*M8(e){let t=e.trim().replace(/"|'/g,"");return t==="boolean"?yield jl():t==="number"?yield cn():t==="bigint"?yield Vs():t==="string"?yield wr():yield(()=>{let r=t.split("|").map(n=>Te(n.trim()));return r.length===0?Se():r.length===1?r[0]:po(r)})()}function*O8(e){if(e[1]!=="{"){let t=Te("$"),r=V0(e.slice(1));return yield*[t,...r]}for(let t=2;tg2(r,t)).join("|")})`:Dn(e)?`${t}${vf}`:$n(e)?`${t}${vf}`:Ra(e)?`${t}${vf}`:Qo(e)?`${t}${F0}`:Kr(e)?`${t}${C8(e.const.toString())}`:Zo(e)?`${t}${E0}`:(()=>{throw new j0(`Unexpected Kind '${e[$]}'`)})()}function U0(e){return`^${e.map(t=>g2(t,"")).join("")}$`}function $a(e){let r=Ls(e).map(n=>Te(n));return po(r)}function Ul(e,t){let r=We(e)?U0(b2(e)):U0(e);return F({[$]:"TemplateLiteral",type:"string",pattern:r},t)}function k8(e){return Ls(e).map(r=>r.toString())}function R8(e){let t=[];for(let r of e)t.push(...Cr(r));return t}function N8(e){return[e.toString()]}function Cr(e){return[...new Set(Hr(e)?k8(e):Oe(e)?R8(e.anyOf):Kr(e)?N8(e.const):Dn(e)?["[number]"]:$n(e)?["[number]"]:[])]}function A8(e,t,r){let n={};for(let o of Object.getOwnPropertyNames(t))n[o]=Gi(e,Cr(t[o]),r);return n}function E8(e,t,r){return A8(e,t.properties,r)}function x2(e,t,r){let n=E8(e,t,r);return ke(n)}function S2(e,t){return e.map(r=>I2(r,t))}function F8(e){return e.filter(t=>!Li(t))}function $8(e,t){return Bl(F8(S2(e,t)))}function D8(e){return e.some(t=>Li(t))?[]:e}function L8(e,t){return po(D8(S2(e,t)))}function V8(e,t){return t in e?e[t]:t==="[number]"?po(e):Se()}function j8(e,t){return t==="[number]"?e:Se()}function U8(e,t){return t in e?e[t]:Se()}function I2(e,t){return mt(e)?$8(e.allOf,t):Oe(e)?L8(e.anyOf,t):Yr(e)?V8(e.items??[],t):Nn(e)?j8(e.items,t):Tt(e)?U8(e.properties,t):Se()}function Of(e,t){return t.map(r=>I2(e,r))}function w2(e,t){return po(Of(e,t))}function Gi(e,t,r){if(gt(e)||gt(t)){let n="Index types using Ref parameters require both Type and Key to be of TSchema";if(!ft(e)||!ft(t))throw new le(n);return Qe("Index",[e,t])}return at(t)?x2(e,t,r):qr(t)?_2(e,t,r):F(ft(t)?w2(e,Cr(t)):w2(e,t),r)}function B8(e,t,r){return{[t]:Gi(e,[t],rt(r))}}function z8(e,t,r){return t.reduce((n,o)=>({...n,...B8(e,o,r)}),{})}function G8(e,t,r){return z8(e,t.keys,r)}function _2(e,t,r){let n=G8(e,t,r);return ke(n)}function js(e,t){return F({[$]:"Iterator",type:"Iterator",items:e},t)}function K8(e){return globalThis.Object.keys(e).filter(t=>!Or(e[t]))}function q8(e,t){let r=K8(e),n=r.length>0?{[$]:"Object",type:"object",required:r,properties:e}:{[$]:"Object",type:"object",properties:e};return F(n,t)}var Fe=q8;function zl(e,t){return F({[$]:"Promise",type:"Promise",item:e},t)}function H8(e){return F(dt(e,[Rn]))}function Y8(e){return F({...e,[Rn]:"Readonly"})}function W8(e,t){return t===!1?H8(e):Y8(e)}function kr(e,t){let r=t??!0;return at(e)?v2(e,r):W8(e,r)}function X8(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=kr(e[n],t);return r}function Z8(e,t){return X8(e.properties,t)}function v2(e,t){let r=Z8(e,t);return ke(r)}function fn(e,t){return F(e.length>0?{[$]:"Tuple",type:"array",items:e,additionalItems:!1,minItems:e.length,maxItems:e.length}:{[$]:"Tuple",type:"array",minItems:e.length,maxItems:e.length},t)}function P2(e,t){return e in t?un(e,t[e]):ke(t)}function Q8(e){return{[e]:Te(e)}}function J8(e){let t={};for(let r of e)t[r]=Te(r);return t}function e5(e,t){return f2(t,e)?Q8(e):J8(t)}function t5(e,t){let r=e5(e,t);return P2(e,r)}function Cf(e,t){return t.map(r=>un(e,r))}function r5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(t))r[n]=un(e,t[n]);return r}function un(e,t){let r={...t};return Or(t)?fr(un(e,dt(t,[er]))):ks(t)?kr(un(e,dt(t,[Rn]))):at(t)?P2(e,t.properties):qr(t)?t5(e,t.keys):En(t)?Fs(Cf(e,t.parameters),un(e,t.returns),r):Fn(t)?lo(Cf(e,t.parameters),un(e,t.returns),r):ka(t)?Es(un(e,t.items),r):Na(t)?js(un(e,t.items),r):mt(t)?ur(Cf(e,t.allOf),r):Oe(t)?Ee(Cf(e,t.anyOf),r):Yr(t)?fn(Cf(e,t.items??[]),r):Tt(t)?Fe(r5(e,t.properties),r):Nn(t)?As(un(e,t.items),r):Aa(t)?zl(un(e,t.item),r):t}function n5(e,t){let r={};for(let n of e)r[n]=un(n,t);return r}function T2(e,t,r){let n=ft(e)?Cr(e):e,o=t({[$]:"MappedKey",keys:n}),i=n5(n,o);return Fe(i,r)}function o5(e){return F(dt(e,[er]))}function i5(e){return F({...e,[er]:"Optional"})}function a5(e,t){return t===!1?o5(e):i5(e)}function fr(e,t){let r=t??!0;return at(e)?M2(e,r):a5(e,r)}function s5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=fr(e[n],t);return r}function c5(e,t){return s5(e.properties,t)}function M2(e,t){let r=c5(e,t);return ke(r)}function kf(e,t={}){let r=e.every(o=>Tt(o)),n=ft(t.unevaluatedProperties)?{unevaluatedProperties:t.unevaluatedProperties}:{};return F(t.unevaluatedProperties===!1||ft(t.unevaluatedProperties)||r?{...n,[$]:"Intersect",type:"object",allOf:e}:{...n,[$]:"Intersect",allOf:e},t)}function f5(e){return e.every(t=>Or(t))}function u5(e){return dt(e,[er])}function O2(e){return e.map(t=>Or(t)?u5(t):t)}function l5(e,t){return f5(e)?fr(kf(O2(e),t)):kf(O2(e),t)}function Bl(e,t={}){if(e.length===1)return F(e[0],t);if(e.length===0)return Se(t);if(e.some(r=>Ae(r)))throw new Error("Cannot intersect transform types");return l5(e,t)}function ur(e,t){if(e.length===1)return F(e[0],t);if(e.length===0)return Se(t);if(e.some(r=>Ae(r)))throw new Error("Cannot intersect transform types");return kf(e,t)}function mo(...e){let[t,r]=typeof e[0]=="string"?[e[0],e[1]]:[e[0].$id,e[1]];if(typeof t!="string")throw new le("Ref: $ref must be a string");return F({[$]:"Ref",$ref:t},r)}function p5(e,t){return Qe("Awaited",[Qe(e,t)])}function m5(e){return Qe("Awaited",[mo(e)])}function d5(e){return ur(C2(e))}function h5(e){return Ee(C2(e))}function y5(e){return Us(e)}function C2(e){return e.map(t=>Us(t))}function Us(e,t){return F(An(e)?p5(e.target,e.parameters):mt(e)?d5(e.allOf):Oe(e)?h5(e.anyOf):Aa(e)?y5(e.item):gt(e)?m5(e.$ref):e,t)}function k2(e){let t=[];for(let r of e)t.push(Rr(r));return t}function b5(e){let t=k2(e);return p2(t)}function g5(e){let t=k2(e);return l2(t)}function x5(e){return e.map((t,r)=>r.toString())}function w5(e){return["[number]"]}function S5(e){return globalThis.Object.getOwnPropertyNames(e)}function I5(e){return B0?globalThis.Object.getOwnPropertyNames(e).map(r=>r[0]==="^"&&r[r.length-1]==="$"?r.slice(1,r.length-1):r):[]}function Rr(e){return mt(e)?b5(e.allOf):Oe(e)?g5(e.anyOf):Yr(e)?x5(e.items??[]):Nn(e)?w5(e.items):Tt(e)?S5(e.properties):Ea(e)?I5(e.patternProperties):[]}var B0=!1;function Bs(e){B0=!0;let t=Rr(e);return B0=!1,`^(${t.map(n=>`(${n})`).join("|")})$`}function _5(e,t){return Qe("KeyOf",[Qe(e,t)])}function v5(e){return Qe("KeyOf",[mo(e)])}function P5(e,t){let r=Rr(e),n=T5(r),o=po(n);return F(o,t)}function T5(e){return e.map(t=>t==="[number]"?cn():Te(t))}function zs(e,t){return An(e)?_5(e.target,e.parameters):gt(e)?v5(e.$ref):at(e)?R2(e,t):P5(e,t)}function M5(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=zs(e[n],rt(t));return r}function O5(e,t){return M5(e.properties,t)}function R2(e,t){let r=O5(e,t);return ke(r)}function Gl(e){let t=Rr(e),r=Of(e,t);return t.map((n,o)=>[t[o],r[o]])}function C5(e){let t=[];for(let r of e)t.push(...Rr(r));return u2(t)}function k5(e){return e.filter(t=>!Li(t))}function R5(e,t){let r=[];for(let n of e)r.push(...Of(n,[t]));return k5(r)}function N5(e,t){let r={};for(let n of t)r[n]=Bl(R5(e,n));return r}function N2(e,t){let r=C5(e),n=N5(e,r);return Fe(n,t)}function Kl(e){return F({[$]:"Date",type:"Date"},e)}function ql(e){return F({[$]:"Null",type:"null"},e)}function Hl(e){return F({[$]:"Symbol",type:"symbol"},e)}function Yl(e){return F({[$]:"Undefined",type:"undefined"},e)}function Wl(e){return F({[$]:"Uint8Array",type:"Uint8Array"},e)}function Vn(e){return F({[$]:"Unknown"},e)}function A5(e){return e.map(t=>z0(t,!1))}function E5(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=kr(z0(e[r],!1));return t}function Xl(e,t){return t===!0?e:kr(e)}function z0(e,t){return S0(e)?Xl(zi(),t):_0(e)?Xl(zi(),t):vt(e)?kr(fn(A5(e))):Yo(e)?Wl():Ca(e)?Kl():je(e)?Xl(Fe(E5(e)),t):I0(e)?Xl(lo([],Vn()),t):Pt(e)?Yl():v0(e)?ql():P0(e)?Hl():bf(e)?Vs():zr(e)?Te(e):Ho(e)?Te(e):We(e)?Te(e):Fe({})}function A2(e,t){return F(z0(e,!0),t)}function E2(e,t){return En(e)?fn(e.parameters,t):Se(t)}function F2(e,t){if(Pt(e))throw new Error("Enum undefined or empty");let r=globalThis.Object.getOwnPropertyNames(e).filter(i=>isNaN(i)).map(i=>e[i]),o=[...new Set(r)].map(i=>Te(i));return Ee(o,{...t,[sn]:"Enum"})}var K0=class extends le{},D;(function(e){e[e.Union=0]="Union",e[e.True=1]="True",e[e.False=2]="False"})(D||(D={}));function ln(e){return e===D.False?e:D.True}function Gs(e){throw new K0(e)}function Rt(e){return P.IsNever(e)||P.IsIntersect(e)||P.IsUnion(e)||P.IsUnknown(e)||P.IsAny(e)}function Nt(e,t){return P.IsNever(t)?B2(e,t):P.IsIntersect(t)?Zl(e,t):P.IsUnion(t)?W0(e,t):P.IsUnknown(t)?q2(e,t):P.IsAny(t)?Y0(e,t):Gs("StructuralRight")}function Y0(e,t){return D.True}function F5(e,t){return P.IsIntersect(t)?Zl(e,t):P.IsUnion(t)&&t.anyOf.some(r=>P.IsAny(r)||P.IsUnknown(r))?D.True:P.IsUnion(t)?D.Union:P.IsUnknown(t)||P.IsAny(t)?D.True:D.Union}function $5(e,t){return P.IsUnknown(e)?D.False:P.IsAny(e)?D.Union:P.IsNever(e)?D.True:D.False}function D5(e,t){return P.IsObject(t)&&Ql(t)?D.True:Rt(t)?Nt(e,t):P.IsArray(t)?ln(Be(e.items,t.items)):D.False}function L5(e,t){return Rt(t)?Nt(e,t):P.IsAsyncIterator(t)?ln(Be(e.items,t.items)):D.False}function V5(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsBigInt(t)?D.True:D.False}function j2(e,t){return P.IsLiteralBoolean(e)||P.IsBoolean(e)?D.True:D.False}function j5(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsBoolean(t)?D.True:D.False}function U5(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsConstructor(t)?e.parameters.length>t.parameters.length?D.False:e.parameters.every((r,n)=>ln(Be(t.parameters[n],r))===D.True)?ln(Be(e.returns,t.returns)):D.False:D.False}function B5(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsDate(t)?D.True:D.False}function z5(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsFunction(t)?e.parameters.length>t.parameters.length?D.False:e.parameters.every((r,n)=>ln(Be(t.parameters[n],r))===D.True)?ln(Be(e.returns,t.returns)):D.False:D.False}function U2(e,t){return P.IsLiteral(e)&&cr.IsNumber(e.const)||P.IsNumber(e)||P.IsInteger(e)?D.True:D.False}function G5(e,t){return P.IsInteger(t)||P.IsNumber(t)?D.True:Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):D.False}function Zl(e,t){return t.allOf.every(r=>Be(e,r)===D.True)?D.True:D.False}function K5(e,t){return e.allOf.some(r=>Be(r,t)===D.True)?D.True:D.False}function q5(e,t){return Rt(t)?Nt(e,t):P.IsIterator(t)?ln(Be(e.items,t.items)):D.False}function H5(e,t){return P.IsLiteral(t)&&t.const===e.const?D.True:Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsString(t)?K2(e,t):P.IsNumber(t)?z2(e,t):P.IsInteger(t)?U2(e,t):P.IsBoolean(t)?j2(e,t):D.False}function B2(e,t){return D.False}function Y5(e,t){return D.True}function $2(e){let[t,r]=[e,0];for(;P.IsNot(t);)t=t.not,r+=1;return r%2===0?t:Vn()}function W5(e,t){return P.IsNot(e)?Be($2(e),t):P.IsNot(t)?Be(e,$2(t)):Gs("Invalid fallthrough for Not")}function X5(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsNull(t)?D.True:D.False}function z2(e,t){return P.IsLiteralNumber(e)||P.IsNumber(e)||P.IsInteger(e)?D.True:D.False}function Z5(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsInteger(t)||P.IsNumber(t)?D.True:D.False}function Nr(e,t){return Object.getOwnPropertyNames(e.properties).length===t}function D2(e){return Ql(e)}function L2(e){return Nr(e,0)||Nr(e,1)&&"description"in e.properties&&P.IsUnion(e.properties.description)&&e.properties.description.anyOf.length===2&&(P.IsString(e.properties.description.anyOf[0])&&P.IsUndefined(e.properties.description.anyOf[1])||P.IsString(e.properties.description.anyOf[1])&&P.IsUndefined(e.properties.description.anyOf[0]))}function G0(e){return Nr(e,0)}function V2(e){return Nr(e,0)}function Q5(e){return Nr(e,0)}function J5(e){return Nr(e,0)}function e3(e){return Ql(e)}function t3(e){let t=cn();return Nr(e,0)||Nr(e,1)&&"length"in e.properties&&ln(Be(e.properties.length,t))===D.True}function r3(e){return Nr(e,0)}function Ql(e){let t=cn();return Nr(e,0)||Nr(e,1)&&"length"in e.properties&&ln(Be(e.properties.length,t))===D.True}function n3(e){let t=lo([zi()],zi());return Nr(e,0)||Nr(e,1)&&"then"in e.properties&&ln(Be(e.properties.then,t))===D.True}function G2(e,t){return Be(e,t)===D.False||P.IsOptional(e)&&!P.IsOptional(t)?D.False:D.True}function lr(e,t){return P.IsUnknown(e)?D.False:P.IsAny(e)?D.Union:P.IsNever(e)||P.IsLiteralString(e)&&D2(t)||P.IsLiteralNumber(e)&&G0(t)||P.IsLiteralBoolean(e)&&V2(t)||P.IsSymbol(e)&&L2(t)||P.IsBigInt(e)&&Q5(t)||P.IsString(e)&&D2(t)||P.IsSymbol(e)&&L2(t)||P.IsNumber(e)&&G0(t)||P.IsInteger(e)&&G0(t)||P.IsBoolean(e)&&V2(t)||P.IsUint8Array(e)&&e3(t)||P.IsDate(e)&&J5(t)||P.IsConstructor(e)&&r3(t)||P.IsFunction(e)&&t3(t)?D.True:P.IsRecord(e)&&P.IsString(q0(e))?t[sn]==="Record"?D.True:D.False:P.IsRecord(e)&&P.IsNumber(q0(e))?Nr(t,0)?D.True:D.False:D.False}function o3(e,t){return Rt(t)?Nt(e,t):P.IsRecord(t)?pn(e,t):P.IsObject(t)?(()=>{for(let r of Object.getOwnPropertyNames(t.properties)){if(!(r in e.properties)&&!P.IsOptional(t.properties[r]))return D.False;if(P.IsOptional(t.properties[r]))return D.True;if(G2(e.properties[r],t.properties[r])===D.False)return D.False}return D.True})():D.False}function i3(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)&&n3(t)?D.True:P.IsPromise(t)?ln(Be(e.item,t.item)):D.False}function q0(e){return ji in e.patternProperties?cn():Ui in e.patternProperties?wr():Gs("Unknown record key pattern")}function H0(e){return ji in e.patternProperties?e.patternProperties[ji]:Ui in e.patternProperties?e.patternProperties[Ui]:Gs("Unable to get record value schema")}function pn(e,t){let[r,n]=[q0(t),H0(t)];return P.IsLiteralString(e)&&P.IsNumber(r)&&ln(Be(e,n))===D.True?D.True:P.IsUint8Array(e)&&P.IsNumber(r)||P.IsString(e)&&P.IsNumber(r)||P.IsArray(e)&&P.IsNumber(r)?Be(e,n):P.IsObject(e)?(()=>{for(let o of Object.getOwnPropertyNames(e.properties))if(G2(n,e.properties[o])===D.False)return D.False;return D.True})():D.False}function a3(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?Be(H0(e),H0(t)):D.False}function s3(e,t){let r=P.IsRegExp(e)?wr():e,n=P.IsRegExp(t)?wr():t;return Be(r,n)}function K2(e,t){return P.IsLiteral(e)&&cr.IsString(e.const)||P.IsString(e)?D.True:D.False}function c3(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsString(t)?D.True:D.False}function f3(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsSymbol(t)?D.True:D.False}function u3(e,t){return P.IsTemplateLiteral(e)?Be($a(e),t):P.IsTemplateLiteral(t)?Be(e,$a(t)):Gs("Invalid fallthrough for TemplateLiteral")}function l3(e,t){return P.IsArray(t)&&e.items!==void 0&&e.items.every(r=>Be(r,t.items)===D.True)}function p3(e,t){return P.IsNever(e)?D.True:P.IsUnknown(e)?D.False:P.IsAny(e)?D.Union:D.False}function m3(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)&&Ql(t)||P.IsArray(t)&&l3(e,t)?D.True:P.IsTuple(t)?cr.IsUndefined(e.items)&&!cr.IsUndefined(t.items)||!cr.IsUndefined(e.items)&&cr.IsUndefined(t.items)?D.False:cr.IsUndefined(e.items)&&!cr.IsUndefined(t.items)||e.items.every((r,n)=>Be(r,t.items[n])===D.True)?D.True:D.False:D.False}function d3(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsUint8Array(t)?D.True:D.False}function h3(e,t){return Rt(t)?Nt(e,t):P.IsObject(t)?lr(e,t):P.IsRecord(t)?pn(e,t):P.IsVoid(t)?g3(e,t):P.IsUndefined(t)?D.True:D.False}function W0(e,t){return t.anyOf.some(r=>Be(e,r)===D.True)?D.True:D.False}function y3(e,t){return e.anyOf.every(r=>Be(r,t)===D.True)?D.True:D.False}function q2(e,t){return D.True}function b3(e,t){return P.IsNever(t)?B2(e,t):P.IsIntersect(t)?Zl(e,t):P.IsUnion(t)?W0(e,t):P.IsAny(t)?Y0(e,t):P.IsString(t)?K2(e,t):P.IsNumber(t)?z2(e,t):P.IsInteger(t)?U2(e,t):P.IsBoolean(t)?j2(e,t):P.IsArray(t)?$5(e,t):P.IsTuple(t)?p3(e,t):P.IsObject(t)?lr(e,t):P.IsUnknown(t)?D.True:D.False}function g3(e,t){return P.IsUndefined(e)||P.IsUndefined(e)?D.True:D.False}function x3(e,t){return P.IsIntersect(t)?Zl(e,t):P.IsUnion(t)?W0(e,t):P.IsUnknown(t)?q2(e,t):P.IsAny(t)?Y0(e,t):P.IsObject(t)?lr(e,t):P.IsVoid(t)?D.True:D.False}function Be(e,t){return P.IsTemplateLiteral(e)||P.IsTemplateLiteral(t)?u3(e,t):P.IsRegExp(e)||P.IsRegExp(t)?s3(e,t):P.IsNot(e)||P.IsNot(t)?W5(e,t):P.IsAny(e)?F5(e,t):P.IsArray(e)?D5(e,t):P.IsBigInt(e)?V5(e,t):P.IsBoolean(e)?j5(e,t):P.IsAsyncIterator(e)?L5(e,t):P.IsConstructor(e)?U5(e,t):P.IsDate(e)?B5(e,t):P.IsFunction(e)?z5(e,t):P.IsInteger(e)?G5(e,t):P.IsIntersect(e)?K5(e,t):P.IsIterator(e)?q5(e,t):P.IsLiteral(e)?H5(e,t):P.IsNever(e)?Y5(e,t):P.IsNull(e)?X5(e,t):P.IsNumber(e)?Z5(e,t):P.IsObject(e)?o3(e,t):P.IsRecord(e)?a3(e,t):P.IsString(e)?c3(e,t):P.IsSymbol(e)?f3(e,t):P.IsTuple(e)?m3(e,t):P.IsPromise(e)?i3(e,t):P.IsUint8Array(e)?d3(e,t):P.IsUndefined(e)?h3(e,t):P.IsUnion(e)?y3(e,t):P.IsUnknown(e)?b3(e,t):P.IsVoid(e)?x3(e,t):Gs(`Unknown left type operand '${e[$]}'`)}function Ki(e,t){return Be(e,t)}function w3(e,t,r,n,o){let i={};for(let a of globalThis.Object.getOwnPropertyNames(e))i[a]=Ks(e[a],t,r,n,rt(o));return i}function S3(e,t,r,n,o){return w3(e.properties,t,r,n,o)}function H2(e,t,r,n,o){let i=S3(e,t,r,n,o);return ke(i)}function I3(e,t,r,n){let o=Ki(e,t);return o===D.Union?Ee([r,n]):o===D.True?r:n}function Ks(e,t,r,n,o){return at(e)?H2(e,t,r,n,o):qr(e)?F(Y2(e,t,r,n,o)):F(I3(e,t,r,n),o)}function _3(e,t,r,n,o){return{[e]:Ks(Te(e),t,r,n,rt(o))}}function v3(e,t,r,n,o){return e.reduce((i,a)=>({...i,..._3(a,t,r,n,o)}),{})}function P3(e,t,r,n,o){return v3(e.keys,t,r,n,o)}function Y2(e,t,r,n,o){let i=P3(e,t,r,n,o);return ke(i)}function T3(e){return e.allOf.every(t=>Da(t))}function M3(e){return e.anyOf.some(t=>Da(t))}function O3(e){return!Da(e.not)}function Da(e){return e[$]==="Intersect"?T3(e):e[$]==="Union"?M3(e):e[$]==="Not"?O3(e):e[$]==="Undefined"}function W2(e,t){return qs($a(e),t)}function C3(e,t){let r=e.filter(n=>Ki(n,t)===D.False);return r.length===1?r[0]:Ee(r)}function qs(e,t,r={}){return Hr(e)?F(W2(e,t),r):at(e)?F(X2(e,t),r):F(Oe(e)?C3(e.anyOf,t):Ki(e,t)!==D.False?Se():e,r)}function k3(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=qs(e[n],t);return r}function R3(e,t){return k3(e.properties,t)}function X2(e,t){let r=R3(e,t);return ke(r)}function Z2(e,t){return Hs($a(e),t)}function N3(e,t){let r=e.filter(n=>Ki(n,t)!==D.False);return r.length===1?r[0]:Ee(r)}function Hs(e,t,r){return Hr(e)?F(Z2(e,t),r):at(e)?F(Q2(e,t),r):F(Oe(e)?N3(e.anyOf,t):Ki(e,t)!==D.False?e:Se(),r)}function A3(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Hs(e[n],t);return r}function E3(e,t){return A3(e.properties,t)}function Q2(e,t){let r=E3(e,t);return ke(r)}function J2(e,t){return En(e)?F(e.returns,t):Se(t)}function Jl(e){return kr(fr(e))}function La(e,t,r){return F({[$]:"Record",type:"object",patternProperties:{[e]:t}},r)}function X0(e,t,r){let n={};for(let o of e)n[o]=t;return Fe(n,{...r,[sn]:"Record"})}function F3(e,t,r){return Vl(e)?X0(Cr(e),t,r):La(e.pattern,t,r)}function $3(e,t,r){return X0(Cr(Ee(e)),t,r)}function D3(e,t,r){return X0([e.toString()],t,r)}function L3(e,t,r){return La(e.source,t,r)}function V3(e,t,r){let n=Pt(e.pattern)?Ui:e.pattern;return La(n,t,r)}function j3(e,t,r){return La(Ui,t,r)}function U3(e,t,r){return La(c2,t,r)}function B3(e,t,r){return Fe({true:t,false:t},r)}function z3(e,t,r){return La(ji,t,r)}function G3(e,t,r){return La(ji,t,r)}function ep(e,t,r={}){return Oe(e)?$3(e.anyOf,t,r):Hr(e)?F3(e,t,r):Kr(e)?D3(e.const,t,r):Zo(e)?B3(e,t,r):$n(e)?z3(e,t,r):Dn(e)?G3(e,t,r):C0(e)?L3(e,t,r):Qo(e)?V3(e,t,r):M0(e)?j3(e,t,r):Li(e)?U3(e,t,r):Se(r)}function tp(e){return globalThis.Object.getOwnPropertyNames(e.patternProperties)[0]}function eS(e){let t=tp(e);return t===Ui?wr():t===ji?cn():wr({pattern:t})}function rp(e){return e.patternProperties[tp(e)]}function K3(e,t){return t.parameters=Rf(e,t.parameters),t.returns=jn(e,t.returns),t}function q3(e,t){return t.parameters=Rf(e,t.parameters),t.returns=jn(e,t.returns),t}function H3(e,t){return t.allOf=Rf(e,t.allOf),t}function Y3(e,t){return t.anyOf=Rf(e,t.anyOf),t}function W3(e,t){return Pt(t.items)||(t.items=Rf(e,t.items)),t}function X3(e,t){return t.items=jn(e,t.items),t}function Z3(e,t){return t.items=jn(e,t.items),t}function Q3(e,t){return t.items=jn(e,t.items),t}function J3(e,t){return t.item=jn(e,t.item),t}function ek(e,t){let r=ok(e,t.properties);return{...t,...Fe(r)}}function tk(e,t){let r=jn(e,eS(t)),n=jn(e,rp(t)),o=ep(r,n);return{...t,...o}}function rk(e,t){return t.index in e?e[t.index]:Vn()}function nk(e,t){let r=ks(t),n=Or(t),o=jn(e,t);return r&&n?Jl(o):r&&!n?kr(o):!r&&n?fr(o):o}function ok(e,t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:nk(e,t[n])}),{})}function Rf(e,t){return t.map(r=>jn(e,r))}function jn(e,t){return En(t)?K3(e,t):Fn(t)?q3(e,t):mt(t)?H3(e,t):Oe(t)?Y3(e,t):Yr(t)?W3(e,t):Nn(t)?X3(e,t):ka(t)?Z3(e,t):Na(t)?Q3(e,t):Aa(t)?J3(e,t):Tt(t)?ek(e,t):Ea(t)?tk(e,t):O0(t)?rk(e,t):t}function tS(e,t){return jn(t,Os(e))}function rS(e){return F({[$]:"Integer",type:"integer"},e)}function ik(e,t,r){return{[e]:Un(Te(e),t,rt(r))}}function ak(e,t,r){return e.reduce((o,i)=>({...o,...ik(i,t,r)}),{})}function sk(e,t,r){return ak(e.keys,t,r)}function nS(e,t,r){let n=sk(e,t,r);return ke(n)}function ck(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toLowerCase(),r].join("")}function fk(e){let[t,r]=[e.slice(0,1),e.slice(1)];return[t.toUpperCase(),r].join("")}function uk(e){return e.toUpperCase()}function lk(e){return e.toLowerCase()}function pk(e,t,r){let n=Ds(e.pattern);if(!Fa(n))return{...e,pattern:oS(e.pattern,t)};let a=[...Mf(n)].map(u=>Te(u)),s=iS(a,t),c=Ee(s);return Ul([c],r)}function oS(e,t){return typeof e=="string"?t==="Uncapitalize"?ck(e):t==="Capitalize"?fk(e):t==="Uppercase"?uk(e):t==="Lowercase"?lk(e):e:e.toString()}function iS(e,t){return e.map(r=>Un(r,t))}function Un(e,t,r={}){return qr(e)?nS(e,t,r):Hr(e)?pk(e,t,r):Oe(e)?Ee(iS(e.anyOf,t),r):Kr(e)?Te(oS(e.const,t),r):F(e,r)}function aS(e,t={}){return Un(e,"Capitalize",t)}function sS(e,t={}){return Un(e,"Lowercase",t)}function cS(e,t={}){return Un(e,"Uncapitalize",t)}function fS(e,t={}){return Un(e,"Uppercase",t)}function mk(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=qi(e[o],t,rt(r));return n}function dk(e,t,r){return mk(e.properties,t,r)}function uS(e,t,r){let n=dk(e,t,r);return ke(n)}function hk(e,t){return e.map(r=>Z0(r,t))}function yk(e,t){return e.map(r=>Z0(r,t))}function bk(e,t){let{[t]:r,...n}=e;return n}function gk(e,t){return t.reduce((r,n)=>bk(r,n),e)}function xk(e,t,r){let n=dt(e,[ct,"$id","required","properties"]),o=gk(r,t);return Fe(o,n)}function wk(e){let t=e.reduce((r,n)=>$l(n)?[...r,Te(n)]:r,[]);return Ee(t)}function Z0(e,t){return mt(e)?ur(hk(e.allOf,t)):Oe(e)?Ee(yk(e.anyOf,t)):Tt(e)?xk(e,t,e.properties):Fe({})}function qi(e,t,r){let n=vt(t)?wk(t):t,o=ft(t)?Cr(t):t,i=gt(e),a=gt(t);return at(e)?uS(e,o,r):qr(t)?lS(e,t,r):i&&a?Qe("Omit",[e,n],r):!i&&a?Qe("Omit",[e,n],r):i&&!a?Qe("Omit",[e,n],r):F({...Z0(e,o),...r})}function Sk(e,t,r){return{[t]:qi(e,[t],rt(r))}}function Ik(e,t,r){return t.reduce((n,o)=>({...n,...Sk(e,o,r)}),{})}function _k(e,t,r){return Ik(e,t.keys,r)}function lS(e,t,r){let n=_k(e,t,r);return ke(n)}function vk(e,t,r){let n={};for(let o of globalThis.Object.getOwnPropertyNames(e))n[o]=Hi(e[o],t,rt(r));return n}function Pk(e,t,r){return vk(e.properties,t,r)}function pS(e,t,r){let n=Pk(e,t,r);return ke(n)}function Tk(e,t){return e.map(r=>Q0(r,t))}function Mk(e,t){return e.map(r=>Q0(r,t))}function Ok(e,t){let r={};for(let n of t)n in e&&(r[n]=e[n]);return r}function Ck(e,t,r){let n=dt(e,[ct,"$id","required","properties"]),o=Ok(r,t);return Fe(o,n)}function kk(e){let t=e.reduce((r,n)=>$l(n)?[...r,Te(n)]:r,[]);return Ee(t)}function Q0(e,t){return mt(e)?ur(Tk(e.allOf,t)):Oe(e)?Ee(Mk(e.anyOf,t)):Tt(e)?Ck(e,t,e.properties):Fe({})}function Hi(e,t,r){let n=vt(t)?kk(t):t,o=ft(t)?Cr(t):t,i=gt(e),a=gt(t);return at(e)?pS(e,o,r):qr(t)?mS(e,t,r):i&&a?Qe("Pick",[e,n],r):!i&&a?Qe("Pick",[e,n],r):i&&!a?Qe("Pick",[e,n],r):F({...Q0(e,o),...r})}function Rk(e,t,r){return{[t]:Hi(e,[t],rt(r))}}function Nk(e,t,r){return t.reduce((n,o)=>({...n,...Rk(e,o,r)}),{})}function Ak(e,t,r){return Nk(e,t.keys,r)}function mS(e,t,r){let n=Ak(e,t,r);return ke(n)}function Ek(e,t){return Qe("Partial",[Qe(e,t)])}function Fk(e){return Qe("Partial",[mo(e)])}function $k(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=fr(e[r]);return t}function Dk(e,t){let r=dt(e,[ct,"$id","required","properties"]),n=$k(t);return Fe(n,r)}function dS(e){return e.map(t=>hS(t))}function hS(e){return An(e)?Ek(e.target,e.parameters):gt(e)?Fk(e.$ref):mt(e)?ur(dS(e.allOf)):Oe(e)?Ee(dS(e.anyOf)):Tt(e)?Dk(e,e.properties):Ra(e)||Zo(e)||$n(e)||Kr(e)||wf(e)||Dn(e)||Qo(e)||Sf(e)||Jo(e)?e:Fe({})}function Ys(e,t){return at(e)?yS(e,t):F({...hS(e),...t})}function Lk(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Ys(e[n],rt(t));return r}function Vk(e,t){return Lk(e.properties,t)}function yS(e,t){let r=Vk(e,t);return ke(r)}function jk(e,t){return Qe("Required",[Qe(e,t)])}function Uk(e){return Qe("Required",[mo(e)])}function Bk(e){let t={};for(let r of globalThis.Object.getOwnPropertyNames(e))t[r]=dt(e[r],[er]);return t}function zk(e,t){let r=dt(e,[ct,"$id","required","properties"]),n=Bk(t);return Fe(n,r)}function bS(e){return e.map(t=>gS(t))}function gS(e){return An(e)?jk(e.target,e.parameters):gt(e)?Uk(e.$ref):mt(e)?ur(bS(e.allOf)):Oe(e)?Ee(bS(e.anyOf)):Tt(e)?zk(e,e.properties):Ra(e)||Zo(e)||$n(e)||Kr(e)||wf(e)||Dn(e)||Qo(e)||Sf(e)||Jo(e)?e:Fe({})}function Ws(e,t){return at(e)?xS(e,t):F({...gS(e),...t})}function Gk(e,t){let r={};for(let n of globalThis.Object.getOwnPropertyNames(e))r[n]=Ws(e[n],t);return r}function Kk(e,t){return Gk(e.properties,t)}function xS(e,t){let r=Kk(e,t);return ke(r)}function qk(e,t){return t.map(r=>gt(r)?J0(e,r.$ref):Wr(e,r))}function J0(e,t){return t in e?gt(e[t])?J0(e,e[t].$ref):Wr(e,e[t]):Se()}function Hk(e){return Us(e[0])}function Yk(e){return Gi(e[0],e[1])}function Wk(e){return zs(e[0])}function Xk(e){return Ys(e[0])}function Zk(e){return qi(e[0],e[1])}function Qk(e){return Hi(e[0],e[1])}function Jk(e){return Ws(e[0])}function eR(e,t,r){let n=qk(e,r);return t==="Awaited"?Hk(n):t==="Index"?Yk(n):t==="KeyOf"?Wk(n):t==="Partial"?Xk(n):t==="Omit"?Zk(n):t==="Pick"?Qk(n):t==="Required"?Jk(n):Se()}function tR(e,t){return As(Wr(e,t))}function rR(e,t){return Es(Wr(e,t))}function nR(e,t,r){return Fs(Nf(e,t),Wr(e,r))}function oR(e,t,r){return lo(Nf(e,t),Wr(e,r))}function iR(e,t){return ur(Nf(e,t))}function aR(e,t){return js(Wr(e,t))}function sR(e,t){return Fe(globalThis.Object.keys(t).reduce((r,n)=>({...r,[n]:Wr(e,t[n])}),{}))}function cR(e,t){let[r,n]=[Wr(e,rp(t)),tp(t)],o=Os(t);return o.patternProperties[n]=r,o}function fR(e,t){return gt(t)?{...J0(e,t.$ref),[ct]:t[ct]}:t}function uR(e,t){return fn(Nf(e,t))}function lR(e,t){return Ee(Nf(e,t))}function Nf(e,t){return t.map(r=>Wr(e,r))}function Wr(e,t){return Or(t)?F(Wr(e,dt(t,[er])),t):ks(t)?F(Wr(e,dt(t,[Rn])),t):Ae(t)?F(fR(e,t),t):Nn(t)?F(tR(e,t.items),t):ka(t)?F(rR(e,t.items),t):An(t)?F(eR(e,t.target,t.parameters)):En(t)?F(nR(e,t.parameters,t.returns),t):Fn(t)?F(oR(e,t.parameters,t.returns),t):mt(t)?F(iR(e,t.allOf),t):Na(t)?F(aR(e,t.items),t):Tt(t)?F(sR(e,t.properties),t):Ea(t)?F(cR(e,t)):Yr(t)?F(uR(e,t.items||[]),t):Oe(t)?F(lR(e,t.anyOf),t):t}function pR(e,t){return t in e?Wr(e,e[t]):Se()}function wS(e){return globalThis.Object.getOwnPropertyNames(e).reduce((t,r)=>({...t,[r]:pR(e,r)}),{})}var ey=class{constructor(t){let r=wS(t),n=this.WithIdentifiers(r);this.$defs=n}Import(t,r){let n={...this.$defs,[t]:F(this.$defs[t],r)};return F({[$]:"Import",$defs:n,$ref:t})}WithIdentifiers(t){return globalThis.Object.getOwnPropertyNames(t).reduce((r,n)=>({...r,[n]:{...t[n],$id:n}}),{})}};function SS(e){return new ey(e)}function IS(e,t){return F({[$]:"Not",not:e},t)}function _S(e,t){return Fn(e)?fn(e.parameters,t):Se()}var mR=0;function vS(e,t={}){Pt(t.$id)&&(t.$id=`T${mR++}`);let r=Os(e({[$]:"This",$ref:`${t.$id}`}));return r.$id=t.$id,F({[sn]:"Recursive",...r},t)}function PS(e,t){let r=We(e)?new globalThis.RegExp(e):e;return F({[$]:"RegExp",type:"RegExp",source:r.source,flags:r.flags},t)}function dR(e){return mt(e)?e.allOf:Oe(e)?e.anyOf:Yr(e)?e.items??[]:[]}function TS(e){return dR(e)}function MS(e,t){return Fn(e)?F(e.returns,t):Se(t)}var ty=class{constructor(t){this.schema=t}Decode(t){return new ry(this.schema,t)}},ry=class{constructor(t,r){this.schema=t,this.decode=r}EncodeTransform(t,r){let i={Encode:a=>r[ct].Encode(t(a)),Decode:a=>this.decode(r[ct].Decode(a))};return{...r,[ct]:i}}EncodeSchema(t,r){let n={Decode:this.decode,Encode:t};return{...r,[ct]:n}}Encode(t){return Ae(this.schema)?this.EncodeTransform(t,this.schema):this.EncodeSchema(t,this.schema)}};function OS(e){return new ty(e)}function CS(e={}){return F({[$]:e[$]??"Unsafe"},e)}function kS(e){return F({[$]:"Void",type:"void"},e)}var ny={};Oa(ny,{Any:()=>zi,Argument:()=>m2,Array:()=>As,AsyncIterator:()=>Es,Awaited:()=>Us,BigInt:()=>Vs,Boolean:()=>jl,Capitalize:()=>aS,Composite:()=>N2,Const:()=>A2,Constructor:()=>Fs,ConstructorParameters:()=>E2,Date:()=>Kl,Enum:()=>F2,Exclude:()=>qs,Extends:()=>Ks,Extract:()=>Hs,Function:()=>lo,Index:()=>Gi,InstanceType:()=>J2,Instantiate:()=>tS,Integer:()=>rS,Intersect:()=>ur,Iterator:()=>js,KeyOf:()=>zs,Literal:()=>Te,Lowercase:()=>sS,Mapped:()=>T2,Module:()=>SS,Never:()=>Se,Not:()=>IS,Null:()=>ql,Number:()=>cn,Object:()=>Fe,Omit:()=>qi,Optional:()=>fr,Parameters:()=>_S,Partial:()=>Ys,Pick:()=>Hi,Promise:()=>zl,Readonly:()=>kr,ReadonlyOptional:()=>Jl,Record:()=>ep,Recursive:()=>vS,Ref:()=>mo,RegExp:()=>PS,Required:()=>Ws,Rest:()=>TS,ReturnType:()=>MS,String:()=>wr,Symbol:()=>Hl,TemplateLiteral:()=>Ul,Transform:()=>OS,Tuple:()=>fn,Uint8Array:()=>Wl,Uncapitalize:()=>cS,Undefined:()=>Yl,Union:()=>Ee,Unknown:()=>Vn,Unsafe:()=>CS,Uppercase:()=>fS,Void:()=>kS});var d=ny;var Bn=d.Object({label:d.String(),domain:d.Optional(d.Tuple([d.Number(),d.Number()]))}),Af=d.Object({type:d.Union([d.Literal("identity"),d.Literal("horizontal"),d.Literal("vertical")]),value:d.Optional(d.Number())}),kQ=d.Object({schemaVersion:d.Literal("1.0"),title:d.Optional(d.String()),xAxis:Bn,yAxis:Bn,references:d.Optional(d.Array(Af))});var hR=d.Object({model:d.String(),population:d.Optional(d.String()),horizon:d.Optional(d.Number()),predicted:d.Number({minimum:0,maximum:1}),observed:d.Number({minimum:0,maximum:1}),method:d.Union([d.Literal("discrete"),d.Literal("smooth")]),events:d.Optional(d.Number({minimum:0})),total:d.Optional(d.Number({minimum:0}))}),yR=d.Object({model:d.String(),population:d.Optional(d.String()),horizon:d.Optional(d.Number()),midpoint:d.Number({minimum:0,maximum:1}),count:d.Number({minimum:0}),binWidth:d.Number({exclusiveMinimum:0,maximum:1})}),oy=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("calibration"),data:d.Array(hR),distribution:d.Optional(d.Array(yR)),x:d.Literal("predicted"),y:d.Literal("observed"),xAxis:Bn,yAxis:Bn,references:d.Optional(d.Array(Af))});var bR=d.Object({model:d.String(),population:d.Optional(d.String()),horizon:d.Optional(d.Number()),cutoff:d.Number(),sensitivity:d.Number({minimum:0,maximum:1}),specificity:d.Number({minimum:0,maximum:1})}),iy=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("roc"),data:d.Array(bR),x:d.Literal("false_positive_rate"),y:d.Literal("sensitivity"),xAxis:Bn,yAxis:Bn,references:d.Optional(d.Array(Af))});var gR=d.Union([iy,oy],{$id:"https://rtichoke.dev/schema/viz/1.0.json",title:"rtichoke visualization specification"});var Xr=d.Object({id:d.String(),model:d.Optional(d.String()),population:d.String(),label:d.Optional(d.String())}),RS=d.Union([d.Literal("model"),d.Literal("population"),d.Literal("evaluation"),d.Literal("context")]),NS=d.Object({label:d.String(),group:d.String(),role:RS}),Xs=d.Object({id:d.String(),evaluationId:d.String(),horizon:d.Optional(d.Number({minimum:0})),display:NS}),xR=d.Object({x:d.Number(),y:d.Number()}),ay=d.Union([d.Object({type:d.Literal("identity"),label:d.Optional(d.String())}),d.Object({type:d.Literal("horizontal"),value:d.Number(),label:d.Optional(d.String())}),d.Object({type:d.Literal("vertical"),value:d.Number(),label:d.Optional(d.String())}),d.Object({type:d.Literal("path"),points:d.Array(xR,{minItems:2}),label:d.Optional(d.String())})]),wR=d.Intersect([ay,d.Object({scope:d.Literal("global")})]),SR=d.Intersect([ay,d.Object({scope:d.Literal("population"),population:d.String()})]),IR=d.Intersect([ay,d.Object({scope:d.Literal("population_horizon"),population:d.String(),horizon:d.Number({minimum:0})})]),AS=d.Union([wR,SR,IR]),Ar=d.Object({schemaVersion:d.Literal("2.0"),title:d.Optional(d.String()),evaluations:d.Array(Xr),series:d.Array(Xs),xAxis:Bn,yAxis:Bn,references:d.Optional(d.Array(AS))}),Ef=d.Union([d.Literal("probability_threshold"),d.Literal("ppcr")]),ri=d.Object({operatingPoint:d.Optional(d.Object({dimension:Ef}))}),np=d.Object({operatingPoint:d.Optional(d.Object({dimension:d.Literal("probability_threshold")}))});var ES=d.Object({seriesId:d.String(),predicted:d.Number({minimum:0,maximum:1}),observed:d.Number({minimum:0,maximum:1}),method:d.Literal("discrete"),events:d.Optional(d.Number({minimum:0})),total:d.Optional(d.Number({minimum:0}))}),FS=d.Object({seriesId:d.String(),predicted:d.Number({minimum:0,maximum:1}),observed:d.Number(),method:d.Literal("smooth"),events:d.Optional(d.Number({minimum:0})),total:d.Optional(d.Number({minimum:0}))}),$S=d.Union([ES,FS]),_R=d.Object({seriesId:d.String(),midpoint:d.Number({minimum:0,maximum:1}),count:d.Number({minimum:0}),binWidth:d.Number({exclusiveMinimum:0,maximum:1})}),sy=d.Intersect([Ar,d.Object({type:d.Literal("calibration"),data:d.Array($S),distribution:d.Optional(d.Array(_R)),x:d.Literal("predicted"),y:d.Literal("observed")})]);var LS=d.Object({seriesId:d.String(),threshold:d.Number({minimum:0,maximum:1}),netBenefit:d.Number()}),VS=d.Intersect([Xr,d.Object({id:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),jS=d.Intersect([Xs,d.Object({id:d.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),US=d.Object({type:d.Literal("horizontal"),value:d.Literal(0),label:d.Optional(d.String()),scope:d.Literal("global"),benchmark:d.Literal("treat_none")}),DS={type:d.Literal("path"),points:d.Array(d.Object({x:d.Number(),y:d.Number()}),{minItems:2}),label:d.Optional(d.String()),benchmark:d.Literal("treat_all")},BS=d.Union([d.Object({...DS,scope:d.Literal("population"),population:d.String()}),d.Object({...DS,scope:d.Literal("population_horizon"),population:d.String(),horizon:d.Number({minimum:0})})]),zS=d.Union([US,BS]),cy=d.Intersect([Ar,np,d.Object({type:d.Literal("decision_curve"),evaluations:d.Array(VS,{minItems:1}),series:d.Array(jS,{minItems:1}),data:d.Array(LS),x:d.Literal("threshold"),y:d.Literal("netBenefit"),references:d.Array(zS,{minItems:2})})]);var vR=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Number({minimum:0,maximum:1}),sensitivity:d.Number({minimum:0,maximum:1})}),fy=d.Intersect([Ar,ri,d.Object({type:d.Literal("gains"),data:d.Array(vR),x:d.Literal("ppcr"),y:d.Literal("sensitivity")})]);var KS=d.Object({seriesId:d.String(),threshold:d.Number({minimum:0,maximum:1}),interventionsAvoided:d.Number()}),qS=d.Intersect([Xr,d.Object({id:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),HS=d.Intersect([Xs,d.Object({id:d.String({pattern:"^series-[1-9][0-9]*$"}),evaluationId:d.String({pattern:"^evaluation-[1-9][0-9]*$"})})]),YS=d.Object({type:d.Literal("horizontal"),value:d.Literal(0),label:d.Optional(d.String()),scope:d.Literal("global"),benchmark:d.Literal("treat_all")}),GS={type:d.Literal("path"),points:d.Array(d.Object({x:d.Number(),y:d.Number()}),{minItems:2}),label:d.Optional(d.String()),benchmark:d.Literal("treat_none")},WS=d.Union([d.Object({...GS,scope:d.Literal("population"),population:d.String()}),d.Object({...GS,scope:d.Literal("population_horizon"),population:d.String(),horizon:d.Number({minimum:0})})]),XS=d.Union([YS,WS]),uy=d.Intersect([Ar,np,d.Object({type:d.Literal("interventions_avoided"),evaluations:d.Array(qS,{minItems:1}),series:d.Array(HS,{minItems:1}),data:d.Array(KS),x:d.Literal("threshold"),y:d.Literal("interventionsAvoided"),references:d.Array(XS,{minItems:2})})]);var PR=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Number({minimum:0,maximum:1}),lift:d.Number()}),ly=d.Intersect([Ar,ri,d.Object({type:d.Literal("lift"),data:d.Array(PR),x:d.Literal("ppcr"),y:d.Literal("lift")})]);var TR=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Optional(d.Number({minimum:0,maximum:1})),sensitivity:d.Number({minimum:0,maximum:1}),ppv:d.Number({minimum:0,maximum:1})}),py=d.Intersect([Ar,ri,d.Object({type:d.Literal("precision_recall"),data:d.Array(TR),x:d.Literal("sensitivity"),y:d.Literal("ppv")})]);var my=d.Union([d.Literal("true_positives"),d.Literal("true_negatives"),d.Literal("false_positives"),d.Literal("false_negatives"),d.Literal("sensitivity"),d.Literal("specificity"),d.Literal("false_positive_rate"),d.Literal("ppv"),d.Literal("npv"),d.Literal("lift"),d.Literal("predicted_positives"),d.Literal("ppcr"),d.Literal("net_benefit"),d.Literal("net_benefit_interventions_avoided")]),ZS=d.Object({id:my,label:d.String()}),op=d.Object({metricId:my,estimate:d.Union([d.Number(),d.Null()]),lower:d.Optional(d.Union([d.Number(),d.Null()])),upper:d.Optional(d.Union([d.Number(),d.Null()]))}),QS=d.Union([d.Object({type:d.Literal("probability_threshold"),value:d.Number()}),d.Object({type:d.Literal("ppcr"),value:d.Number({minimum:0,maximum:1})})]),JS=d.Object({censoringHeuristic:d.Optional(d.String()),competingEventHeuristic:d.Optional(d.String())}),eI=d.Object({evaluationId:d.String(),horizon:d.Optional(d.Number({minimum:0})),operatingPoint:QS,context:d.Optional(JS),values:d.Array(op)}),dy=d.Object({schemaVersion:d.Literal("2.0"),type:d.Literal("performance_table"),title:d.Optional(d.String()),evaluations:d.Array(Xr),metrics:d.Array(ZS),rows:d.Array(eI)});var tI=d.Object({evaluationId:d.String(),lower:d.Number({minimum:0,maximum:1}),upper:d.Number({minimum:0,maximum:1}),includeLower:d.Boolean(),includeUpper:d.Boolean(),nPositive:d.Integer({minimum:0}),nNegative:d.Integer({minimum:0})}),MR=d.Object({evaluationId:d.String(),rankLower:d.Number({minimum:0,maximum:1}),rankUpper:d.Number({minimum:0,maximum:1}),positiveMass:d.Number({minimum:0}),negativeMass:d.Number({minimum:0})}),rI=d.Object({evaluationId:d.String(),type:Ef,value:d.Number({minimum:0,maximum:1}),cutoff:d.Number({minimum:0,maximum:1}),realizedPpcr:d.Number({minimum:0,maximum:1}),performance:d.Optional(d.Array(op))}),Ff=d.Object({schemaVersion:d.Literal("2.0"),type:d.Literal("prediction_distribution"),title:d.Optional(d.String()),evaluations:d.Array(Xr,{minItems:1}),operatingPoint:d.Optional(d.Object({dimension:Ef})),bins:d.Array(tI,{minItems:1}),rankBins:d.Optional(d.Array(MR)),operatingPoints:d.Array(rI,{minItems:1})});var OR=d.Object({seriesId:d.String(),cutoff:d.Number(),ppcr:d.Optional(d.Number({minimum:0,maximum:1})),sensitivity:d.Number({minimum:0,maximum:1}),specificity:d.Number({minimum:0,maximum:1})}),hy=d.Intersect([Ar,ri,d.Object({type:d.Literal("roc"),data:d.Array(OR),x:d.Literal("false_positive_rate"),y:d.Literal("sensitivity")})]);var yy=d.Union([hy,sy,py,fy,ly,cy,uy,Ff],{$id:"https://rtichoke.dev/schema/viz/2.0.json",title:"rtichoke visualization specification v2"});var by=d.Object({id:d.String(),label:d.String()}),gy=d.Object({metric:d.Literal("auroc"),owner:d.Object({type:d.Literal("evaluation"),evaluationId:d.String()}),estimate:d.Union([d.Number(),d.Null()])}),xy=d.Object({metric:d.Literal("prevalence"),owner:d.Object({type:d.Literal("population"),populationId:d.String()}),estimate:d.Union([d.Number(),d.Null()])}),CR=d.Object({metric:d.Literal("event_risk"),owner:d.Object({type:d.Literal("population"),populationId:d.String()}),horizon:d.Number({minimum:0}),estimate:d.Union([d.Number(),d.Null()])}),kR=d.Union([gy,xy]),nI=d.Union([gy,xy,CR]),RR=nI,NR=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("summary_metrics"),title:d.Optional(d.String()),evaluations:d.Array(Xr),populations:d.Array(by),metrics:d.Array(kR)}),AR=d.Object({schemaVersion:d.Literal("1.1"),type:d.Literal("summary_metrics"),title:d.Optional(d.String()),evaluations:d.Array(Xr),populations:d.Array(by),metrics:d.Array(nI)}),wy=d.Union([NR,AR],{$id:"https://rtichoke.dev/schema/viz/summary-metrics.json",title:"rtichoke summary metrics specification"});var Sy=d.Union([yy,dy,wy,Ff]),oI=d.Object({id:d.String(),title:d.Optional(d.String()),spec:Sy}),ip=d.Object({schemaVersion:d.Literal("1.0"),type:d.Literal("report"),title:d.Optional(d.String()),components:d.Array(oI,{minItems:1})}),Iy=d.Object({type:d.Literal("component"),id:d.String(),title:d.Optional(d.String()),spec:Sy}),iI=d.Object({type:d.Literal("group"),id:d.String(),title:d.String(),components:d.Array(Iy,{minItems:1})}),aI=d.Object({id:d.String(),title:d.String(),items:d.Array(d.Union([Iy,iI]),{minItems:1})}),ap=d.Object({schemaVersion:d.Literal("1.1"),type:d.Literal("report"),title:d.Optional(d.String()),sections:d.Array(aI,{minItems:1})}),ER=d.Union([ip,ap],{$id:"https://rtichoke.dev/schema/viz/report.json",title:"rtichoke report specification"});function sp(e){let t=new Set,r=i=>{if(t.has(i.id))throw new Error(`duplicate component id: ${i.id}`);t.add(i.id)};if(e.schemaVersion==="1.0"){for(let i of e.components)r(i);return}let n=new Set,o=new Set;for(let i of e.sections){if(n.has(i.id))throw new Error(`duplicate section id: ${i.id}`);n.add(i.id);for(let a of i.items){if(a.type==="component"){r(a);continue}if(o.has(a.id))throw new Error(`duplicate group id: ${a.id}`);o.add(a.id);for(let s of a.components)r(s)}}}function _y(e){let t=new Set;for(let n of e.evaluations){if(t.has(n.id))throw new Error(`duplicate evaluation id: ${n.id}`);t.add(n.id)}let r=new Set;for(let n of e.metrics){if(r.has(n.id))throw new Error(`duplicate metric id: ${n.id}`);r.add(n.id)}for(let n of e.rows){if(!t.has(n.evaluationId))throw new Error(`unknown evaluation id: ${n.evaluationId}`);for(let o of n.values)if(!r.has(o.metricId))throw new Error(`unknown metric id: ${o.metricId}`)}}function $f(e){if(e.operatingPoint?.dimension){let i=e.operatingPoint.dimension;if(!e.operatingPoints.some(s=>s.type===i))throw new Error(`configured operatingPoint dimension ${i} is not present in operatingPoints`)}let t=new Set;for(let i of e.evaluations){if(t.has(i.id))throw new Error(`duplicate evaluation id: ${i.id}`);t.add(i.id)}let r=new Map;for(let i of e.bins){if(!t.has(i.evaluationId))throw new Error(`unknown evaluation id: ${i.evaluationId}`);let a=r.get(i.evaluationId);a||(a=[],r.set(i.evaluationId,a)),a.push(i)}let n=new Map,o=new Set;for(let i of e.operatingPoints){if(!t.has(i.evaluationId))throw new Error(`unknown evaluation id: ${i.evaluationId}`);let a=`${i.evaluationId}\0${i.type}\0${i.value}`;if(o.has(a))throw new Error(`duplicate operating point: evaluationId=${i.evaluationId}, type=${i.type}, value=${i.value}`);if(o.add(a),!Number.isFinite(i.value)||i.value<0||i.value>1||!Number.isFinite(i.cutoff)||i.cutoff<0||i.cutoff>1||!Number.isFinite(i.realizedPpcr)||i.realizedPpcr<0||i.realizedPpcr>1)throw new Error(`invalid operating point bounds for evaluation ${i.evaluationId}`);if(i.type==="probability_threshold"&&Math.abs(i.value-i.cutoff)>1e-9)throw new Error(`probability_threshold value ${i.value} must equal cutoff ${i.cutoff} for evaluation ${i.evaluationId}`);let s=n.get(i.evaluationId);s||(s=[],n.set(i.evaluationId,s)),s.push(i)}for(let i of t){let a=r.get(i);if(!a||a.length===0)throw new Error(`evaluation ${i} has no bins`);let s=n.get(i);if(!s||s.length===0)throw new Error(`evaluation ${i} has no operating points`);let c=a[0];if(c.lower!==0||c.upper!==0||c.includeLower!==!0||c.includeUpper!==!0)throw new Error(`first bin for evaluation ${i} must be [0, 0]`);let u=new Set([0]),f=c.nPositive+c.nNegative;if(!Number.isInteger(c.nPositive)||c.nPositive<0||!Number.isInteger(c.nNegative)||c.nNegative<0)throw new Error(`invalid bin counts for evaluation ${i}`);for(let m=1;m1||!Number.isFinite(l.upper)||l.upper<0||l.upper>1)throw new Error(`invalid bin bounds for evaluation ${i}`);if(!Number.isInteger(l.nPositive)||l.nPositive<0||!Number.isInteger(l.nNegative)||l.nNegative<0)throw new Error(`invalid bin counts for evaluation ${i}`);if(l.includeLower!==!1||l.includeUpper!==!0)throw new Error(`bin ${m} for evaluation ${i} must be (lower, upper]`);if(l.lower>=l.upper)throw new Error(`bin ${m} for evaluation ${i} must be nondegenerate`);if(l.lower!==a[m-1].upper)throw new Error(`bins for evaluation ${i} must be contiguous and ascending`);u.add(l.upper),f+=l.nPositive+l.nNegative}if(a[a.length-1].upper!==1)throw new Error(`final bin upper bound for evaluation ${i} must be 1`);if(f<=0)throw new Error(`total count for evaluation ${i} must be positive`);for(let m of s)if(m.type==="probability_threshold"){if(m.cutoff!==0&&!u.has(m.cutoff))throw new Error(`operating point cutoff ${m.cutoff} for evaluation ${i} does not match any bin upper boundary`);let l=0;if(m.cutoff===0)l=f;else for(let h of a)h.upper>m.cutoff&&(l+=h.nPositive+h.nNegative);let p=l/f;if(Math.abs(m.realizedPpcr-p)>1e-6)throw new Error(`operating point realizedPpcr ${m.realizedPpcr} for evaluation ${i} does not match reconstructed count fraction ${p}`)}}}function vy(e){let t=new Set;for(let o of e.evaluations){if(t.has(o.id))throw new Error(`duplicate evaluation id: ${o.id}`);t.add(o.id)}let r=new Set;for(let o of e.populations){if(r.has(o.id))throw new Error(`duplicate population id: ${o.id}`);r.add(o.id)}let n=new Set;for(let o of e.metrics){if(o.estimate!==null&&!Number.isFinite(o.estimate))throw new Error(`non-finite metric estimate: ${o.estimate}`);if("horizon"in o&&o.horizon!==void 0&&(!Number.isFinite(o.horizon)||o.horizon<0))throw new Error(`invalid horizon: ${o.horizon}`);if(o.metric==="auroc"){if("horizon"in o&&o.horizon!==void 0)throw new Error("auroc metric cannot specify horizon");if(!t.has(o.owner.evaluationId))throw new Error(`unknown evaluation id: ${o.owner.evaluationId}`);let i=`auroc:${o.owner.evaluationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: auroc for evaluation ${o.owner.evaluationId}`);n.add(i)}else if(o.metric==="prevalence"){if("horizon"in o&&o.horizon!==void 0)throw new Error("prevalence metric cannot specify horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`prevalence:${o.owner.populationId}`;if(n.has(i))throw new Error(`duplicate metric ownership: prevalence for population ${o.owner.populationId}`);n.add(i)}else if(o.metric==="event_risk"){if(e.schemaVersion!=="1.1")throw new Error(`event_risk metric requires schemaVersion 1.1, got ${e.schemaVersion}`);if(!("horizon"in o)||o.horizon===void 0)throw new Error("event_risk metric requires horizon");if(!r.has(o.owner.populationId))throw new Error(`unknown population id: ${o.owner.populationId}`);let i=`event_risk:${o.owner.populationId}:${o.horizon}`;if(n.has(i))throw new Error(`duplicate metric ownership: event_risk for population ${o.owner.populationId} at horizon ${o.horizon}`);n.add(i)}}}function ni(e){if(e.type==="prediction_distribution"){$f(e);return}let t=new Set(e.evaluations.map(o=>o.id)),r=new Set;if(t.size!==e.evaluations.length)throw new Error("duplicate evaluation id");for(let o of e.series){if(r.has(o.id))throw new Error(`duplicate series id: ${o.id}`);if(r.add(o.id),!t.has(o.evaluationId))throw new Error(`unknown evaluation id: ${o.evaluationId}`)}for(let o of e.data)if(!r.has(o.seriesId))throw new Error(`unknown series id: ${o.seriesId}`);if(e.type==="calibration"){for(let o of e.distribution??[])if(!r.has(o.seriesId))throw new Error(`unknown distribution series id: ${o.seriesId}`)}let n=new Set(e.evaluations.map(o=>o.population));for(let o of e.references??[])if((o.scope==="population"||o.scope==="population_horizon")&&!n.has(o.population))throw new Error(`unknown reference population: ${o.population}`);if(e.type==="decision_curve"){let o=e,i=o.references;o.evaluations.forEach((h,y)=>{let b=`evaluation-${y+1}`;if(h.id!==b)throw new Error(`decision curve evaluation ids must be ordinal: expected ${b}`)});let a=o.series.filter(h=>h.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("decision curve cannot mix static and horizon-qualified series");let s=a>0,c=[...new Set(o.series.map(h=>h.horizon).filter(h=>h!==void 0))],u=new Set;if(o.series.forEach((h,y)=>{if(h.id!==`series-${y+1}`)throw new Error(`decision curve series ids must be ordinal: expected series-${y+1}`);let b=o.evaluations.find(x=>x.id===h.evaluationId),w=b.model??b.population,g=b.model===void 0?"population":"model";if(h.display.label!==w||h.display.group!==w||h.display.role!==g)throw new Error("decision curve display must follow evaluation semantics");let _=`${h.evaluationId}\0${h.horizon??"static"}`;if(u.has(_))throw new Error(`duplicate decision curve evaluation-horizon series: ${h.evaluationId}`);u.add(_)}),s){if(!o.evaluations.every(y=>c.every(b=>u.has(`${y.id}\0${b}`)))||o.series.length!==o.evaluations.length*c.length)throw new Error("decision curve requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(h=>!u.has(`${h.id}\0static`)))throw new Error("decision curve requires exactly one series per evaluation");if(i.filter(h=>"benchmark"in h&&h.benchmark==="treat_none").length!==1)throw new Error("decision curve requires exactly one Treat None reference");let m=i.filter(h=>"benchmark"in h&&h.benchmark==="treat_all"),l=new Set;for(let h of m){if(s&&h.scope!=="population_horizon")throw new Error("time-dependent decision curve Treat All must use population_horizon scope");if(!s&&h.scope!=="population")throw new Error("static decision curve Treat All must use population scope");let y=h.scope==="population_horizon"?`${h.population}\0${h.horizon}`:h.population;if(l.has(y))throw new Error(`duplicate Treat All owner: ${h.population}`);l.add(y)}let p=s?[...n].flatMap(h=>c.map(y=>`${h}\0${y}`)):[...n];if(l.size!==p.length||p.some(h=>!l.has(h)))throw new Error(s?"decision curve requires exactly one Treat All reference per population and horizon":"decision curve requires exactly one Treat All reference per population")}if(e.type==="interventions_avoided"){let o=e,i=o.references;o.evaluations.forEach((h,y)=>{let b=`evaluation-${y+1}`;if(h.id!==b)throw new Error(`interventions avoided evaluation ids must be ordinal: expected ${b}`)});let a=o.series.filter(h=>h.horizon!==void 0).length;if(a!==0&&a!==o.series.length)throw new Error("interventions avoided cannot mix static and horizon-qualified series");let s=a>0,c=[...new Set(o.series.map(h=>h.horizon).filter(h=>h!==void 0))],u=new Set;if(o.series.forEach((h,y)=>{if(h.id!==`series-${y+1}`)throw new Error(`interventions avoided series ids must be ordinal: expected series-${y+1}`);let b=o.evaluations.find(x=>x.id===h.evaluationId);if(!b)throw new Error(`unknown evaluation id: ${h.evaluationId}`);let w=b.model??b.population,g=b.model===void 0?"population":"model";if(h.display.label!==w||h.display.group!==w||h.display.role!==g)throw new Error("interventions avoided display must follow evaluation semantics");let _=`${h.evaluationId}\0${h.horizon??"static"}`;if(u.has(_))throw new Error(`duplicate interventions avoided evaluation-horizon series: ${h.evaluationId}`);u.add(_)}),s){if(!o.evaluations.every(y=>c.every(b=>u.has(`${y.id}\0${b}`)))||o.series.length!==o.evaluations.length*c.length)throw new Error("interventions avoided requires exactly one series per evaluation and horizon")}else if(o.series.length!==o.evaluations.length||o.evaluations.some(h=>!u.has(`${h.id}\0static`)))throw new Error("interventions avoided requires exactly one series per evaluation");let f=i.filter(h=>"benchmark"in h&&h.benchmark==="treat_all");if(f.length!==1)throw new Error("interventions avoided requires exactly one Treat All reference");if(f[0].scope!=="global"||f[0].type!=="horizontal"||f[0].value!==0)throw new Error("interventions avoided Treat All must be the global zero reference");let m=i.filter(h=>"benchmark"in h&&h.benchmark==="treat_none"),l=new Set;for(let h of m){if(s&&h.scope!=="population_horizon")throw new Error("time-dependent interventions avoided Treat None must use population_horizon scope");if(!s&&h.scope!=="population")throw new Error("static interventions avoided Treat None must use population scope");let y=h.scope==="population_horizon"?`${h.population}\0${h.horizon}`:h.population;if(l.has(y))throw new Error(`duplicate Treat None owner: ${h.population}`);l.add(y)}let p=s?[...n].flatMap(h=>c.map(y=>`${h}\0${y}`)):[...n];if(l.size!==p.length||p.some(h=>!l.has(h)))throw new Error(s?"interventions avoided requires exactly one Treat None reference per population and horizon":"interventions avoided requires exactly one Treat None reference per population")}}function sI(e){return{schemaVersion:"1.0",type:"roc",data:e,x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity"}]}}function FR(e){return sI(e.map(t=>({model:t.model,cutoff:t.probability_threshold,sensitivity:t.sensitivity,specificity:t.specificity})))}function $R(e){return sI(e.map(t=>({model:t.reference_group,cutoff:t.chosen_cutoff,sensitivity:t.sensitivity,specificity:t.specificity})))}function DR(e,t,r){let n=e.map(i=>{let a=i.sum_reals??i.n_reals,s=i.total_obs??i.n;return{model:i.reference_group,predicted:i.x,observed:i.y,method:t,...t==="discrete"&&a!==void 0?{events:a}:{},...t==="discrete"&&s!==void 0?{total:s}:{}}}),o=r?.map(i=>({model:i.reference_group,midpoint:i.mids,count:i.counts,binWidth:.01}));return{schemaVersion:"1.0",type:"calibration",data:n,...o?{distribution:o}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[0,1]},references:[{type:"identity"}]}}function LR(e,t){let r=t.role==="model"?t.population??"population":e,n=`evaluation:${e}`;return{evaluation:{id:n,...t.role==="model"?{model:e}:{},population:r,label:e},series:{id:`series:${e}`,evaluationId:n,display:{label:e,group:e,role:t.role}}}}function Py(e,t){return[...new Set(e)].map(n=>LR(n,t))}function VR(e,t="population"){let r=Py(e.map(n=>n.model),{role:"model",population:t});return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.model}`,cutoff:n.probability_threshold,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function jR(e,t){let r=Py(e.map(n=>n.reference_group),t);return{schemaVersion:"2.0",type:"roc",evaluations:r.map(n=>n.evaluation),series:r.map(n=>n.series),data:e.map(n=>({seriesId:`series:${n.reference_group}`,cutoff:n.chosen_cutoff,sensitivity:n.sensitivity,specificity:n.specificity})),x:"false_positive_rate",y:"sensitivity",xAxis:{label:"1 - Specificity",domain:[0,1]},yAxis:{label:"Sensitivity",domain:[0,1]},references:[{type:"identity",scope:"global",label:"Random Guess"}]}}function UR(e,t,r,n){let o=Py(e.map(c=>c.reference_group),r),i=e.map(c=>c.y).filter(Number.isFinite),a=Math.min(0,...i),s=Math.max(1,...i);return{schemaVersion:"2.0",type:"calibration",evaluations:o.map(c=>c.evaluation),series:o.map(c=>c.series),data:e.map(c=>{let u=c.sum_reals??c.n_reals,f=c.total_obs??c.n;return{seriesId:`series:${c.reference_group}`,predicted:c.x,observed:c.y,method:t,...t==="discrete"&&u!==void 0?{events:u}:{},...t==="discrete"&&f!==void 0?{total:f}:{}}}),...n?{distribution:n.map(c=>({seriesId:`series:${c.reference_group}`,midpoint:c.mids,count:c.counts,binWidth:.01}))}:{},x:"predicted",y:"observed",xAxis:{label:"Predicted probability",domain:[0,1]},yAxis:{label:"Observed probability",domain:[a,s]},references:[{type:"identity",scope:"global",label:"Perfectly Calibrated"}]}}function ht(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function mn(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function oi(e){let t,r,n;e.length!==2?(t=ht,r=(s,c)=>ht(e(s),c),n=(s,c)=>e(s)-c):(t=e===ht||e===mn?e:BR,r=e,n=e);function o(s,c,u=0,f=s.length){if(u>>1;r(s[m],c)<0?u=m+1:f=m}while(u>>1;r(s[m],c)<=0?u=m+1:f=m}while(uu&&n(s[m-1],c)>-n(s[m],c)?m-1:m}return{left:o,center:a,right:i}}function BR(){return 0}function Df(e){return e===null?NaN:+e}function*cI(e,t){if(t===void 0)for(let r of e)r!=null&&(r=+r)>=r&&(yield r);else{let r=-1;for(let n of e)(n=t(n,++r,e))!=null&&(n=+n)>=n&&(yield n)}}var fI=oi(ht),uI=fI.right,zR=fI.left,GR=oi(Df).center,Va=uI;function KR(e){return e.length|0}function qR(e){return!(e>0)}function HR(e){return typeof e!="object"||"length"in e?e:Array.from(e)}function YR(e){return t=>e(...t)}function cp(...e){let t=typeof e[e.length-1]=="function"&&YR(e.pop());e=e.map(HR);let r=e.map(KR),n=e.length-1,o=new Array(n+1).fill(0),i=[];if(n<0||r.some(qR))return i;for(;;){i.push(o.map((s,c)=>e[c][s]));let a=n;for(;++o[a]===r[a];){if(a===0)return t?i.map(t):i;o[a--]=0}}}function fp(e,t){var r=0,n=0;return Float64Array.from(e,t===void 0?o=>r+=+o||0:o=>r+=+t(o,n++,e)||0)}function Zs(e,t){let r=0,n,o=0,i=0;if(t===void 0)for(let a of e)a!=null&&(a=+a)>=a&&(n=a-o,o+=n/++r,i+=n*(a-o));else{let a=-1;for(let s of e)(s=t(s,++a,e))!=null&&(s=+s)>=s&&(n=s-o,o+=n/++r,i+=n*(s-o))}if(r>1)return i/(r-1)}function up(e,t){let r=Zs(e,t);return r&&Math.sqrt(r)}function Er(e,t){let r,n;if(t===void 0)for(let o of e)o!=null&&(r===void 0?o>=o&&(r=n=o):(r>o&&(r=o),n=i&&(r=n=i):(r>i&&(r=i),n0){for(a=t[--r];r>0&&(n=a,o=t[--r],a=n+o,i=o-(a-n),!i););r>0&&(i<0&&t[r-1]<0||i>0&&t[r-1]>0)&&(o=i*2,n=a+o,o==n-a&&(a=n))}return a}};var Sr=class extends Map{constructor(t,r=mI){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,o]of t)this.set(n,o)}get(t){return super.get(Ty(this,t))}has(t){return super.has(Ty(this,t))}set(t,r){return super.set(lI(this,t),r)}delete(t){return super.delete(pI(this,t))}},zn=class extends Set{constructor(t,r=mI){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let n of t)this.add(n)}has(t){return super.has(Ty(this,t))}add(t){return super.add(lI(this,t))}delete(t){return super.delete(pI(this,t))}};function Ty({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function lI({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function pI({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function mI(e){return e!==null&&typeof e=="object"?e.valueOf():e}function Lf(e){return e}function ii(e,...t){return Oy(e,Lf,Lf,t)}function ho(e,t,...r){return Oy(e,Lf,t,r)}function My(e,t,...r){return Oy(e,Array.from,t,r)}function Oy(e,t,r,n){return(function o(i,a){if(a>=n.length)return r(i);let s=new Sr,c=n[a++],u=-1;for(let f of i){let m=c(f,++u,i),l=s.get(m);l?l.push(f):s.set(m,[f])}for(let[f,m]of s)s.set(f,o(m,a));return t(s)})(e,0)}function Cy(e,t){return Array.from(t,r=>e[r])}function Yi(e,...t){if(typeof e[Symbol.iterator]!="function")throw new TypeError("values is not iterable");e=Array.from(e);let[r]=t;if(r&&r.length!==2||t.length>1){let n=Uint32Array.from(e,(o,i)=>i);return t.length>1?(t=t.map(o=>e.map(o)),n.sort((o,i)=>{for(let a of t){let s=Vf(a[o],a[i]);if(s)return s}})):(r=e.map(r),n.sort((o,i)=>Vf(r[o],r[i]))),Cy(e,n)}return e.sort(ky(r))}function ky(e=ht){if(e===ht)return Vf;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{let n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function Vf(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}function Qs(e,t,r){return(t.length!==2?Yi(ho(e,t,r),(([n,o],[i,a])=>ht(o,a)||ht(n,i))):Yi(ii(e,r),(([n,o],[i,a])=>t(o,a)||ht(n,i)))).map(([n])=>n)}var WR=Math.sqrt(50),XR=Math.sqrt(10),ZR=Math.sqrt(2);function lp(e,t,r){let n=(t-e)/Math.max(0,r),o=Math.floor(Math.log10(n)),i=n/Math.pow(10,o),a=i>=WR?10:i>=XR?5:i>=ZR?2:1,s,c,u;return o<0?(u=Math.pow(10,-o)/a,s=Math.round(e*u),c=Math.round(t*u),s/ut&&--c,u=-u):(u=Math.pow(10,o)*a,s=Math.round(e/u),c=Math.round(t/u),s*ut&&--c),c0))return[];if(e===t)return[e];let n=t=o))return[];let s=i-o+1,c=new Array(s);if(n)if(a<0)for(let u=0;u=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r=o)&&(r=o)}return r}function pp(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r=i)&&(r=i,n=o);return n}function Ir(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let o of e)(o=t(o,++n,e))!=null&&(r>o||r===void 0&&o>=o)&&(r=o)}return r}function mp(e,t){let r,n=-1,o=-1;if(t===void 0)for(let i of e)++o,i!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);else for(let i of e)(i=t(i,++o,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i,n=o);return n}function dp(e,t,r=0,n=1/0,o){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(o=o===void 0?Vf:ky(o);n>r;){if(n-r>600){let c=n-r+1,u=t-r+1,f=Math.log(c),m=.5*Math.exp(2*f/3),l=.5*Math.sqrt(f*m*(c-m)/c)*(u-c/2<0?-1:1),p=Math.max(r,Math.floor(t-u*m/c+l)),h=Math.min(n,Math.floor(t+(c-u)*m/c+l));dp(e,t,p,h,o)}let i=e[t],a=r,s=n;for(Uf(e,r,t),o(e[n],i)>0&&Uf(e,r,n);a0;)--s}o(e[r],i)===0?Uf(e,r,s):(++s,Uf(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function Uf(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function Bf(e,t=ht){let r,n=!1;if(t.length===1){let o;for(let i of e){let a=t(i);(n?ht(a,o)>0:ht(a,a)===0)&&(r=i,o=a,n=!0)}}else for(let o of e)(n?t(o,r)>0:t(o,o)===0)&&(r=o,n=!0);return r}function si(e,t,r){if(e=Float64Array.from(cI(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Ir(e);if(t>=1)return jt(e);var n,o=(n-1)*t,i=Math.floor(o),a=jt(dp(e,i).subarray(0,i+1)),s=Ir(e.subarray(i+1));return a+(s-a)*(o-i)}}function Ry(e,t,r=Df){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,o=(n-1)*t,i=Math.floor(o),a=+r(e[i],i,e),s=+r(e[i+1],i+1,e);return a+(s-a)*(o-i)}}function hp(e,t){let r=0,n=0;if(t===void 0)for(let o of e)o!=null&&(o=+o)>=o&&(++r,n+=o);else{let o=-1;for(let i of e)(i=t(i,++o,e))!=null&&(i=+i)>=i&&(++r,n+=i)}if(r)return n/r}function ja(e,t){return si(e,.5,t)}function*JR(e){for(let t of e)yield*t}function ec(e){return Array.from(JR(e))}function yp(e,t){let r=new Sr;if(t===void 0)for(let i of e)i!=null&&i>=i&&r.set(i,(r.get(i)||0)+1);else{let i=-1;for(let a of e)(a=t(a,++i,e))!=null&&a>=a&&r.set(a,(r.get(a)||0)+1)}let n,o=0;for(let[i,a]of r)a>o&&(o=a,n=i);return n}function bp(e,t=eN){let r=[],n,o=!1;for(let i of e)o&&r.push(t(n,i)),n=i,o=!0;return r}function eN(e,t){return[e,t]}function Ua(e,t,r){e=+e,t=+t,r=(o=arguments.length)<2?(t=e,e=0,1):o<3?1:+r;for(var n=-1,o=Math.max(0,Math.ceil((t-e)/r))|0,i=new Array(o);++n+e(t)}function oN(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function iN(){return!this.__axis}function aN(e,t){var r=[],n=null,o=null,i=6,a=6,s=3,c=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=e===Ny||e===gp?-1:1,f=e===gp||e===Ay?"x":"y",m=e===Ny||e===Ey?tN:rN;function l(p){var h=n??(t.ticks?t.ticks.apply(t,r):t.domain()),y=o??(t.tickFormat?t.tickFormat.apply(t,r):dI),b=Math.max(i,0)+s,w=t.range(),g=+w[0]+c,_=+w[w.length-1]+c,x=(t.bandwidth?oN:nN)(t.copy(),c),I=p.selection?p.selection():p,S=I.selectAll(".domain").data([null]),v=I.selectAll(".tick").data(h,t).order(),T=v.exit(),O=v.enter().append("g").attr("class","tick"),R=v.select("line"),C=v.select("text");S=S.merge(S.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),v=v.merge(O),R=R.merge(O.append("line").attr("stroke","currentColor").attr(f+"2",u*i)),C=C.merge(O.append("text").attr("fill","currentColor").attr(f,u*b).attr("dy",e===Ny?"0em":e===Ey?"0.71em":"0.32em")),p!==I&&(S=S.transition(p),v=v.transition(p),R=R.transition(p),C=C.transition(p),T=T.transition(p).attr("opacity",hI).attr("transform",function(k){return isFinite(k=x(k))?m(k+c):this.getAttribute("transform")}),O.attr("opacity",hI).attr("transform",function(k){var z=this.parentNode.__axis;return m((z&&isFinite(z=z(k))?z:x(k))+c)})),T.remove(),S.attr("d",e===gp||e===Ay?a?"M"+u*a+","+g+"H"+c+"V"+_+"H"+u*a:"M"+c+","+g+"V"+_:a?"M"+g+","+u*a+"V"+c+"H"+_+"V"+u*a:"M"+g+","+c+"H"+_),v.attr("opacity",1).attr("transform",function(k){return m(x(k)+c)}),R.attr(f+"2",u*i),C.attr(f,u*b).text(y),I.filter(iN).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===Ay?"start":e===gp?"end":"middle"),I.each(function(){this.__axis=x})}return l.scale=function(p){return arguments.length?(t=p,l):t},l.ticks=function(){return r=Array.from(arguments),l},l.tickArguments=function(p){return arguments.length?(r=p==null?[]:Array.from(p),l):r.slice()},l.tickValues=function(p){return arguments.length?(n=p==null?null:Array.from(p),l):n&&n.slice()},l.tickFormat=function(p){return arguments.length?(o=p,l):o},l.tickSize=function(p){return arguments.length?(i=a=+p,l):i},l.tickSizeInner=function(p){return arguments.length?(i=+p,l):i},l.tickSizeOuter=function(p){return arguments.length?(a=+p,l):a},l.tickPadding=function(p){return arguments.length?(s=+p,l):s},l.offset=function(p){return arguments.length?(c=+p,l):c},l}function Fy(e){return aN(Ey,e)}var sN={value:()=>{}};function bI(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(o+1),r=r.slice(0,o)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}xp.prototype=bI.prototype={constructor:xp,on:function(e,t){var r=this._,n=cN(e+"",r),o,i=-1,a=n.length;if(arguments.length<2){for(;++i0)for(var r=new Array(o),n=0,o,i;n=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),yo.hasOwnProperty(t)?{space:yo[t],local:e}:e}function uN(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===wp&&t.documentElement.namespaceURI===wp?t.createElement(e):t.createElementNS(r,e)}}function lN(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function fi(e){var t=ci(e);return(t.local?lN:uN)(t)}function pN(){}function Ba(e){return e==null?pN:function(){return this.querySelector(e)}}function gI(e){typeof e!="function"&&(e=Ba(e));for(var t=this._groups,r=t.length,n=new Array(r),o=0;o=_&&(_=g+1);!(I=b[_])&&++_=0;)(a=n[o])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function kI(e){e||(e=PN);function t(m,l){return m&&l?e(m.__data__,l.__data__):!m-!l}for(var r=this._groups,n=r.length,o=new Array(n),i=0;it?1:e>=t?0:NaN}function RI(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function NI(){return Array.from(this)}function AI(){for(var e=this._groups,t=0,r=e.length;t1?this.each((t==null?NN:typeof t=="function"?EN:AN)(e,t,r??"")):Xi(this.node(),e)}function Xi(e,t){return e.style.getPropertyValue(t)||_p(e).getComputedStyle(e,null).getPropertyValue(t)}function FN(e){return function(){delete this[e]}}function $N(e,t){return function(){this[e]=t}}function DN(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function VI(e,t){return arguments.length>1?this.each((t==null?FN:typeof t=="function"?DN:$N)(e,t)):this.node()[e]}function jI(e){return e.trim().split(/^|\s+/)}function Ly(e){return e.classList||new UI(e)}function UI(e){this._node=e,this._names=jI(e.getAttribute("class")||"")}UI.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function BI(e,t){for(var r=Ly(e),n=-1,o=t.length;++n=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function t4(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,o=t.length,i;r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?vp(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?vp(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=s4.exec(e))?new At(t[1],t[2],t[3],1):(t=c4.exec(e))?new At(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=f4.exec(e))?vp(t[1],t[2],t[3],t[4]):(t=u4.exec(e))?vp(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=l4.exec(e))?p_(t[1],t[2]/100,t[3]/100,1):(t=p4.exec(e))?p_(t[1],t[2]/100,t[3]/100,t[4]):a_.hasOwnProperty(e)?f_(a_[e]):e==="transparent"?new At(NaN,NaN,NaN,0):null}function f_(e){return new At(e>>16&255,e>>8&255,e&255,1)}function vp(e,t,r,n){return n<=0&&(e=t=r=NaN),new At(e,t,r,n)}function Hf(e){return e instanceof go||(e=Kn(e)),e?(e=e.rgb(),new At(e.r,e.g,e.b,e.opacity)):new At}function yn(e,t,r,n){return arguments.length===1?Hf(e):new At(e,t,r,n??1)}function At(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}li(At,yn,Zi(go,{brighter(e){return e=e==null?Ka:Math.pow(Ka,e),new At(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Qi:Math.pow(Qi,e),new At(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new At(Ga(this.r),Ga(this.g),Ga(this.b),Tp(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:u_,formatHex:u_,formatHex8:h4,formatRgb:l_,toString:l_}));function u_(){return`#${za(this.r)}${za(this.g)}${za(this.b)}`}function h4(){return`#${za(this.r)}${za(this.g)}${za(this.b)}${za((isNaN(this.opacity)?1:this.opacity)*255)}`}function l_(){let e=Tp(this.opacity);return`${e===1?"rgb(":"rgba("}${Ga(this.r)}, ${Ga(this.g)}, ${Ga(this.b)}${e===1?")":`, ${e})`}`}function Tp(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ga(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function za(e){return e=Ga(e),(e<16?"0":"")+e.toString(16)}function p_(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Gn(e,t,r,n)}function d_(e){if(e instanceof Gn)return new Gn(e.h,e.s,e.l,e.opacity);if(e instanceof go||(e=Kn(e)),!e)return new Gn;if(e instanceof Gn)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),i=Math.max(t,r,n),a=NaN,s=i-o,c=(i+o)/2;return s?(t===i?a=(r-n)/s+(r0&&c<1?0:a,new Gn(a,s,c,e.opacity)}function Yf(e,t,r,n){return arguments.length===1?d_(e):new Gn(e,t,r,n??1)}function Gn(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}li(Gn,Yf,Zi(go,{brighter(e){return e=e==null?Ka:Math.pow(Ka,e),new Gn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Qi:Math.pow(Qi,e),new Gn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new At(Uy(e>=240?e-240:e+120,o,n),Uy(e,o,n),Uy(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new Gn(m_(this.h),Pp(this.s),Pp(this.l),Tp(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Tp(this.opacity);return`${e===1?"hsl(":"hsla("}${m_(this.h)}, ${Pp(this.s)*100}%, ${Pp(this.l)*100}%${e===1?")":`, ${e})`}`}}));function m_(e){return e=(e||0)%360,e<0?e+360:e}function Pp(e){return Math.max(0,Math.min(1,e||0))}function Uy(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var Mp=Math.PI/180,Op=180/Math.PI;var Cp=18,h_=.96422,y_=1,b_=.82521,g_=4/29,rc=6/29,x_=3*rc*rc,y4=rc*rc*rc;function w_(e){if(e instanceof xo)return new xo(e.l,e.a,e.b,e.opacity);if(e instanceof pi)return S_(e);e instanceof At||(e=Hf(e));var t=Ky(e.r),r=Ky(e.g),n=Ky(e.b),o=By((.2225045*t+.7168786*r+.0606169*n)/y_),i,a;return t===r&&r===n?i=a=o:(i=By((.4360747*t+.3850649*r+.1430804*n)/h_),a=By((.0139322*t+.0971045*r+.7141733*n)/b_)),new xo(116*o-16,500*(i-o),200*(o-a),e.opacity)}function nc(e,t,r,n){return arguments.length===1?w_(e):new xo(e,t,r,n??1)}function xo(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}li(xo,nc,Zi(go,{brighter(e){return new xo(this.l+Cp*(e??1),this.a,this.b,this.opacity)},darker(e){return new xo(this.l-Cp*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=h_*zy(t),e=y_*zy(e),r=b_*zy(r),new At(Gy(3.1338561*t-1.6168667*e-.4906146*r),Gy(-.9787684*t+1.9161415*e+.033454*r),Gy(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));function By(e){return e>y4?Math.pow(e,1/3):e/x_+g_}function zy(e){return e>rc?e*e*e:x_*(e-g_)}function Gy(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function Ky(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function b4(e){if(e instanceof pi)return new pi(e.h,e.c,e.l,e.opacity);if(e instanceof xo||(e=w_(e)),e.a===0&&e.b===0)return new pi(NaN,0=1?(r=1,t-1):Math.floor(r*t),o=e[n],i=e[n+1],a=n>0?e[n-1]:2*o-i,s=n()=>e;function O_(e,t){return function(r){return e+r*t}}function x4(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function ic(e,t){var r=t-e;return r?O_(e,r>180||r<-180?r-360*Math.round(r/360):r):oc(isNaN(e)?t:e)}function C_(e){return(e=+e)==1?ut:function(t,r){return r-t?x4(t,r,e):oc(isNaN(t)?r:t)}}function ut(e,t){var r=t-e;return r?O_(e,r):oc(isNaN(e)?t:e)}var bn=(function e(t){var r=C_(t);function n(o,i){var a=r((o=yn(o)).r,(i=yn(i)).r),s=r(o.g,i.g),c=r(o.b,i.b),u=ut(o.opacity,i.opacity);return function(f){return o.r=a(f),o.g=s(f),o.b=c(f),o.opacity=u(f),o+""}}return n.gamma=e,n})(1);function k_(e){return function(t){var r=t.length,n=new Array(r),o=new Array(r),i=new Array(r),a,s;for(a=0;ar&&(i=t.slice(r,i),s[a]?s[a]+=i:s[++a]=i),(n=n[0])===(o=o[0])?s[a]?s[a]+=o:s[++a]=o:(s[++a]=null,c.push({i:a,x:st(n,o)})),r=Xy.lastIndex;return r180?f+=360:f-u>180&&(u+=360),l.push({i:m.push(o(m)+"rotate(",null,n)-2,x:st(u,f)})):f&&m.push(o(m)+"rotate("+f+n)}function s(u,f,m,l){u!==f?l.push({i:m.push(o(m)+"skewX(",null,n)-2,x:st(u,f)}):f&&m.push(o(m)+"skewX("+f+n)}function c(u,f,m,l,p,h){if(u!==m||f!==l){var y=p.push(o(p)+"scale(",null,",",null,")");h.push({i:y-4,x:st(u,m)},{i:y-2,x:st(f,l)})}else(m!==1||l!==1)&&p.push(o(p)+"scale("+m+","+l+")")}return function(u,f){var m=[],l=[];return u=e(u),f=e(f),i(u.translateX,u.translateY,f.translateX,f.translateY,m,l),a(u.rotate,f.rotate,m,l),s(u.skewX,f.skewX,m,l),c(u.scaleX,u.scaleY,f.scaleX,f.scaleY,m,l),u=f=null,function(p){for(var h=-1,y=l.length,b;++h=0&&e._call.call(void 0,t),e=e._next;--sc}function z_(){Ya=(Fp=tu.now())+$p,sc=Jf=0;try{q_()}finally{sc=0,O4(),Ya=0}}function M4(){var e=tu.now(),t=e-Fp;t>G_&&($p-=t,Fp=e)}function O4(){for(var e,t=Ep,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:Ep=r);eu=e,nb(n)}function nb(e){if(!sc){Jf&&(Jf=clearTimeout(Jf));var t=e-Ya;t>24?(e<1/0&&(Jf=setTimeout(z_,e-tu.now()-$p)),Qf&&(Qf=clearInterval(Qf))):(Qf||(Fp=tu.now(),Qf=setInterval(M4,G_)),sc=1,K_(z_))}}function Lp(e,t,r){var n=new ru;return t=t==null?0:+t,n.restart(o=>{n.stop(),e(o+t)},t,r),n}var C4=$y("start","end","cancel","interrupt"),k4=[],W_=0,H_=1,jp=2,Vp=3,Y_=4,Up=5,ou=6;function Ji(e,t,r,n,o,i){var a=e.__transition;if(!a)e.__transition={};else if(r in a)return;R4(e,r,{name:t,index:n,group:o,on:C4,tween:k4,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:W_})}function iu(e,t){var r=Ft(e,t);if(r.state>W_)throw new Error("too late; already scheduled");return r}function tr(e,t){var r=Ft(e,t);if(r.state>Vp)throw new Error("too late; already running");return r}function Ft(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function R4(e,t,r){var n=e.__transition,o;n[t]=r,r.timer=Dp(i,0,r.time);function i(u){r.state=H_,r.timer.restart(a,r.delay,r.time),r.delay<=u&&a(u-r.delay)}function a(u){var f,m,l,p;if(r.state!==H_)return c();for(f in n)if(p=n[f],p.name===r.name){if(p.state===Vp)return Lp(a);p.state===Y_?(p.state=ou,p.timer.stop(),p.on.call("interrupt",e,e.__data__,p.index,p.group),delete n[f]):+fjp&&n.state=0&&(t=t.slice(0,r)),!t||t==="start"})}function Z4(e,t,r){var n,o,i=X4(t)?iu:tr;return function(){var a=i(this,e),s=a.on;s!==n&&(o=(n=s).copy()).on(t,r),a.on=o}}function av(e,t){var r=this._id;return arguments.length<2?Ft(this.node(),r).on.on(e):this.each(Z4(r,e,t))}function Q4(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function sv(){return this.on("end.remove",Q4(this._id))}function cv(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Ba(e));for(var n=this._groups,o=n.length,i=new Array(o),a=0;a=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Sv;let r=10**t;return function(n){this._+=n[0];for(let o=1,i=n.length;oWa)if(!(Math.abs(m*c-u*f)>Wa)||!i)this._append`L${this._x1=t},${this._y1=r}`;else{let p=n-a,h=o-s,y=c*c+u*u,b=p*p+h*h,w=Math.sqrt(y),g=Math.sqrt(l),_=i*Math.tan((ib-Math.acos((y+l-b)/(2*w*g)))/2),x=_/g,I=_/w;Math.abs(x-1)>Wa&&this._append`L${t+x*f},${r+x*m}`,this._append`A${i},${i},0,0,${+(m*p>f*h)},${this._x1=t+I*c},${this._y1=r+I*u}`}}arc(t,r,n,o,i,a){if(t=+t,r=+r,n=+n,a=!!a,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(o),c=n*Math.sin(o),u=t+s,f=r+c,m=1^a,l=a?o-i:i-o;this._x1===null?this._append`M${u},${f}`:(Math.abs(this._x1-u)>Wa||Math.abs(this._y1-f)>Wa)&&this._append`L${u},${f}`,n&&(l<0&&(l=l%ab+ab),l>dA?this._append`A${n},${n},0,1,${m},${t-s},${r-c}A${n},${n},0,1,${m},${this._x1=u},${this._y1=f}`:l>Wa&&this._append`A${n},${n},0,${+(l>=ib)},${m},${this._x1=t+n*Math.cos(i)},${this._y1=r+n*Math.sin(i)}`)}rect(t,r,n,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+o}h${-n}Z`}toString(){return this._}};function Iv(){return new ea}Iv.prototype=ea.prototype;function Hn(e=3){return new ea(+e)}function _v(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Xa(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function So(e){return e=Xa(Math.abs(e)),e?e[1]:NaN}function vv(e,t){return function(r,n){for(var o=r.length,i=[],a=0,s=e[0],c=0;o>0&&s>0&&(c+s+1>n&&(s=Math.max(1,n-c)),i.push(r.substring(o-=s,o+s)),!((c+=s+1)>n));)s=e[a=(a+1)%e.length];return i.reverse().join(t)}}function Pv(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var yA=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Io(e){if(!(t=yA.exec(e)))throw new Error("invalid format: "+e);var t;return new qp({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Io.prototype=qp.prototype;function qp(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}qp.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Tv(e){e:for(var t=e.length,r=1,n=-1,o;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(o+1):e}var au;function Mv(e,t){var r=Xa(e,t);if(!r)return au=void 0,e.toPrecision(t);var n=r[0],o=r[1],i=o-(au=Math.max(-8,Math.min(8,Math.floor(o/3)))*3)+1,a=n.length;return i===a?n:i>a?n+new Array(i-a+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+Xa(e,Math.max(0,t+i-1))[0]}function sb(e,t){var r=Xa(e,t);if(!r)return e+"";var n=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+new Array(o-n.length+2).join("0")}var cb={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:_v,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>sb(e*100,t),r:sb,s:Mv,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function fb(e){return e}var Ov=Array.prototype.map,Cv=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function kv(e){var t=e.grouping===void 0||e.thousands===void 0?fb:vv(Ov.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",o=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?fb:Pv(Ov.call(e.numerals,String)),a=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",c=e.nan===void 0?"NaN":e.nan+"";function u(m,l){m=Io(m);var p=m.fill,h=m.align,y=m.sign,b=m.symbol,w=m.zero,g=m.width,_=m.comma,x=m.precision,I=m.trim,S=m.type;S==="n"?(_=!0,S="g"):cb[S]||(x===void 0&&(x=12),I=!0,S="g"),(w||p==="0"&&h==="=")&&(w=!0,p="0",h="=");var v=(l&&l.prefix!==void 0?l.prefix:"")+(b==="$"?r:b==="#"&&/[boxX]/.test(S)?"0"+S.toLowerCase():""),T=(b==="$"?n:/[%p]/.test(S)?a:"")+(l&&l.suffix!==void 0?l.suffix:""),O=cb[S],R=/[defgprs%]/.test(S);x=x===void 0?6:/[gprs]/.test(S)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function C(k){var z=v,j=T,M,U,L;if(S==="c")j=O(k)+j,k="";else{k=+k;var re=k<0||1/k<0;if(k=isNaN(k)?c:O(Math.abs(k),x),I&&(k=Tv(k)),re&&+k==0&&y!=="+"&&(re=!1),z=(re?y==="("?y:s:y==="-"||y==="("?"":y)+z,j=(S==="s"&&!isNaN(k)&&au!==void 0?Cv[8+au/3]:"")+j+(re&&y==="("?")":""),R){for(M=-1,U=k.length;++ML||L>57){j=(L===46?o+k.slice(M+1):k.slice(M))+j,k=k.slice(0,M);break}}}_&&!w&&(k=t(k,1/0));var V=z.length+k.length+j.length,q=V>1)+z+k+j+q.slice(V);break;default:k=q+z+k+j;break}return i(k)}return C.toString=function(){return m+""},C}function f(m,l){var p=Math.max(-8,Math.min(8,Math.floor(So(l)/3)))*3,h=Math.pow(10,-p),y=u((m=Io(m),m.type="f",m),{suffix:Cv[8+p/3]});return function(b){return y(h*b)}}return{format:u,formatPrefix:f}}var Hp,gn,Yp;ub({thousands:",",grouping:[3],currency:["$",""]});function ub(e){return Hp=kv(e),gn=Hp.format,Yp=Hp.formatPrefix,Hp}function lb(e){return Math.max(0,-So(Math.abs(e)))}function pb(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(So(t)/3)))*3-So(Math.abs(e)))}function mb(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,So(t)-So(e))+1}var ae=1e-6,Wp=1e-12,pe=Math.PI,Ke=pe/2,db=pe/4,Ut=pe*2,$t=180/pe,qe=pe/180,ge=Math.abs,xn=Math.atan,rr=Math.atan2,ie=Math.cos;var Xp=Math.exp;var Za=Math.log,Zp=Math.pow,ne=Math.sin,mr=Math.sign||function(e){return e>0?1:e<0?-1:0},Je=Math.sqrt,fc=Math.tan;function Qp(e){return e>1?0:e<-1?pe:Math.acos(e)}function wt(e){return e>1?Ke:e<-1?-Ke:Math.asin(e)}function Bt(){}function Jp(e,t){e&&Nv.hasOwnProperty(e.type)&&Nv[e.type](e,t)}var Rv={Feature:function(e,t){Jp(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,n=-1,o=r.length;++npe&&(e-=Math.round(e/Ut)*Ut),[e,t]}yb.invert=yb;function bb(e,t,r){return(e%=Ut)?t||r?lu(Fv(e),$v(t,r)):Fv(e):t||r?$v(t,r):yb}function Ev(e){return function(t,r){return t+=e,ge(t)>pe&&(t-=Math.round(t/Ut)*Ut),[t,r]}}function Fv(e){var t=Ev(e);return t.invert=Ev(-e),t}function $v(e,t){var r=ie(e),n=ne(e),o=ie(t),i=ne(t);function a(s,c){var u=ie(c),f=ie(s)*u,m=ne(s)*u,l=ne(c),p=l*r+f*n;return[rr(m*o-p*i,f*r-l*n),wt(p*o+m*i)]}return a.invert=function(s,c){var u=ie(c),f=ie(s)*u,m=ne(s)*u,l=ne(c),p=l*o-m*i;return[rr(m*o+l*i,f*r+p*n),wt(p*r-f*n)]},a}function Dv(e){e=bb(e[0]*qe,e[1]*qe,e.length>2?e[2]*qe:0);function t(r){return r=e(r[0]*qe,r[1]*qe),r[0]*=$t,r[1]*=$t,r}return t.invert=function(r){return r=e.invert(r[0]*qe,r[1]*qe),r[0]*=$t,r[1]*=$t,r},t}function Vv(e,t,r,n,o,i){if(r){var a=ie(t),s=ne(t),c=n*r;o==null?(o=t+n*Ut,i=t-c/2):(o=Lv(a,o),i=Lv(a,i),(n>0?oi)&&(o+=n*Ut));for(var u,f=o;n>0?f>i:f1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function lc(e,t){return ge(e[0]-t[0])=0;--s)o.point((m=f[s])[0],m[1]);else n(l.x,l.p.x,-1,o);l=l.p}l=l.o,f=l.z,p=!p}while(!l.v);o.lineEnd()}}}function jv(e){if(t=e.length){for(var t,r=0,n=e[0],o;++r=0?1:-1,R=O*T,C=R>pe,k=b*S;if(c.add(rr(k*O*ne(R),w*v+k*ie(R))),a+=C?T+O*Ut:T,C^h>=r^x>=r){var z=uc(_o(p),_o(_));uu(z);var j=uc(i,z);uu(j);var M=(C^T>=0?-1:1)*wt(j[2]);(n>M||n===M&&(z[0]||z[1]))&&(s+=C^T>=0?1:-1)}}return(a<-ae||a0){for(c||(o.polygonStart(),c=!0),o.lineStart(),S=0;S1&&x&2&&I.push(I.pop().concat(I.shift())),f.push(I.filter(bA))}}return l}}function bA(e){return e.length>1}function gA(e,t){return((e=e.x)[0]<0?e[1]-Ke-ae:Ke-e[1])-((t=t.x)[0]<0?t[1]-Ke-ae:Ke-t[1])}var xb=om(function(){return!0},xA,SA,[-pe,-Ke]);function xA(e){var t=NaN,r=NaN,n=NaN,o;return{lineStart:function(){e.lineStart(),o=1},point:function(i,a){var s=i>0?pe:-pe,c=ge(i-t);ge(c-pe)0?Ke:-Ke),e.point(n,r),e.lineEnd(),e.lineStart(),e.point(s,r),e.point(i,r),o=0):n!==s&&c>=pe&&(ge(t-n)ae?xn((ne(t)*(i=ie(n))*ne(r)-ne(n)*(o=ie(t))*ne(e))/(o*i*a)):(t+n)/2}function SA(e,t,r,n){var o;if(e==null)o=r*Ke,n.point(-pe,o),n.point(0,o),n.point(pe,o),n.point(pe,0),n.point(pe,-o),n.point(0,-o),n.point(-pe,-o),n.point(-pe,0),n.point(-pe,o);else if(ge(e[0]-t[0])>ae){var i=e[0]0,o=ge(t)>ae;function i(f,m,l,p){Vv(p,e,r,l,f,m)}function a(f,m){return ie(f)*ie(m)>t}function s(f){var m,l,p,h,y;return{lineStart:function(){h=p=!1,y=1},point:function(b,w){var g=[b,w],_,x=a(b,w),I=n?x?0:u(b,w):x?u(b+(b<0?pe:-pe),w):0;if(!m&&(h=p=x)&&f.lineStart(),x!==p&&(_=c(m,g),(!_||lc(m,_)||lc(g,_))&&(g[2]=1)),x!==p)y=0,x?(f.lineStart(),_=c(g,m),f.point(_[0],_[1])):(_=c(m,g),f.point(_[0],_[1],2),f.lineEnd()),m=_;else if(o&&m&&n^x){var S;!(I&l)&&(S=c(g,m,!0))&&(y=0,n?(f.lineStart(),f.point(S[0][0],S[0][1]),f.point(S[1][0],S[1][1]),f.lineEnd()):(f.point(S[1][0],S[1][1]),f.lineEnd(),f.lineStart(),f.point(S[0][0],S[0][1],3)))}x&&(!m||!lc(m,g))&&f.point(g[0],g[1]),m=g,p=x,l=I},lineEnd:function(){p&&f.lineEnd(),m=null},clean:function(){return y|(h&&p)<<1}}}function c(f,m,l){var p=_o(f),h=_o(m),y=[1,0,0],b=uc(p,h),w=cu(b,b),g=b[0],_=w-g*g;if(!_)return!l&&f;var x=t*w/_,I=-t*g/_,S=uc(y,b),v=fu(y,x),T=fu(b,I);em(v,T);var O=S,R=cu(v,O),C=cu(O,O),k=R*R-C*(cu(v,v)-1);if(!(k<0)){var z=Je(k),j=fu(O,(-R-z)/C);if(em(j,v),j=su(j),!l)return j;var M=f[0],U=m[0],L=f[1],re=m[1],V;U0^j[1]<(ge(j[0]-M)pe^(M<=j[0]&&j[0]<=U)){var te=fu(O,(-R+z)/C);return em(te,v),[j,su(te)]}}}function u(f,m){var l=n?e:pe-e,p=0;return f<-l?p|=1:f>l&&(p|=2),m<-l?p|=4:m>l&&(p|=8),p}return om(a,s,i,n?[0,-e]:[-pe,e-pe])}function zv(e,t,r,n,o,i){var a=e[0],s=e[1],c=t[0],u=t[1],f=0,m=1,l=c-a,p=u-s,h;if(h=r-a,!(!l&&h>0)){if(h/=l,l<0){if(h0){if(h>m)return;h>f&&(f=h)}if(h=o-a,!(!l&&h<0)){if(h/=l,l<0){if(h>m)return;h>f&&(f=h)}else if(l>0){if(h0)){if(h/=p,p<0){if(h0){if(h>m)return;h>f&&(f=h)}if(h=i-s,!(!p&&h<0)){if(h/=p,p<0){if(h>m)return;h>f&&(f=h)}else if(p>0){if(h0&&(e[0]=a+f*l,e[1]=s+f*p),m<1&&(t[0]=a+m*l,t[1]=s+m*p),!0}}}}}var pu=1e9,im=-pu;function pc(e,t,r,n){function o(u,f){return e<=u&&u<=r&&t<=f&&f<=n}function i(u,f,m,l){var p=0,h=0;if(u==null||(p=a(u,m))!==(h=a(f,m))||c(u,f)<0^m>0)do l.point(p===0||p===3?e:r,p>1?n:t);while((p=(p+m+4)%4)!==h);else l.point(f[0],f[1])}function a(u,f){return ge(u[0]-e)0?0:3:ge(u[0]-r)0?2:1:ge(u[1]-t)0?1:0:f>0?3:2}function s(u,f){return c(u.x,f.x)}function c(u,f){var m=a(u,1),l=a(f,1);return m!==l?m-l:m===0?f[1]-u[1]:m===1?u[0]-f[0]:m===2?u[1]-f[1]:f[0]-u[0]}return function(u){var f=u,m=tm(),l,p,h,y,b,w,g,_,x,I,S,v={point:T,lineStart:k,lineEnd:z,polygonStart:R,polygonEnd:C};function T(M,U){o(M,U)&&f.point(M,U)}function O(){for(var M=0,U=0,L=p.length;Un&&(be-W)*(n-te)>(K-te)*(e-W)&&++M:K<=n&&(be-W)*(n-te)<(K-te)*(e-W)&&--M;return M}function R(){f=m,l=[],p=[],S=!0}function C(){var M=O(),U=S&&M,L=(l=ec(l)).length;(U||L)&&(u.polygonStart(),U&&(u.lineStart(),i(null,null,1,u),u.lineEnd()),L&&nm(l,s,M,i,u),u.polygonEnd()),f=u,l=p=h=null}function k(){v.point=j,p&&p.push(h=[]),I=!0,x=!1,g=_=NaN}function z(){l&&(j(y,b),w&&x&&m.rejoin(),l.push(m.result())),v.point=T,x&&f.lineEnd()}function j(M,U){var L=o(M,U);if(p&&h.push([M,U]),I)y=M,b=U,w=L,I=!1,L&&(f.lineStart(),f.point(M,U));else if(L&&x)f.point(M,U);else{var re=[g=Math.max(im,Math.min(pu,g)),_=Math.max(im,Math.min(pu,_))],V=[M=Math.max(im,Math.min(pu,M)),U=Math.max(im,Math.min(pu,U))];zv(re,V,e,t,r,n)?(x||(f.lineStart(),f.point(re[0],re[1])),f.point(V[0],V[1]),L||f.lineEnd(),S=!1):L&&(f.lineStart(),f.point(M,U),S=!1)}g=M,_=U,x=L}return v}}var mu=e=>e;var wb=new Zr,Sb=new Zr,Gv,Kv,Ib,_b,ta={point:Bt,lineStart:Bt,lineEnd:Bt,polygonStart:function(){ta.lineStart=IA,ta.lineEnd=vA},polygonEnd:function(){ta.lineStart=ta.lineEnd=ta.point=Bt,wb.add(ge(Sb)),Sb=new Zr},result:function(){var e=wb/2;return wb=new Zr,e}};function IA(){ta.point=_A}function _A(e,t){ta.point=qv,Gv=Ib=e,Kv=_b=t}function qv(e,t){Sb.add(_b*e-Ib*t),Ib=e,_b=t}function vA(){qv(Gv,Kv)}var vb=ta;var mc=1/0,am=mc,du=-mc,sm=du,PA={point:TA,lineStart:Bt,lineEnd:Bt,polygonStart:Bt,polygonEnd:Bt,result:function(){var e=[[mc,am],[du,sm]];return du=sm=-(am=mc=1/0),e}};function TA(e,t){edu&&(du=e),tsm&&(sm=t)}var dc=PA;var Pb=0,Tb=0,hu=0,cm=0,fm=0,hc=0,Mb=0,Ob=0,yu=0,Wv,Xv,vo,Po,Wn={point:Qa,lineStart:Hv,lineEnd:Yv,polygonStart:function(){Wn.lineStart=CA,Wn.lineEnd=kA},polygonEnd:function(){Wn.point=Qa,Wn.lineStart=Hv,Wn.lineEnd=Yv},result:function(){var e=yu?[Mb/yu,Ob/yu]:hc?[cm/hc,fm/hc]:hu?[Pb/hu,Tb/hu]:[NaN,NaN];return Pb=Tb=hu=cm=fm=hc=Mb=Ob=yu=0,e}};function Qa(e,t){Pb+=e,Tb+=t,++hu}function Hv(){Wn.point=MA}function MA(e,t){Wn.point=OA,Qa(vo=e,Po=t)}function OA(e,t){var r=e-vo,n=t-Po,o=Je(r*r+n*n);cm+=o*(vo+e)/2,fm+=o*(Po+t)/2,hc+=o,Qa(vo=e,Po=t)}function Yv(){Wn.point=Qa}function CA(){Wn.point=RA}function kA(){Zv(Wv,Xv)}function RA(e,t){Wn.point=Zv,Qa(Wv=vo=e,Xv=Po=t)}function Zv(e,t){var r=e-vo,n=t-Po,o=Je(r*r+n*n);cm+=o*(vo+e)/2,fm+=o*(Po+t)/2,hc+=o,o=Po*e-vo*t,Mb+=o*(vo+e),Ob+=o*(Po+t),yu+=o*3,Qa(vo=e,Po=t)}var Cb=Wn;function um(e){this._context=e}um.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:{this._context.moveTo(e,t),this._point=1;break}case 1:{this._context.lineTo(e,t);break}default:{this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,Ut);break}}},result:Bt};var Rb=new Zr,kb,Qv,Jv,bu,gu,lm={point:Bt,lineStart:function(){lm.point=NA},lineEnd:function(){kb&&eP(Qv,Jv),lm.point=Bt},polygonStart:function(){kb=!0},polygonEnd:function(){kb=null},result:function(){var e=+Rb;return Rb=new Zr,e}};function NA(e,t){lm.point=eP,Qv=bu=e,Jv=gu=t}function eP(e,t){bu-=e,gu-=t,Rb.add(Je(bu*bu+gu*gu)),bu=e,gu=t}var Nb=lm;var tP,pm,rP,nP,yc=class{constructor(t){this._append=t==null?oP:AA(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,r){switch(this._point){case 0:{this._append`M${t},${r}`,this._point=1;break}case 1:{this._append`L${t},${r}`;break}default:{if(this._append`M${t},${r}`,this._radius!==rP||this._append!==pm){let n=this._radius,o=this._;this._="",this._append`m0,${n}a${n},${n} 0 1,1 0,${-2*n}a${n},${n} 0 1,1 0,${2*n}z`,rP=n,pm=this._append,nP=this._,this._=o}this._+=nP;break}}}result(){let t=this._;return this._="",t.length?t:null}};function oP(e){let t=1;this._+=e[0];for(let r=e.length;t=0))throw new RangeError(`invalid digits: ${e}`);if(t>15)return oP;if(t!==tP){let r=10**t;tP=t,pm=function(o){let i=1;this._+=o[0];for(let a=o.length;i=0))throw new RangeError(`invalid digits: ${s}`);r=c}return t===null&&(i=new yc(r)),a},a.projection(e).digits(r).context(t)}function gc(e){return{stream:xc(e)}}function xc(e){return function(t){var r=new Ab;for(var n in e)r[n]=e[n];return r.stream=t,r}}function Ab(){}Ab.prototype={constructor:Ab,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function Eb(e,t,r){var n=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),n!=null&&e.clipExtent(null),Yn(r,e.stream(dc)),t(dc.result()),n!=null&&e.clipExtent(n),e}function xu(e,t,r){return Eb(e,function(n){var o=t[1][0]-t[0][0],i=t[1][1]-t[0][1],a=Math.min(o/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),s=+t[0][0]+(o-a*(n[1][0]+n[0][0]))/2,c=+t[0][1]+(i-a*(n[1][1]+n[0][1]))/2;e.scale(150*a).translate([s,c])},r)}function mm(e,t,r){return xu(e,[[0,0],t],r)}function dm(e,t,r){return Eb(e,function(n){var o=+t,i=o/(n[1][0]-n[0][0]),a=(o-i*(n[1][0]+n[0][0]))/2,s=-i*n[0][1];e.scale(150*i).translate([a,s])},r)}function hm(e,t,r){return Eb(e,function(n){var o=+t,i=o/(n[1][1]-n[0][1]),a=-i*n[0][0],s=(o-i*(n[1][1]+n[0][1]))/2;e.scale(150*i).translate([a,s])},r)}var iP=16,EA=ie(30*qe);function Fb(e,t){return+t?$A(e,t):FA(e)}function FA(e){return xc({point:function(t,r){t=e(t,r),this.stream.point(t[0],t[1])}})}function $A(e,t){function r(n,o,i,a,s,c,u,f,m,l,p,h,y,b){var w=u-n,g=f-o,_=w*w+g*g;if(_>4*t&&y--){var x=a+l,I=s+p,S=c+h,v=Je(x*x+I*I+S*S),T=wt(S/=v),O=ge(ge(S)-1)t||ge((w*z+g*j)/_-.5)>.3||a*l+s*p+c*h2?M[2]%360*qe:0,z()):[s*$t,c*$t,u*$t]},C.angle=function(M){return arguments.length?(m=M%360*qe,z()):m*$t},C.reflectX=function(M){return arguments.length?(l=M?-1:1,z()):l<0},C.reflectY=function(M){return arguments.length?(p=M?-1:1,z()):p<0},C.precision=function(M){return arguments.length?(S=Fb(v,I=M*M),j()):Je(I)},C.fitExtent=function(M,U){return xu(C,M,U)},C.fitSize=function(M,U){return mm(C,M,U)},C.fitWidth=function(M,U){return dm(C,M,U)},C.fitHeight=function(M,U){return hm(C,M,U)};function z(){var M=aP(r,0,0,l,p,m).apply(null,t(i,a)),U=aP(r,n-M[0],o-M[1],l,p,m);return f=bb(s,c,u),v=lu(t,U),T=lu(f,v),S=Fb(v,I),j()}function j(){return O=R=null,C}return function(){return t=e.apply(this,arguments),C.invert=t.invert&&k,z()}}function wc(e){var t=0,r=pe/3,n=$b(e),o=n(t,r);return o.parallels=function(i){return arguments.length?n(t=i[0]*qe,r=i[1]*qe):[t*$t,r*$t]},o}function sP(e){var t=ie(e);function r(n,o){return[n*t,ne(o)/t]}return r.invert=function(n,o){return[n/t,wt(o*t)]},r}function cP(e,t){var r=ne(e),n=(r+ne(t))/2;if(ge(n)=.12&&b<.234&&y>=-.425&&y<-.214?o:b>=.166&&b<.234&&y>=-.214&&y<-.115?a:r).invert(l)},f.stream=function(l){return e&&t===l?e:e=jA([r.stream(t=l),o.stream(l),a.stream(l)])},f.precision=function(l){return arguments.length?(r.precision(l),o.precision(l),a.precision(l),m()):r.precision()},f.scale=function(l){return arguments.length?(r.scale(l),o.scale(l*.35),a.scale(l),f.translate(r.translate())):r.scale()},f.translate=function(l){if(!arguments.length)return r.translate();var p=r.scale(),h=+l[0],y=+l[1];return n=r.translate(l).clipExtent([[h-.455*p,y-.238*p],[h+.455*p,y+.238*p]]).stream(u),i=o.translate([h-.307*p,y+.201*p]).clipExtent([[h-.425*p+ae,y+.12*p+ae],[h-.214*p-ae,y+.234*p-ae]]).stream(u),s=a.translate([h-.205*p,y+.212*p]).clipExtent([[h-.214*p+ae,y+.166*p+ae],[h-.115*p-ae,y+.234*p-ae]]).stream(u),m()},f.fitExtent=function(l,p){return xu(f,l,p)},f.fitSize=function(l,p){return mm(f,l,p)},f.fitWidth=function(l,p){return dm(f,l,p)},f.fitHeight=function(l,p){return hm(f,l,p)};function m(){return e=t=null,f}return f.scale(1070)}function ym(e){return function(t,r){var n=ie(t),o=ie(r),i=e(n*o);return i===1/0?[2,0]:[i*o*ne(t),i*ne(r)]}}function To(e){return function(t,r){var n=Je(t*t+r*r),o=e(n),i=ne(o),a=ie(o);return[rr(t*i,n*a),wt(n&&r*i/n)]}}var Lb=ym(function(e){return Je(2/(1+e))});Lb.invert=To(function(e){return 2*wt(e/2)});function Vb(){return nr(Lb).scale(124.75).clipAngle(180-.001)}var jb=ym(function(e){return(e=Qp(e))&&e/ne(e)});jb.invert=To(function(e){return e});function Ub(){return nr(jb).scale(79.4188).clipAngle(180-.001)}function Sc(e,t){return[e,Za(fc((Ke+t)/2))]}Sc.invert=function(e,t){return[e,2*xn(Xp(t))-Ke]};function Bb(){return zb(Sc).scale(961/Ut)}function zb(e){var t=nr(e),r=t.center,n=t.scale,o=t.translate,i=t.clipExtent,a=null,s,c,u;t.scale=function(m){return arguments.length?(n(m),f()):n()},t.translate=function(m){return arguments.length?(o(m),f()):o()},t.center=function(m){return arguments.length?(r(m),f()):r()},t.clipExtent=function(m){return arguments.length?(m==null?a=s=c=u=null:(a=+m[0][0],s=+m[0][1],c=+m[1][0],u=+m[1][1]),f()):a==null?null:[[a,s],[c,u]]};function f(){var m=pe*n(),l=t(Dv(t.rotate()).invert([0,0]));return i(a==null?[[l[0]-m,l[1]-m],[l[0]+m,l[1]+m]]:e===Sc?[[Math.max(l[0]-m,a),s],[Math.min(l[0]+m,c),u]]:[[a,Math.max(l[1]-m,s)],[c,Math.min(l[1]+m,u)]])}return f()}function bm(e){return fc((Ke+e)/2)}function fP(e,t){var r=ie(e),n=e===t?ne(e):Za(r/ie(t))/Za(bm(t)/bm(e)),o=r*Zp(bm(e),n)/n;if(!n)return Sc;function i(a,s){o>0?s<-Ke+ae&&(s=-Ke+ae):s>Ke-ae&&(s=Ke-ae);var c=o/Zp(bm(s),n);return[c*ne(n*a),o-c*ie(n*a)]}return i.invert=function(a,s){var c=o-s,u=mr(n)*Je(a*a+c*c),f=rr(a,ge(c))*mr(c);return c*n<0&&(f-=pe*mr(a)*mr(c)),[f/n,2*xn(Zp(o/u,1/n))-Ke]},i}function Gb(){return wc(fP).scale(109.5).parallels([30,30])}function Ic(e,t){return[e,t]}Ic.invert=Ic;function Kb(){return nr(Ic).scale(152.63)}function uP(e,t){var r=ie(e),n=e===t?ne(e):(r-ie(t))/(t-e),o=r/n+e;if(ge(n)2?n[2]+90:90]):(n=r(),[n[0],n[1],n[2]-90])},r([0,0,90]).scale(159.155)}function Et(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function Pu(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}var Tu=Symbol("implicit");function Ja(){var e=new Sr,t=[],r=[],n=Tu;function o(i){let a=e.get(i);if(a===void 0){if(n!==Tu)return n;e.set(i,a=t.push(i)-1)}return r[a%r.length]}return o.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new Sr;for(let a of i)e.has(a)||e.set(a,t.push(a)-1);return o},o.range=function(i){return arguments.length?(r=Array.from(i),o):r.slice()},o.unknown=function(i){return arguments.length?(n=i,o):n},o.copy=function(){return Ja(t,r).unknown(n)},Et.apply(o,arguments),o}function na(){var e=Ja().unknown(void 0),t=e.domain,r=e.range,n=0,o=1,i,a,s=!1,c=0,u=0,f=.5;delete e.unknown;function m(){var l=t().length,p=ot&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function zA(e,t,r){var n=e[0],o=e[1],i=t[0],a=t[1];return o2?GA:zA,c=u=null,m}function m(l){return l==null||isNaN(l=+l)?i:(c||(c=s(e.map(n),t,r)))(n(a(l)))}return m.invert=function(l){return a(o((u||(u=s(t,e.map(n),st)))(l)))},m.domain=function(l){return arguments.length?(e=Array.from(l,_c),f()):e.slice()},m.range=function(l){return arguments.length?(t=Array.from(l),f()):t.slice()},m.rangeRound=function(l){return t=Array.from(l),r=Ha,f()},m.clamp=function(l){return arguments.length?(a=l?!0:Fr,f()):a!==Fr},m.interpolate=function(l){return arguments.length?(r=l,f()):r},m.unknown=function(l){return arguments.length?(i=l,m):i},function(l,p){return n=l,o=p,f()}}function Mu(){return es()(Fr,Fr)}function ag(e,t,r,n){var o=Js(e,t,r),i;switch(n=Io(n??",f"),n.type){case"s":{var a=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(i=pb(o,a))&&(n.precision=i),Yp(n,a)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=mb(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=lb(o))&&(n.precision=i-(n.type==="%")*2);break}}return gn(n)}function di(e){var t=e.domain;return e.ticks=function(r){var n=t();return ai(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return ag(o[0],o[o.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),o=0,i=n.length-1,a=n[o],s=n[i],c,u,f=10;for(s0;){if(u=jf(a,s,r),u===c)return n[o]=a,n[i]=s,t(n);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;c=u}return e},e}function ts(){var e=Mu();return e.copy=function(){return Mo(e,ts())},Et.apply(e,arguments),di(e)}function Ou(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,_c),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Ou(e).unknown(t)},e=arguments.length?Array.from(e,_c):[0,1],di(r)}function Cu(e,t){e=e.slice();var r=0,n=e.length-1,o=e[r],i=e[n],a;return iMath.pow(e,t)}function WA(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function hP(e){return(t,r)=>-e(-t,r)}function sg(e){let t=e(mP,dP),r=t.domain,n=10,o,i;function a(){return o=WA(n),i=YA(n),r()[0]<0?(o=hP(o),i=hP(i),e(KA,qA)):e(mP,dP),t}return t.base=function(s){return arguments.length?(n=+s,a()):n},t.domain=function(s){return arguments.length?(r(s),a()):r()},t.ticks=s=>{let c=r(),u=c[0],f=c[c.length-1],m=f0){for(;l<=p;++l)for(h=1;hf)break;w.push(y)}}else for(;l<=p;++l)for(h=n-1;h>=1;--h)if(y=l>0?h/i(-l):h*i(l),!(yf)break;w.push(y)}w.length*2{if(s==null&&(s=10),c==null&&(c=n===10?"s":","),typeof c!="function"&&(!(n%1)&&(c=Io(c)).precision==null&&(c.trim=!0),c=gn(c)),s===1/0)return c;let u=Math.max(1,n*s/t.ticks().length);return f=>{let m=f/i(Math.round(o(f)));return m*nr(Cu(r(),{floor:s=>i(Math.floor(o(s))),ceil:s=>i(Math.ceil(o(s)))})),t}function ku(){let e=sg(es()).domain([1,10]);return e.copy=()=>Mo(e,ku()).base(e.base()),Et.apply(e,arguments),e}function yP(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function bP(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function cg(e){var t=1,r=e(yP(t),bP(t));return r.constant=function(n){return arguments.length?e(yP(t=+n),bP(t)):t},di(r)}function Ru(){var e=cg(es());return e.copy=function(){return Mo(e,Ru()).constant(e.constant())},Et.apply(e,arguments)}function gP(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function XA(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function ZA(e){return e<0?-e*e:e*e}function fg(e){var t=e(Fr,Fr),r=1;function n(){return r===1?e(Fr,Fr):r===.5?e(XA,ZA):e(gP(r),gP(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},di(t)}function Nu(){var e=fg(es());return e.copy=function(){return Mo(e,Nu()).exponent(e.exponent())},Et.apply(e,arguments),e}function Au(){var e=[],t=[],r=[],n;function o(){var a=0,s=Math.max(1,t.length);for(r=new Array(s-1);++a0?r[s-1]:e[0],s(e(i=new Date(+i)),i),o.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),o.round=i=>{let a=o(i),s=o.ceil(i);return i-a(t(i=new Date(+i),a==null?1:Math.floor(a)),i),o.range=(i,a,s)=>{let c=[];if(i=o.ceil(i),s=s==null?1:Math.floor(s),!(i0))return c;let u;do c.push(u=new Date(+i)),t(i,s),e(i);while(uZe(a=>{if(a>=a)for(;e(a),!i(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;t(a,-1),!i(a););else for(;--s>=0;)for(;t(a,1),!i(a););}),r&&(o.count=(i,a)=>(ug.setTime(+i),lg.setTime(+a),e(ug),e(lg),Math.floor(r(ug,lg))),o.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?o.filter(n?a=>n(a)%i===0:a=>o.count(0,a)%i===0):o)),o}var Fu=Ze(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Fu.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Ze(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Fu);var Lpe=Fu.range;var zt=Ze(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),xP=zt.range;var hi=Ze(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),QA=hi.range,yi=Ze(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),JA=yi.range;var bi=Ze(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),e7=bi.range,gi=Ze(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),t7=gi.range;var wn=Ze(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),r7=wn.range,os=Ze(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),n7=os.range,is=Ze(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),o7=is.range;function as(e){return Ze(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}var Qr=as(0),oa=as(1),xm=as(2),wm=as(3),Co=as(4),Sm=as(5),Im=as(6),SP=Qr.range,i7=oa.range,a7=xm.range,s7=wm.range,c7=Co.range,f7=Sm.range,u7=Im.range;function ss(e){return Ze(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var Jr=ss(0),ia=ss(1),_m=ss(2),vm=ss(3),ko=ss(4),Pm=ss(5),Tm=ss(6),IP=Jr.range,l7=ia.range,p7=_m.range,m7=vm.range,d7=ko.range,h7=Pm.range,y7=Tm.range;var xi=Ze(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),b7=xi.range,wi=Ze(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),g7=wi.range;var dr=Ze(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());dr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Ze(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});var x7=dr.range,hr=Ze(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());hr.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Ze(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});var w7=hr.range;function vP(e,t,r,n,o,i){let a=[[zt,1,1e3],[zt,5,5*1e3],[zt,15,15*1e3],[zt,30,30*1e3],[i,1,6e4],[i,5,5*6e4],[i,15,15*6e4],[i,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(u,f,m){let l=fb).right(a,l);if(p===a.length)return e.every(Js(u/31536e6,f/31536e6,m));if(p===0)return Fu.every(Math.max(Js(u,f,m),1));let[h,y]=a[l/a[p-1][2]53)return null;"w"in E||(E.w=1),"Z"in E?(G=bg(Du(E.y,0,1)),oe=G.getUTCDay(),G=oe>4||oe===0?ia.ceil(G):ia(G),G=os.offset(G,(E.V-1)*7),E.y=G.getUTCFullYear(),E.m=G.getUTCMonth(),E.d=G.getUTCDate()+(E.w+6)%7):(G=yg(Du(E.y,0,1)),oe=G.getDay(),G=oe>4||oe===0?oa.ceil(G):oa(G),G=wn.offset(G,(E.V-1)*7),E.y=G.getFullYear(),E.m=G.getMonth(),E.d=G.getDate()+(E.w+6)%7)}else("W"in E||"U"in E)&&("w"in E||(E.w="u"in E?E.u%7:"W"in E?1:0),oe="Z"in E?bg(Du(E.y,0,1)).getUTCDay():yg(Du(E.y,0,1)).getDay(),E.m=0,E.d="W"in E?(E.w+6)%7+E.W*7-(oe+5)%7:E.w+E.U*7-(oe+6)%7);return"Z"in E?(E.H+=E.Z/100|0,E.M+=E.Z%100,bg(E)):yg(E)}}function T(A,B,Q,E){for(var me=0,G=B.length,oe=Q.length,ue,Ce;me=oe)return-1;if(ue=B.charCodeAt(me++),ue===37){if(ue=B.charAt(me++),Ce=I[ue in PP?B.charAt(me++):ue],!Ce||(E=Ce(A,Q,E))<0)return-1}else if(ue!=Q.charCodeAt(E++))return-1}return E}function O(A,B,Q){var E=u.exec(B.slice(Q));return E?(A.p=f.get(E[0].toLowerCase()),Q+E[0].length):-1}function R(A,B,Q){var E=p.exec(B.slice(Q));return E?(A.w=h.get(E[0].toLowerCase()),Q+E[0].length):-1}function C(A,B,Q){var E=m.exec(B.slice(Q));return E?(A.w=l.get(E[0].toLowerCase()),Q+E[0].length):-1}function k(A,B,Q){var E=w.exec(B.slice(Q));return E?(A.m=g.get(E[0].toLowerCase()),Q+E[0].length):-1}function z(A,B,Q){var E=y.exec(B.slice(Q));return E?(A.m=b.get(E[0].toLowerCase()),Q+E[0].length):-1}function j(A,B,Q){return T(A,t,B,Q)}function M(A,B,Q){return T(A,r,B,Q)}function U(A,B,Q){return T(A,n,B,Q)}function L(A){return a[A.getDay()]}function re(A){return i[A.getDay()]}function V(A){return c[A.getMonth()]}function q(A){return s[A.getMonth()]}function H(A){return o[+(A.getHours()>=12)]}function W(A){return 1+~~(A.getMonth()/3)}function te(A){return a[A.getUTCDay()]}function be(A){return i[A.getUTCDay()]}function K(A){return c[A.getUTCMonth()]}function Z(A){return s[A.getUTCMonth()]}function Y(A){return o[+(A.getUTCHours()>=12)]}function ee(A){return 1+~~(A.getUTCMonth()/3)}return{format:function(A){var B=S(A+="",_);return B.toString=function(){return A},B},parse:function(A){var B=v(A+="",!1);return B.toString=function(){return A},B},utcFormat:function(A){var B=S(A+="",x);return B.toString=function(){return A},B},utcParse:function(A){var B=v(A+="",!0);return B.toString=function(){return A},B}}}var PP={"-":"",_:" ",0:"0"},Gt=/^\s*\d+/,I7=/^%/,_7=/[\\^$*+?|[\]().{}]/g;function De(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",i=o.length;return n+(i[t.toLowerCase(),r]))}function P7(e,t,r){var n=Gt.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function T7(e,t,r){var n=Gt.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function M7(e,t,r){var n=Gt.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function O7(e,t,r){var n=Gt.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function C7(e,t,r){var n=Gt.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function TP(e,t,r){var n=Gt.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function MP(e,t,r){var n=Gt.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function k7(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function R7(e,t,r){var n=Gt.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function N7(e,t,r){var n=Gt.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function OP(e,t,r){var n=Gt.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function A7(e,t,r){var n=Gt.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function CP(e,t,r){var n=Gt.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function E7(e,t,r){var n=Gt.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function F7(e,t,r){var n=Gt.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function $7(e,t,r){var n=Gt.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function D7(e,t,r){var n=Gt.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function L7(e,t,r){var n=I7.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function V7(e,t,r){var n=Gt.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function j7(e,t,r){var n=Gt.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function kP(e,t){return De(e.getDate(),t,2)}function U7(e,t){return De(e.getHours(),t,2)}function B7(e,t){return De(e.getHours()%12||12,t,2)}function z7(e,t){return De(1+wn.count(dr(e),e),t,3)}function FP(e,t){return De(e.getMilliseconds(),t,3)}function G7(e,t){return FP(e,t)+"000"}function K7(e,t){return De(e.getMonth()+1,t,2)}function q7(e,t){return De(e.getMinutes(),t,2)}function H7(e,t){return De(e.getSeconds(),t,2)}function Y7(e){var t=e.getDay();return t===0?7:t}function W7(e,t){return De(Qr.count(dr(e)-1,e),t,2)}function $P(e){var t=e.getDay();return t>=4||t===0?Co(e):Co.ceil(e)}function X7(e,t){return e=$P(e),De(Co.count(dr(e),e)+(dr(e).getDay()===4),t,2)}function Z7(e){return e.getDay()}function Q7(e,t){return De(oa.count(dr(e)-1,e),t,2)}function J7(e,t){return De(e.getFullYear()%100,t,2)}function eE(e,t){return e=$P(e),De(e.getFullYear()%100,t,2)}function tE(e,t){return De(e.getFullYear()%1e4,t,4)}function rE(e,t){var r=e.getDay();return e=r>=4||r===0?Co(e):Co.ceil(e),De(e.getFullYear()%1e4,t,4)}function nE(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+De(t/60|0,"0",2)+De(t%60,"0",2)}function RP(e,t){return De(e.getUTCDate(),t,2)}function oE(e,t){return De(e.getUTCHours(),t,2)}function iE(e,t){return De(e.getUTCHours()%12||12,t,2)}function aE(e,t){return De(1+os.count(hr(e),e),t,3)}function DP(e,t){return De(e.getUTCMilliseconds(),t,3)}function sE(e,t){return DP(e,t)+"000"}function cE(e,t){return De(e.getUTCMonth()+1,t,2)}function fE(e,t){return De(e.getUTCMinutes(),t,2)}function uE(e,t){return De(e.getUTCSeconds(),t,2)}function lE(e){var t=e.getUTCDay();return t===0?7:t}function pE(e,t){return De(Jr.count(hr(e)-1,e),t,2)}function LP(e){var t=e.getUTCDay();return t>=4||t===0?ko(e):ko.ceil(e)}function mE(e,t){return e=LP(e),De(ko.count(hr(e),e)+(hr(e).getUTCDay()===4),t,2)}function dE(e){return e.getUTCDay()}function hE(e,t){return De(ia.count(hr(e)-1,e),t,2)}function yE(e,t){return De(e.getUTCFullYear()%100,t,2)}function bE(e,t){return e=LP(e),De(e.getUTCFullYear()%100,t,2)}function gE(e,t){return De(e.getUTCFullYear()%1e4,t,4)}function xE(e,t){var r=e.getUTCDay();return e=r>=4||r===0?ko(e):ko.ceil(e),De(e.getUTCFullYear()%1e4,t,4)}function wE(){return"+0000"}function NP(){return"%"}function AP(e){return+e}function EP(e){return Math.floor(+e/1e3)}var vc,Pc,VP,Ro,jP;xg({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function xg(e){return vc=gg(e),Pc=vc.format,VP=vc.parse,Ro=vc.utcFormat,jP=vc.utcParse,vc}function SE(e){return new Date(e)}function IE(e){return e instanceof Date?+e:+new Date(+e)}function Mm(e,t,r,n,o,i,a,s,c,u){var f=Mu(),m=f.invert,l=f.domain,p=u(".%L"),h=u(":%S"),y=u("%I:%M"),b=u("%I %p"),w=u("%a %d"),g=u("%b %d"),_=u("%B"),x=u("%Y");function I(S){return(c(S)Wy(e[e.length-1]);var Em=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(X),Fm=se(Em);var $m=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(X),Dm=se($m);var Lm=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(X),Vm=se(Lm);var jm=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(X),Um=se(jm);var Bu=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(X),Tc=se(Bu);var Bm=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(X),zm=se(Bm);var zu=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(X),Mc=se(zu);var Gm=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(X),Km=se(Gm);var qm=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(X),Hm=se(qm);var Ym=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(X),Wm=se(Ym);var Xm=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(X),Zm=se(Xm);var Qm=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(X),Jm=se(Qm);var ed=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(X),td=se(ed);var rd=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(X),nd=se(rd);var od=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(X),id=se(od);var ad=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(X),sd=se(ad);var cd=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(X),fd=se(cd);var ud=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(X),ld=se(ud);var pd=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(X),md=se(pd);var dd=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(X),hd=se(dd);var yd=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(X),bd=se(yd);var gd=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(X),xd=se(gd);var wd=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(X),Sd=se(wd);var Id=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(X),_d=se(Id);var vd=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(X),Pd=se(vd);var Td=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(X),Md=se(Td);var Od=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(X),Cd=se(Od);function kd(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-e*2710.57)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-e*67.37)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-e*2475.67)))))))+")"}var Rd=ac(_r(300,.5,0),_r(-240,.5,1));var Ad=ac(_r(-100,.75,.35),_r(80,1.5,.8)),Ed=ac(_r(260,.75,.35),_r(80,1.5,.8)),Nd=_r();function Fd(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return Nd.h=360*e-100,Nd.s=1.5-1.5*t,Nd.l=.8-.9*t,Nd+""}var $d=yn(),_E=Math.PI/3,vE=Math.PI*2/3;function Dd(e){var t;return e=(.5-e)*Math.PI,$d.r=255*(t=Math.sin(e))*t,$d.g=255*(t=Math.sin(e+_E))*t,$d.b=255*(t=Math.sin(e+vE))*t,$d+""}function Ld(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-e*14825.05)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+e*707.56)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-e*6838.66)))))))+")"}function Vd(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var jd=Vd(X("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),Ud=Vd(X("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),Bd=Vd(X("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),zd=Vd(X("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function cs(e){return function(){return e}}var Rg=Math.cos;var Oc=Math.min,Gu=Math.sin,Le=Math.sqrt,Ng=1e-12,fs=Math.PI,fye=fs/2,Cc=2*fs;function UP(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new ea(t)}var mye=Array.prototype.slice;function BP(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function zP(e){this._context=e}zP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function us(e){return new zP(e)}function GP(e){return e[0]}function KP(e){return e[1]}function Ag(e,t){var r=cs(!0),n=null,o=us,i=null,a=UP(s);e=typeof e=="function"?e:e===void 0?GP:cs(e),t=typeof t=="function"?t:t===void 0?KP:cs(t);function s(c){var u,f=(c=BP(c)).length,m,l=!1,p;for(n==null&&(i=o(p=a())),u=0;u<=f;++u)!(u0)for(var n=e[0],o=t[0],i=e[r]-n,a=t[r]-o,s=-1,c;++s<=r;)c=s/r,this._basis.point(this._beta*e[s]+(1-this._beta)*(n+c*i),this._beta*t[s]+(1-this._beta)*(o+c*a));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var Bg=(function e(t){function r(n){return t===1?new rl(n):new XP(n,t)}return r.beta=function(n){return e(+n)},r})(.85);function Nc(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function qd(e,t){this._context=e,this._k=(1-t)/6}qd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Nc(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Nc(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var zg=(function e(t){function r(n){return new qd(n,t)}return r.tension=function(n){return e(+n)},r})(0);function Hd(e,t){this._context=e,this._k=(1-t)/6}Hd.prototype={areaStart:_n,areaEnd:_n,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Nc(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Gg=(function e(t){function r(n){return new Hd(n,t)}return r.tension=function(n){return e(+n)},r})(0);function Yd(e,t){this._context=e,this._k=(1-t)/6}Yd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Nc(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Kg=(function e(t){function r(n){return new Yd(n,t)}return r.tension=function(n){return e(+n)},r})(0);function nl(e,t,r){var n=e._x1,o=e._y1,i=e._x2,a=e._y2;if(e._l01_a>Ng){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,c=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/c,o=(o*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/c}if(e._l23_a>Ng){var u=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,f=3*e._l23_a*(e._l23_a+e._l12_a);i=(i*u+e._x1*e._l23_2a-t*e._l12_2a)/f,a=(a*u+e._y1*e._l23_2a-r*e._l12_2a)/f}e._context.bezierCurveTo(n,o,i,a,e._x2,e._y2)}function ZP(e,t){this._context=e,this._alpha=t}ZP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:nl(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var qg=(function e(t){function r(n){return t?new ZP(n,t):new qd(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function QP(e,t){this._context=e,this._alpha=t}QP.prototype={areaStart:_n,areaEnd:_n,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:nl(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Hg=(function e(t){function r(n){return t?new QP(n,t):new Hd(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function JP(e,t){this._context=e,this._alpha=t}JP.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:nl(this,e,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Yg=(function e(t){function r(n){return t?new JP(n,t):new Yd(n,0)}return r.alpha=function(n){return e(+n)},r})(.5);function eT(e){this._context=e}eT.prototype={areaStart:_n,areaEnd:_n,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function Wg(e){return new eT(e)}function tT(e){return e<0?-1:1}function rT(e,t,r){var n=e._x1-e._x0,o=t-e._x1,i=(e._y1-e._y0)/(n||o<0&&-0),a=(r-e._y1)/(o||n<0&&-0),s=(i*o+a*n)/(n+o);return(tT(i)+tT(a))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs(s))||0}function nT(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Xg(e,t,r){var n=e._x0,o=e._y0,i=e._x1,a=e._y1,s=(i-n)/3;e._context.bezierCurveTo(n+s,o+s*t,i-s,a-s*r,i,a)}function Wd(e){this._context=e}Wd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Xg(this,this._t0,nT(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Xg(this,nT(this,r=rT(this,e,t)),r);break;default:Xg(this,this._t0,r=rT(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function oT(e){this._context=new iT(e)}(oT.prototype=Object.create(Wd.prototype)).point=function(e,t){Wd.prototype.point.call(this,t,e)};function iT(e){this._context=e}iT.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,o,i){this._context.bezierCurveTo(t,e,n,r,i,o)}};function Zg(e){return new Wd(e)}function Qg(e){return new oT(e)}function sT(e){this._context=e}sT.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=aT(e),o=aT(t),i=0,a=1;a=0;--t)o[t]=(a[t]-o[t+1])/i[t];for(i[r-1]=(e[r]+o[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function ex(e){return new Xd(e,.5)}function tx(e){return new Xd(e,0)}function rx(e){return new Xd(e,1)}function aa(e,t,r){this.k=e,this.x=t,this.y=r}aa.prototype={constructor:aa,scale:function(e){return e===1?this:new aa(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new aa(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var nx=new aa(1,0,0);ox.prototype=aa.prototype;function ox(e){for(;!e.__zoom;)if(!(e=e.parentNode))return nx;return e.__zoom}function vn(e){return e!=null&&!Number.isNaN(e)}function $r(e,t){return+vn(t)-+vn(e)||ht(e,t)}function ls(e,t){return+vn(t)-+vn(e)||mn(e,t)}function ol(e){return e!=null&&`${e}`!=""}function ix(e){return isFinite(e)?e:NaN}function ps(e){return e>0&&isFinite(e)?e:NaN}function Ac(e){return e<0&&isFinite(e)?e:NaN}function Zd(e,t){if(e instanceof Date||(e=new Date(+e)),isNaN(e))return typeof t=="function"?t(e):t;let r=e.getUTCHours(),n=e.getUTCMinutes(),o=e.getUTCSeconds(),i=e.getUTCMilliseconds();return`${NE(e.getUTCFullYear(),4)}-${Ii(e.getUTCMonth()+1,2)}-${Ii(e.getUTCDate(),2)}${r||n||o||i?`T${Ii(r,2)}:${Ii(n,2)}${o||i?`:${Ii(o,2)}${i?`.${Ii(i,3)}`:""}`:""}Z`:""}`}function NE(e){return e<0?`-${Ii(-e,6)}`:e>9999?`+${Ii(e,6)}`:Ii(e,4)}function Ii(e,t){return`${e}`.padStart(t,"0")}var AE=/^(?:[-+]\d{2})?\d{4}(?:-\d{2}(?:-\d{2})?)?(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d{3})?)?(?:Z|[-+]\d{2}:?\d{2})?)?$/;function il(e,t){return AE.test(e+="")?new Date(e):typeof t=="function"?t(e):t}function _i(e){if(e==null)return;let t=e[0],r=e[e.length-1];return mn(t,r)}var Fc=1e3,ca=Fc*60,fa=ca*60,Ao=fa*24,No=Ao*7,ms=Ao*30,sa=Ao*365,ax=[["millisecond",1],["2 milliseconds",2],["5 milliseconds",5],["10 milliseconds",10],["20 milliseconds",20],["50 milliseconds",50],["100 milliseconds",100],["200 milliseconds",200],["500 milliseconds",500],["second",Fc],["5 seconds",5*Fc],["15 seconds",15*Fc],["30 seconds",30*Fc],["minute",ca],["5 minutes",5*ca],["15 minutes",15*ca],["30 minutes",30*ca],["hour",fa],["3 hours",3*fa],["6 hours",6*fa],["12 hours",12*fa],["day",Ao],["2 days",2*Ao],["week",No],["2 weeks",2*No],["month",ms],["3 months",3*ms],["6 months",6*ms],["year",sa],["2 years",2*sa],["5 years",5*sa],["10 years",10*sa],["20 years",20*sa],["50 years",50*sa],["100 years",100*sa]],sx=new Map([["second",Fc],["minute",ca],["hour",fa],["day",Ao],["monday",No],["tuesday",No],["wednesday",No],["thursday",No],["friday",No],["saturday",No],["sunday",No],["week",No],["month",ms],["year",sa]]),fT=new Map([["second",zt],["minute",hi],["hour",bi],["day",wn],["monday",oa],["tuesday",xm],["wednesday",wm],["thursday",Co],["friday",Sm],["saturday",Im],["sunday",Qr],["week",Qr],["month",xi],["year",dr]]),cx=new Map([["second",zt],["minute",yi],["hour",gi],["day",is],["monday",ia],["tuesday",_m],["wednesday",vm],["thursday",ko],["friday",Pm],["saturday",Tm],["sunday",Jr],["week",Jr],["month",wi],["year",hr]]),$c=Symbol("intervalDuration"),Jd=Symbol("intervalType");for(let[e,t]of fT)t[$c]=sx.get(e),t[Jd]="time";for(let[e,t]of cx)t[$c]=sx.get(e),t[Jd]="utc";var al=[["year",hr,"utc"],["month",wi,"utc"],["day",is,"utc",6*ms],["hour",gi,"utc",3*Ao],["minute",yi,"utc",6*fa],["second",zt,"utc",30*ca]],Qd=[["year",dr,"time"],["month",xi,"time"],["day",wn,"time",6*ms],["hour",bi,"time",3*Ao],["minute",hi,"time",6*fa],["second",zt,"time",30*ca]],EE=[al[0],Qd[0],al[1],Qd[1],al[2],Qd[2],...al.slice(3)];function uT(e){let t=`${e}`.toLowerCase();t.endsWith("s")&&(t=t.slice(0,-1));let r=1,n=/^(?:(\d+)\s+)/.exec(t);switch(n&&(t=t.slice(n[0].length),r=+n[1]),t){case"quarter":t="month",r*=3;break;case"half":t="month",r*=6;break}let o=cx.get(t);if(!o)throw new Error(`unknown interval: ${e}`);if(r>1&&!o.every)throw new Error(`non-periodic interval: ${t}`);return[t,r]}function fx(e){return lT(uT(e),"time")}function ux(e){return lT(uT(e),"utc")}function lT([e,t],r){let n=(r==="time"?fT:cx).get(e);return t>1&&(n=n.every(t),n[$c]=sx.get(e)*t,n[Jd]=r),n}function lx(e,t){if(!(t>1))return;let r=e[$c];if(!ax.some(([,o])=>o===r)||r%Ao===0&&AoMath.log(o)).center(ax,Math.log(r*t))];return(e[Jd]==="time"?fx:ux)(n)}function cT(e,t,r){let n=t==="time"?Pc:Ro;if(r==null)return n(e==="year"?"%Y":e==="month"?"%Y-%m":e==="day"?"%Y-%m-%d":e==="hour"||e==="minute"?"%Y-%m-%dT%H:%M":e==="second"?"%Y-%m-%dT%H:%M:%S":"%Y-%m-%dT%H:%M:%S.%L");let o=FE(r);switch(e){case"millisecond":return Ec(n(".%L"),n(":%M:%S"),o);case"second":return Ec(n(":%S"),n("%-I:%M"),o);case"minute":return Ec(n("%-I:%M"),n("%p"),o);case"hour":return Ec(n("%-I %p"),n("%b %-d"),o);case"day":return Ec(n("%-d"),n("%b"),o);case"month":return Ec(n("%b"),n("%Y"),o);case"year":return n("%Y")}throw new Error("unable to format time ticks")}function FE(e){return e==="left"||e==="right"?(t,r)=>` ${t} ${r}`:e==="top"?(t,r)=>`${r} ${t}`:(t,r)=>`${t} -${r}`}function M9(e){return e==="time"?xd:e==="utc"?Ou:v9}function a6(e,t,r){let n=Nt($l(t,(o,i)=>Math.abs(i-o)));if(n<1e3)return r6("millisecond","utc",r);for(let[o,i,a,s]of M9(e)){if(n>s||o==="hour"&&!n)break;if(t.every(f=>i.floor(f)>=f))return r6(o,a,r)}}function cf(e,t,r){return(n,o,i)=>{let a=e(n,o),s=t(n,o),f=o-ni(i);return o!==f&&i[f]!==void 0&&s===t(i[f],f)?a:r(a,s)}}var wg=Object.getPrototypeOf(Uint8Array),O9=Object.prototype.toString;function Dn(e){return e instanceof Array||e instanceof wg}function c6(e){return e instanceof wg&&!R9(e)}function u6(e){return e?.prototype instanceof wg&&!C9(e)}function R9(e){return e instanceof BigInt64Array||e instanceof BigUint64Array}function C9(e){return e===BigInt64Array||e===BigUint64Array}var Sg=Symbol("reindex");function Vt(e,t,r){let n=typeof t;return n==="string"?k6(e)?Ig(e.getChild(t),r):s6(e,_g(t),r):n==="function"?s6(e,t,r):n==="number"||t instanceof Date||n==="boolean"?We(e,Gr(t),r):typeof t?.transform=="function"?bg(t.transform(e),r):A9(bg(t,r),e?.[Sg])}function A9(e,t){return e!=null&&t?wd(e,t):e}function s6(e,t,r){return We(e,u6(r)?(n,o)=>Tg(t(n,o)):t,r)}function bg(e,t){return t===void 0?bo(e):N6(e)?Ig(e,t):e instanceof t?e:t.from(e,u6(t)&&!c6(e)?Tg:void 0)}function Ig(e,t){return e==null?e:(t===void 0||t===Array)&&E9(e.type)?Mg(f6(e)):bg(f6(e),t)}function f6(e){return e.nullCount?e.toJSON():e.toArray()}var pf=[null],_g=e=>t=>{let r=t[e];return r===void 0&&t.type==="Feature"?t.properties?.[e]:r},Ru={transform:Rr},dt={transform:e=>e};var l6=()=>1,p6=()=>!0,wt=e=>e==null?e:`${e}`,St=e=>e==null?e:+e;var vg=e=>e?e[0]:void 0,m6=e=>e?e[1]:void 0;var Gr=e=>()=>e;function d6(e){let t=+`${e}`.slice(1)/100;return(r,n)=>jo(r,t,n)}function za(e){return c6(e)?e:We(e,Tg,Float64Array)}function Tg(e){return e==null?NaN:Number(e)}function Mg(e){return We(e,P9)}function P9(e){return e instanceof Date&&!isNaN(e)?e:typeof e=="string"?Mu(e):e==null||isNaN(e=Number(e))?void 0:new Date(e)}function go(e,t){return e===void 0&&(e=t),e===null?[void 0,"none"]:hf(e)?[void 0,e]:[e,void 0]}function ht(e,t){return e===void 0&&(e=t),e===null||typeof e=="number"?[void 0,e]:[e,void 0]}function Og(e,t,r){if(e!=null)return yr(e,t,r)}function yr(e,t,r){let n=`${e}`.toLowerCase();if(!r.includes(n))throw new Error(`invalid ${t}: ${e}`);return n}function oi(e){return k6(e)?e:bo(e)}function bo(e){if(e==null||Dn(e))return e;if(N6(e))return Ig(e);if(h6(e))switch(e.type){case"FeatureCollection":return e.features;case"GeometryCollection":return e.geometries;default:return[e]}return Array.from(e)}function h6(e){switch(e?.type){case"FeatureCollection":case"GeometryCollection":case"Feature":case"LineString":case"MultiLineString":case"MultiPoint":case"MultiPolygon":case"Point":case"Polygon":case"Sphere":return!0;default:return!1}}function We(e,t,r=Array){return e==null?e:e instanceof r?e.map(t):r.from(e,t)}function Bi(e,t=Array){return e instanceof t?e.slice():t.from(e)}function y6({x:e,x1:t,x2:r}){return e!==void 0||t!==void 0||r!==void 0}function Rg({y:e,y1:t,y2:r}){return e!==void 0||t!==void 0||r!==void 0}function x6(e){return y6(e)||Rg(e)||e.interval!==void 0}function wo(e){return e?.toString===O9}function mf(e){return wo(e)&&(e.type!==void 0||e.domain!==void 0)}function df(e){return wo(e)&&typeof e.transform!="function"}function Gi(e){return df(e)&&e.value===void 0&&e.channel===void 0}function g6(e,t,r,n=dt){return t===void 0&&r===void 0?(t=0,r=e===void 0?n:e):t===void 0?t=e===void 0?0:e:r===void 0&&(r=e===void 0?0:e),[t,r]}function ii(e,t){return e===void 0&&t===void 0?[vg,m6]:[e,t]}function bd({z:e,fill:t,stroke:r}={}){return e===void 0&&([e]=go(t)),e===void 0&&([e]=go(r)),e}function zi(e){return Dn(e)?e.length:e?.numRows}function Rr(e){let t=zi(e),r=new Uint32Array(t);for(let n=0;ne[r],e.constructor):We(t,r=>e.at(r))}function b6(e,t,r){return e.subarray?e.subarray(t,r):e.slice(t,r)}function dn(e){return e!==null&&typeof e=="object"?e.valueOf():e}function Cu(e){let t;return[{transform:()=>t,label:Ki(e)},r=>t=r]}function w6(e){return e==null?[e]:Cu(e)}function Ki(e,t){return typeof e=="string"?e:e&&e.label!==void 0?e.label:t}function S6(e,t){return{transform(r){let n=e.transform(r),o=t.transform(r);return Dt(n)||Dt(o)?We(n,(i,a)=>new Date((+n[a]+ +o[a])/2)):We(n,(i,a)=>(+n[a]+ +o[a])/2,Float64Array)},label:e.label}}function I6(e,t){let r=Cg(t?.interval,t?.type);return r?We(e,r):e}function Cg(e,t){let r=Sd(e,t);return r&&(n=>mn(n)?r.floor(n):n)}function Sd(e,t){if(e!=null){if(typeof e=="number")return k9(e);if(typeof e=="string")return(t==="time"?yg:xg)(e);if(typeof e.floor!="function")throw new Error("invalid interval; missing floor method");if(typeof e.offset!="function")throw new Error("invalid interval; missing offset method");return e}}function k9(e){e=+e,0Math.floor(r*t)/t,offset:(r,n=1)=>(r*t+Math.floor(n))/t,range:(r,n)=>xa(Math.ceil(r*t),n*t).map(o=>o/t)}:{floor:r=>Math.floor(r/t)*t,offset:(r,n=1)=>r+t*Math.floor(n),range:(r,n)=>xa(Math.ceil(r/t),n/t).map(o=>o*t)}}function qi(e,t){if(e=Sd(e,t),e&&typeof e.range!="function")throw new Error("invalid interval: missing range method");return e}function _6(e,t){if(e=qi(e,t),e&&typeof e.ceil!="function")throw new Error("invalid interval: missing ceil method");return e}function v6(e){return typeof e?.range=="function"}function Hi(e){return e===void 0||df(e)?e:{value:e}}function T6(e){return e==null?null:{transform:t=>Vt(t,e,Float64Array),label:Ki(e)}}function hn(e){return e&&typeof e[Symbol.iterator]=="function"}function Id(e){for(let t of e)if(t!=null)return typeof t!="object"||t instanceof Date}function Ag(e){for(let t of e){if(t==null)continue;let r=typeof t;return r==="string"||r==="boolean"}}function Dt(e){for(let t of e)if(t!=null)return t instanceof Date}function M6(e){for(let t of e)if(t!=null)return typeof t=="string"&&isNaN(t)&&Mu(t)}function O6(e){for(let t of e)if(t!=null){if(typeof t!="string")return!1;if(t.trim())return!isNaN(t)}}function R6(e){for(let t of e)if(t!=null)return typeof t=="number"}function _d(e,t){let r;for(let n of e)if(n!=null){if(!t(n))return!1;r=!0}return r}var N9=new Set("none,currentcolor,transparent,aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkgrey,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkslategrey,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dimgrey,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,grey,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgoldenrodyellow,lightgray,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightslategrey,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,rebeccapurple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,slategrey,snow,springgreen,steelblue,tan,teal,thistle,tomato,turquoise,violet,wheat,white,whitesmoke,yellow".split(","));function hf(e){return typeof e!="string"?!1:(e=e.toLowerCase().trim(),/^#[0-9a-f]{3,8}$/.test(e)||/^(?:url|var|rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\(.*\)$/.test(e)||N9.has(e))}function C6(e){return typeof e=="number"&&(0<=e&&e<=1||isNaN(e))}function Ut(e){return e==null||Ka(e)}function Ka(e){return/^\s*none\s*$/i.test(e)}function A6(e){return/^\s*round\s*$/i.test(e)}function vd(e,t){return Og(e,t,["middle","top-left","top","top-right","right","bottom-right","bottom","bottom-left","left"])}function Yi(e="middle"){return vd(e,"frameAnchor")}function P6(e={},...t){let r=e;for(let n of t)for(let o in n)if(r[o]===void 0){let i=n[o];r===e?r={...r,[o]:i}:r[o]=i}return r}function F9(e){console.warn("named iterables are deprecated; please use an object instead");let t=new Set;return Object.fromEntries(Array.from(e,r=>{let{name:n}=r;if(n==null)throw new Error("missing name");let o=`${n}`;if(o==="__proto__")throw new Error(`illegal name: ${o}`);if(t.has(o))throw new Error(`duplicate name: ${o}`);return t.add(o),[n,r]}))}function Pg(e){return hn(e)?F9(e):e}function Td(e){return e===!0?e="frame":e===!1?e=null:!h6(e)&&e!=null&&(e=yr(e,"clip",["frame","sphere"]),e==="sphere"&&(e={type:"Sphere"})),e}function k6(e){return e&&typeof e.getChild=="function"&&typeof e.toArray=="function"&&e.schema&&Array.isArray(e.schema.fields)}function N6(e){return e&&typeof e.toArray=="function"&&e.type}function E9(e){return e&&(e.typeId===8||e.typeId===10)&&e.unit===1}var yn=Symbol("position"),zr=Symbol("color"),qa=Symbol("radius"),Ha=Symbol("length"),Ya=Symbol("opacity"),yf=Symbol("symbol"),F6=Symbol("projection"),Be=new Map([["x",yn],["y",yn],["fx",yn],["fy",yn],["r",qa],["color",zr],["opacity",Ya],["symbol",yf],["length",Ha],["projection",F6]]);function E6(e){return e===yn||e===F6}function $6(e){return e===yn||e===qa||e===Ha||e===Ya}var $9=Math.sqrt(3),L9=2/$9,D9={draw(e,t){let r=Math.sqrt(t/Math.PI),n=r*L9,o=n/2;e.moveTo(0,n),e.lineTo(r,o),e.lineTo(r,-o),e.lineTo(0,-n),e.lineTo(-r,-o),e.lineTo(-r,o),e.closePath()}},kg=new Map([["asterisk",pu],["circle",ti],["cross",mu],["diamond",du],["diamond2",hu],["hexagon",D9],["plus",yu],["square",xu],["square2",gu],["star",bu],["times",of],["triangle",wu],["triangle2",Su],["wye",Iu]]);function Ng(e){return e&&typeof e.draw=="function"}function L6(e){return Ng(e)?!0:typeof e!="string"?!1:kg.has(e.toLowerCase())}function xf(e){if(e==null||Ng(e))return e;let t=kg.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid symbol: ${e}`)}function D6(e){if(e==null||Ng(e))return[void 0,e];if(typeof e=="string"){let t=kg.get(`${e}`.toLowerCase());if(t)return[void 0,t]}return[e,void 0]}function Au({filter:e,sort:t,reverse:r,transform:n,initializer:o,...i}={},a){if(n===void 0&&(e!=null&&(n=V6(e)),t!=null&&!Gi(t)&&(n=Fg(n,$g(t))),r&&(n=Fg(n,U6))),a!=null&&o!=null)throw new Error("transforms cannot be applied after initializers");return{...i,...(t===null||Gi(t))&&{sort:t},transform:Fg(n,a)}}function ai({filter:e,sort:t,reverse:r,initializer:n,...o}={},i){return n===void 0&&(e!=null&&(n=V6(e)),t!=null&&!Gi(t)&&(n=Eg(n,$g(t))),r&&(n=Eg(n,U6))),{...o,...(t===null||Gi(t))&&{sort:t},initializer:Eg(n,i)}}function Fg(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o){return{data:r,facets:n}=e.call(this,r,n,o),t.call(this,oi(r),n,o)}}function Eg(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o,...i){let a,s,f,u,c,m;return{data:s=r,facets:f=n,channels:a}=e.call(this,r,n,o,...i),{data:c=s,facets:m=f,channels:u}=t.call(this,s,f,{...o,...a},...i),{data:c,facets:m,channels:{...a,...u}}}}function V9(e,t){return(e.initializer!=null?ai:Au)(e,t)}function V6(e){return(t,r)=>{let n=Vt(t,e);return{data:t,facets:r.map(o=>o.filter(i=>n[i]))}}}function U6(e,t){return{data:e,facets:t.map(r=>r.slice().reverse())}}function j6(e,{sort:t,...r}={}){return{...(df(e)&&e.channel!==void 0?ai:V9)(r,$g(e)),sort:Gi(t)?t:null}}function $g(e){return(typeof e=="function"&&e.length!==1?U9:j9)(e)}function U9(e){return(t,r)=>{let n=Dn(t)?(o,i)=>e(t[o],t[i]):(o,i)=>e(t.get(o),t.get(i));return{data:t,facets:r.map(o=>o.slice().sort(n))}}}function j9(e){let t,r;({channel:t,value:e,order:r}={...Hi(e)});let n=t?.startsWith("-");if(n&&(t=t.slice(1)),r===void 0&&(r=n?ja:Or),typeof r!="function")switch(`${r}`.toLowerCase()){case"ascending":r=Or;break;case"descending":r=ja;break;default:throw new Error(`invalid order: ${r}`)}return(o,i,a)=>{let s;if(t===void 0)s=Vt(o,e);else{if(a===void 0)throw new Error("channel sort requires an initializer");if(s=a[t],!s)return{};s=s.value}let f=(u,c)=>r(s[u],s[c]);return{data:o,facets:i.map(u=>u.slice().sort(f))}}}function K6(e,t,r=B9){if(e==null)return r(e);if(typeof e.reduceIndex=="function")return e;if(typeof e.reduce=="function"&&wo(e))return G9(e);if(typeof e=="function")return z9(e);if(/^p\d{2}$/i.test(e))return si(d6(e));switch(`${e}`.toLowerCase()){case"first":return q9;case"last":return H9;case"identity":return K9;case"count":return G6;case"distinct":return Y9;case"sum":return t==null?G6:W9;case"proportion":return z6(t,"data");case"proportion-facet":return z6(t,"facet");case"deviation":return si(Cl);case"min":return si(mr);case"min-index":return si(kl);case"max":return si(Nt);case"max-index":return si(Pl);case"mean":return B6(Fl);case"median":return B6(ya);case"variance":return si(Ts);case"mode":return si(El)}return r(e)}function B9(e){throw new Error(`invalid reduce: ${e}`)}function G9(e){return console.warn("deprecated reduce interface; implement reduceIndex instead."),{...e,reduceIndex:e.reduce.bind(e)}}function z9(e){return{reduceIndex(t,r,n){return e(wd(r,t),n)}}}function si(e){return{reduceIndex(t,r){return e(t,n=>r[n])}}}function B6(e){return{reduceIndex(t,r){let n=e(t,o=>r[o]);return Dt(r)?new Date(n):n}}}var K9={reduceIndex(e,t){return wd(t,e)}},q9={reduceIndex(e,t){return t[e[0]]}};var H9={reduceIndex(e,t){return t[e[e.length-1]]}},G6={label:"Frequency",reduceIndex(e){return e.length}},Y9={label:"Distinct",reduceIndex(e,t){let r=new Pn;for(let n of e)r.add(t[n]);return r.size}},W9=si(rn);function z6(e,t){return e==null?{scope:t,label:"Frequency",reduceIndex:(r,n,o=1)=>r.length/o}:{scope:t,reduceIndex:(r,n,o=1)=>rn(r,i=>n[i])/o}}function gf(e,{scale:t,type:r,value:n,filter:o,hint:i,label:a=Ki(n)},s){return i===void 0&&typeof n?.transform=="function"&&(i=n.hint),Dg(s,{scale:t,type:r,value:Vt(e,n),label:a,filter:o,hint:i})}function H6(e,t){return Object.fromEntries(Object.entries(e).map(([r,n])=>[r,gf(t,n,r)]))}function Y6(e,t){let r=Object.fromEntries(Object.entries(e).map(([n,{scale:o,value:i}])=>{let a=o==null?null:t[o];return[n,a==null?i:We(i,a)]}));return r.channels=e,r}function Dg(e,t){let{scale:r,value:n}=t;if(r===!0||r==="auto")switch(e){case"fill":case"stroke":case"color":t.scale=r!==!0&&_d(n,hf)?null:"color",t.defaultScale="color";break;case"fillOpacity":case"strokeOpacity":case"opacity":t.scale=r!==!0&&_d(n,C6)?null:"opacity",t.defaultScale="opacity";break;case"symbol":r!==!0&&_d(n,L6)?(t.scale=null,t.value=We(n,xf)):t.scale="symbol",t.defaultScale="symbol";break;default:t.scale=Be.has(e)?e:null;break}else if(r===!1)t.scale=null;else if(r!=null&&!Be.has(r))throw new Error(`unknown scale: ${r}`);return t}function W6(e,t,r,n,o){let{order:i,reverse:a,reduce:s=!0,limit:f}=o;for(let u in o){if(!Be.has(u))continue;let{value:c,order:m=i,reverse:l=a,reduce:p=s,limit:d=f}=Hi(o[u]),y=c?.startsWith("-");if(y&&(c=c.slice(1)),m=m===void 0?y!==(c==="width"||c==="height")?Z6:X6:Q9(m),p==null||p===!1)continue;let x=u==="fx"||u==="fy"?Z9(t,n[u]):X9(r,u);if(!x)throw new Error(`missing channel for scale: ${u}`);let w=x.value,[g=0,S=1/0]=hn(d)?d:d<0?[d]:[0,d];if(c==null)x.domain=()=>{let b=Array.from(new Pn(w));return l&&(b=b.reverse()),(g!==0||S!==1/0)&&(b=b.slice(g,S)),b};else{let b=c==="data"?e:c==="height"?q6(r,"y1","y2"):c==="width"?q6(r,"x1","x2"):Lg(r,c,c==="y"?"y2":c==="x"?"x2":void 0),T=K6(p===!0?"max":p,b);x.domain=()=>{let I=F0(Rr(w),v=>T.reduceIndex(v,b),v=>w[v]);return m&&I.sort(m),l&&I.reverse(),(g!==0||S!==1/0)&&(I=I.slice(g,S)),I.map(vg)}}}}function X9(e,t){for(let r in e){let n=e[r];if(n.scale===t)return n}}function Z9(e,t){let r=e.original;if(r===e)return t;let n=t.value,o=t.value=[];for(let i=0;iMath.abs(i-n[a]),Float64Array)}function Lg(e,t,r){let n=e[t];if(!n&&r!==void 0&&(n=e[r]),n)return n.value;throw new Error(`missing channel: ${t}`)}function Q9(e){if(e==null||typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"ascending":return X6;case"descending":return Z6}throw new Error(`invalid order: ${e}`)}function X6([e,t],[r,n]){return Or(t,n)||Or(e,r)}function Z6([e,t],[r,n]){return ja(t,n)||Or(e,r)}function Vg(e,t){let r=e[t];if(r){for(;r.source;)r=r.source;return r.source===null?null:r}}var rT=new Map([["accent",Rx],["category10",Ox],["dark2",Cx],["observable10",Ax],["paired",Px],["pastel1",kx],["pastel2",Nx],["set1",Fx],["set2",Ex],["set3",$x],["tableau10",Lx]]);function nT(e){return e!=null&&rT.has(`${e}`.toLowerCase())}var Q6=new Map([...rT,["brbg",fi(Jp,em)],["prgn",fi(tm,rm)],["piyg",fi(nm,om)],["puor",fi(im,am)],["rdbu",fi(cu,ef)],["rdgy",fi(sm,fm)],["rdylbu",fi(uu,tf)],["rdylgn",fi(cm,um)],["spectral",fi(lm,pm)],["burd",J6(cu,ef)],["buylrd",J6(uu,tf)],["blues",jt(Lm,Dm)],["greens",jt(Vm,Um)],["greys",jt(jm,Bm)],["oranges",jt(Hm,Ym)],["purples",jt(Gm,zm)],["reds",jt(Km,qm)],["turbo",ci(nd)],["viridis",ci(id)],["magma",ci(ad)],["inferno",ci(sd)],["plasma",ci(fd)],["cividis",ci(Wm)],["cubehelix",ci(Xm)],["warm",ci(Qm)],["cool",ci(Jm)],["bugn",jt(mm,dm)],["bupu",jt(hm,ym)],["gnbu",jt(xm,gm)],["orrd",jt(bm,wm)],["pubu",jt(_m,vm)],["pubugn",jt(Sm,Im)],["purd",jt(Tm,Mm)],["rdpu",jt(Om,Rm)],["ylgn",jt(Pm,km)],["ylgnbu",jt(Cm,Am)],["ylorbr",jt(Nm,Fm)],["ylorrd",jt(Em,$m)],["rainbow",eT(ed)],["sinebow",eT(rd)]]);function jt(e,t){return({length:r})=>r===1?[e[3][1]]:r===2?[e[3][1],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>9?ir(t,r):e[r])}function fi(e,t){return({length:r})=>r===2?[e[3][0],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>11?ir(t,r):e[r])}function J6(e,t){return({length:r})=>r===2?[e[3][2],e[3][0]]:(r=Math.max(3,Math.floor(r)),r>11?ir(n=>t(1-n),r):e[r].slice().reverse())}function ci(e){return({length:t})=>ir(e,Math.max(2,Math.floor(t)))}function eT(e){return({length:t})=>ir(e,Math.floor(t)+1).slice(0,-1)}function Ug(e){let t=`${e}`.toLowerCase();if(!Q6.has(t))throw new Error(`unknown ordinal scheme: ${t}`);return Q6.get(t)}function Pu(e,t){let r=Ug(e),n=typeof r=="function"?r({length:t}):r;return n.length!==t?n.slice(0,t):n}function oT(e,t="greys"){let r=new Set,[n,o]=Pu(t,2);for(let i of e)if(i!=null)if(i===!0)r.add(o);else if(i===!1)r.add(n);else return;return[...r]}var tT=new Map([["brbg",em],["prgn",rm],["piyg",om],["puor",am],["rdbu",ef],["rdgy",fm],["rdylbu",tf],["rdylgn",um],["spectral",pm],["burd",e=>ef(1-e)],["buylrd",e=>tf(1-e)],["blues",Dm],["greens",Um],["greys",Bm],["purples",zm],["reds",qm],["oranges",Ym],["turbo",nd],["viridis",id],["magma",ad],["inferno",sd],["plasma",fd],["cividis",Wm],["cubehelix",Xm],["warm",Qm],["cool",Jm],["bugn",dm],["bupu",ym],["gnbu",gm],["orrd",wm],["pubugn",Im],["pubu",vm],["purd",Mm],["rdpu",Rm],["ylgnbu",Am],["ylgn",km],["ylorbr",Fm],["ylorrd",$m],["rainbow",ed],["sinebow",rd]]);function bf(e){let t=`${e}`.toLowerCase();if(!tT.has(t))throw new Error(`unknown quantitative scheme: ${t}`);return tT.get(t)}var J9=new Set(["brbg","prgn","piyg","puor","rdbu","rdgy","rdylbu","rdylgn","spectral","burd","buylrd"]);function iT(e){return e!=null&&J9.has(`${e}`.toLowerCase())}var Bg=e=>t=>e(1-t),jg=[0,1],aT=new Map([["number",et],["rgb",an],["hsl",fy],["hcl",cy],["lab",Ql]]);function Gg(e){let t=`${e}`.toLowerCase();if(!aT.has(t))throw new Error(`unknown interpolator: ${t}`);return aT.get(t)}function Sf(e,t,r,{type:n,nice:o,clamp:i,zero:a,domain:s=hT(e,r),unknown:f,round:u,scheme:c,interval:m,range:l=Be.get(e)===qa?nN(r,s):Be.get(e)===Ha?oN(r,s):Be.get(e)===Ya?jg:void 0,interpolate:p=Be.get(e)===zr?c==null&&l!==void 0?an:bf(c!==void 0?c:n==="cyclical"?"rainbow":"turbo"):u?_a:et,reverse:d}){if(s=sT(s),m=qi(m,n),(n==="cyclical"||n==="sequential")&&(n="linear"),typeof p!="function"&&(p=Gg(p)),d=!!d,l!==void 0){let y=s.length,x=(l=sT(l)).length;if(y!==x){if(p.length===1)throw new Error("invalid piecewise interpolator");p=no(p,l),l=void 0}}if(p.length===1?(d&&(p=Bg(p),d=!1),l===void 0&&(l=Float64Array.from(s,(y,x)=>x/(s.length-1)),l.length===2&&(l=jg)),t.interpolate((l===jg?Gr:ku)(p))):t.interpolate(p),a){let[y,x]=Tr(s);(y>0||x<0)&&(s=Bi(s),(ni(s)||1)===Math.sign(y)?s[0]=0:s[s.length-1]=0)}return d&&(s=Oi(s)),t.domain(s).unknown(f),o&&(t.nice(eN(o,n)),s=t.domain()),l!==void 0&&t.range(l),i&&t.clamp(i),{type:n,domain:s,range:l,scale:t,interpolate:p,interval:m}}function sT(e){return e=bo(e),e.length>=2?e:[e[0],e[0]]}function eN(e,t){return e===!0?void 0:typeof e=="number"?e:_6(e,t)}function fT(e,t,r){return Sf(e,Pa(),t,r)}function cT(e,t,r){return zg(e,t,{...r,exponent:.5})}function zg(e,t,{exponent:r=1,...n}){return Sf(e,Jc().exponent(r),t,{...n,type:"pow"})}function uT(e,t,{base:r=10,domain:n=iN(t),...o}){return Sf(e,Zc().base(r),t,{...o,domain:n})}function lT(e,t,{constant:r=1,...n}){return Sf(e,Qc().constant(r),t,n)}function pT(e,t,{range:r,quantiles:n=r===void 0?5:(r=[...r]).length,n:o=n,scheme:i="rdylbu",domain:a=aN(t),unknown:s,interpolate:f,reverse:u}){return r===void 0&&(r=f!==void 0?ir(f,o):Be.get(e)===zr?Pu(i,o):void 0),a.length>0&&(a=eu(a,r===void 0?{length:o}:r).quantiles()),Md(e,t,{domain:a,range:r,reverse:u,unknown:s})}function mT(e,t,{range:r,n=r===void 0?5:(r=[...r]).length,scheme:o="rdylbu",domain:i=hT(e,t),unknown:a,interpolate:s,reverse:f}){let[u,c]=Tr(i),m;return r===void 0?(m=Uo(u,c,n),m[0]<=u&&m.splice(0,1),m[m.length-1]>=c&&m.pop(),n=m.length+1,r=s!==void 0?ir(s,n):Be.get(e)===zr?Pu(o,n):void 0):(m=ir(et(u,c),n+1).slice(1,-1),u instanceof Date&&(m=m.map(l=>new Date(l)))),ni(bo(i))<0&&m.reverse(),Md(e,t,{domain:m,range:r,reverse:f,unknown:a})}function Md(e,t,{domain:r=[0],unknown:n,scheme:o="rdylbu",interpolate:i,range:a=i!==void 0?ir(i,r.length+1):Be.get(e)===zr?Pu(o,r.length+1):void 0,reverse:s}){r=bo(r);let f=ni(r);if(!isNaN(f)&&!tN(r,f))throw new Error(`the ${e} scale has a non-monotonic domain`);return s&&(a=Oi(a)),{type:"threshold",scale:tu(f<0?Oi(r):r,a===void 0?[]:a).unknown(n),domain:r,range:a}}function tN(e,t){for(let r=1,n=e.length,o=e[0];rt}}function wf(e,t=pg){return e.length?[mr(e,({value:r})=>r===void 0?r:mr(r,t)),Nt(e,({value:r})=>r===void 0?r:Nt(r,t))]:[0,1]}function hT(e,t){let r=Be.get(e);return(r===qa||r===Ya||r===Ha?rN:wf)(t)}function rN(e){return[0,e.length?Nt(e,({value:t})=>t===void 0?t:Nt(t,pg)):1]}function nN(e,t){let r=e.find(({radius:a})=>a!==void 0);if(r!==void 0)return[0,r.radius];let n=jo(e,.5,({value:a})=>a===void 0?NaN:jo(a,.25,Ba)),o=t.map(a=>3*Math.sqrt(a/n)),i=30/Nt(o);return i<1?o.map(a=>a*i):o}function oN(e,t){let r=ya(e,({value:i})=>i===void 0?NaN:ya(i,Math.abs)),n=t.map(i=>12*i/r),o=60/Nt(n);return o<1?n.map(i=>i*o):n}function iN(e){for(let{value:t}of e)if(t!==void 0)for(let r of t){if(r>0)return wf(e,Ba);if(r<0)return wf(e,ff)}return[1,10]}function aN(e){let t=[];for(let{value:r}of e)if(r!==void 0)for(let n of r)t.push(n);return t}function ku(e){return(t,r)=>n=>e(t+n*(r-t))}var Kg=0,qg;function yT(){let e=Kg;return Kg=0,qg=void 0,e}function Cr(e){e!==qg&&(qg=e,console.warn(e),++Kg)}function Od(e,t,r,n,{type:o,nice:i,clamp:a,domain:s=wf(n),unknown:f,pivot:u=0,scheme:c,range:m,symmetric:l=!0,interpolate:p=Be.get(e)===zr?c==null&&m!==void 0?an:bf(c!==void 0?c:"rdbu"):et,reverse:d}){u=+u,s=bo(s);let[y,x]=s;if(s.length>2&&Cr(`Warning: the diverging ${e} scale domain contains extra elements.`),tn(y,x)<0&&([y,x]=[x,y],d=!d),y=Math.min(y,u),x=Math.max(x,u),typeof p!="function"&&(p=Gg(p)),m!==void 0&&(p=p.length===1?ku(p)(...m):no(p,m)),d&&(p=Bg(p)),l){let w=r.apply(u),g=w-r.apply(y),S=r.apply(x)-w;gS&&(x=r.invert(w+g))}return t.domain([y,u,x]).unknown(f).interpolator(p),a&&t.clamp(a),i&&t.nice(i),{type:o,domain:[y,x],pivot:u,interpolate:p,scale:t}}function xT(e,t,r){return Od(e,fu(),sN,t,r)}function gT(e,t,r){return Hg(e,t,{...r,exponent:.5})}function Hg(e,t,{exponent:r=1,...n}){return Od(e,Qp().exponent(r=+r),uN(r),t,{...n,type:"diverging-pow"})}function bT(e,t,{base:r=10,pivot:n=1,domain:o=wf(t,n<0?ff:Ba),...i}){return Od(e,Xp().base(r=+r),fN,t,{domain:o,pivot:n,...i})}function wT(e,t,{constant:r=1,...n}){return Od(e,Zp().constant(r=+r),lN(r),t,n)}var sN={apply(e){return e},invert(e){return e}},fN={apply:Math.log,invert:Math.exp},cN={apply(e){return Math.sign(e)*Math.sqrt(Math.abs(e))},invert(e){return Math.sign(e)*(e*e)}};function uN(e){return e===.5?cN:{apply(t){return Math.sign(t)*Math.pow(Math.abs(t),e)},invert(t){return Math.sign(t)*Math.pow(Math.abs(t),1/e)}}}function lN(e){return{apply(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))},invert(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}}function ST(e,t,r,n){return Sf(e,t,r,n)}function IT(e,t,r){return ST(e,Hp(),t,r)}function _T(e,t,r){return ST(e,Yp(),t,r)}var If=Symbol("ordinal");function TT(e,t,r,{type:n,interval:o,domain:i,range:a,reverse:s,hint:f}){return o=qi(o,n),i===void 0&&(i=AT(r,o,e)),(n==="categorical"||n===If)&&(n="ordinal"),s&&(i=Oi(i)),i=t.domain(i).domain(),a!==void 0&&(typeof a=="function"&&(a=a(i)),t.range(a)),{type:n,domain:i,range:a,scale:t,hint:f,interval:o}}function MT(e,t,{type:r,interval:n,domain:o,range:i,scheme:a,unknown:s,...f}){n=qi(n,r),o===void 0&&(o=AT(t,n,e));let u;if(Be.get(e)===yf)u=pN(t),i=i===void 0?mN(u):We(i,xf);else if(Be.get(e)===zr&&(i===void 0&&(r==="ordinal"||r===If)&&(i=oT(o,a),i!==void 0&&(a=void 0)),a===void 0&&i===void 0&&(a=r==="ordinal"?"turbo":"observable10"),a!==void 0))if(i!==void 0){let c=bf(a),m=i[0],l=i[1]-i[0];i=({length:p})=>ir(d=>c(m+l*d),p)}else i=Ug(a);if(s===Hc)throw new Error(`implicit unknown on ${e} scale is not supported`);return TT(e,Ca().unknown(s),t,{...f,type:r,domain:o,range:i,hint:u})}function OT(e,t,{align:r=.5,padding:n=.5,...o}){return CT(ux().align(r).padding(n),t,o,e)}function RT(e,t,{align:r=.5,padding:n=.1,paddingInner:o=n,paddingOuter:i=e==="fx"||e==="fy"?0:n,...a}){return CT(Ei().align(r).paddingInner(o).paddingOuter(i),t,a,e)}function CT(e,t,r,n){let{round:o}=r;return o!==void 0&&e.round(o=!!o),e=TT(n,e,t,r),e.round=o,e}function AT(e,t,r){let n=new Pn;for(let{value:o,domain:i}of e){if(i!==void 0)return i();if(o!==void 0)for(let a of o)n.add(a)}if(t!==void 0){let[o,i]=Tr(n).map(t.floor,t);return t.range(o,t.offset(i))}if(n.size>1e4&&Be.get(r)===yn)throw new Error(`implicit ordinal domain of ${r} scale has more than 10,000 values`);return Mi(n,Or)}function vT(e,t){let r;for(let{hint:n}of e){let o=n?.[t];if(o!==void 0){if(r===void 0)r=o;else if(r!==o)return}}return r}function pN(e){return{fill:vT(e,"fill"),stroke:vT(e,"stroke")}}function mN(e){return Ut(e.fill)?Kx:ud}function Nu(e,{label:t,inset:r=0,insetTop:n=r,insetRight:o=r,insetBottom:i=r,insetLeft:a=r,round:s,nice:f,clamp:u,zero:c,align:m,padding:l,projection:p,facet:{label:d=t}={},...y}={}){let x={};for(let[w,g]of e){let S=y[w],b=yN(w,g,{round:Be.get(w)===yn?s:void 0,nice:f,clamp:u,zero:c,align:m,padding:l,projection:p,...S});if(b){let{label:T=w==="fx"||w==="fy"?d:t,percent:I,transform:v,inset:O,insetTop:C=O!==void 0?O:w==="y"?n:0,insetRight:E=O!==void 0?O:w==="x"?o:0,insetBottom:A=O!==void 0?O:w==="y"?i:0,insetLeft:F=O!==void 0?O:w==="x"?a:0}=S||{};if(v==null)v=void 0;else if(typeof v!="function")throw new Error("invalid scale transform; not a function");b.percent=!!I,b.label=T===void 0?dN(g,b):T,b.transform=v,w==="x"||w==="fx"?(b.insetLeft=+F,b.insetRight=+E):(w==="y"||w==="fy")&&(b.insetTop=+C,b.insetBottom=+A),x[w]=b}}return x}function Wg(e){let t={},r={scales:t};for(let[n,o]of Object.entries(e)){let{scale:i,type:a,interval:s,label:f}=o;t[n]=wN(o),r[n]=i,i.type=a,s!=null&&(i.interval=s),f!=null&&(i.label=f)}return r}function ET(e,t){let{x:r,y:n,fx:o,fy:i}=e,a=o||i?Cd(t):t;o&&PT(o,a),i&&kT(i,a);let s=o||i?Xg(e,t):t;r&&PT(r,s),n&&kT(n,s)}function dN(e=[],t){let r;for(let{label:n}of e)if(n!==void 0){if(r===void 0)r=n;else if(r!==n)return}if(r!==void 0)return!So(t)&&t.percent&&(r=`${r} (%)`),{inferred:!0,toString:()=>r}}function $T(e){return Math.sign(ni(e.domain()))*Math.sign(ni(e.range()))}function Cd(e){let{marginTop:t,marginRight:r,marginBottom:n,marginLeft:o,width:i,height:a,facet:{marginTop:s,marginRight:f,marginBottom:u,marginLeft:c}}=e;return{marginTop:Math.max(t,s),marginRight:Math.max(r,f),marginBottom:Math.max(n,u),marginLeft:Math.max(o,c),width:i,height:a}}function Xg({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:f}=Cd(r);return{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:e?e.scale.bandwidth()+a+o:s,height:t?t.scale.bandwidth()+n+i:f,facet:{width:s,height:f}}}function PT(e,t){if(e.range===void 0){let{insetLeft:r,insetRight:n}=e,{width:o,marginLeft:i=0,marginRight:a=0}=t,s=i+r,f=o-a-n;e.range=[s,Math.max(s,f)],So(e)||(e.range=DT(e)),e.scale.range(e.range)}LT(e)}function kT(e,t){if(e.range===void 0){let{insetTop:r,insetBottom:n}=e,{height:o,marginTop:i=0,marginBottom:a=0}=t,s=i+r,f=o-a-n;e.range=[Math.max(s,f),s],So(e)?e.range.reverse():e.range=DT(e),e.scale.range(e.range)}LT(e)}function LT(e){e.round===void 0&&gN(e)&&hN(e)<=30&&e.scale.round(!0)}function hN({scale:e}){let t=e.domain().length,[r,n]=e.range(),o=e.paddingInner?e.paddingInner():1,i=e.paddingOuter?e.paddingOuter():e.padding(),a=t-o,s=Math.abs(n-r)/Math.max(1,a+i*2);return(s-Math.floor(s))*a}function DT(e){let t=e.scale.domain().length+Zg(e);if(!(t>2))return e.range;let[r,n]=e.range;return Array.from({length:t},(o,i)=>r+i/(t-1)*(n-r))}function yN(e,t=[],r={}){let n=xN(e,t,r);if(r.type===void 0&&r.domain===void 0&&r.range===void 0&&r.interval==null&&e!=="fx"&&e!=="fy"&&So({type:n})){let o=t.map(({value:i})=>i).filter(i=>i!==void 0);o.some(Dt)?Cr(`Warning: some data associated with the ${e} scale are dates. Dates are typically associated with a "utc" or "time" scale rather than a "${_f(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., d3.utcDay), or you can suppress this warning by setting the type of the ${e} scale to "${_f(n)}".`):o.some(M6)?Cr(`Warning: some data associated with the ${e} scale are strings that appear to be dates (e.g., YYYY-MM-DD). If these strings represent dates, you should parse them to Date objects. Dates are typically associated with a "utc" or "time" scale rather than a "${_f(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can suppress this warning by setting the type of the ${e} scale to "${_f(n)}".`):o.some(O6)&&Cr(`Warning: some data associated with the ${e} scale are strings that appear to be numbers. If these strings represent numbers, you should parse or coerce them to numbers. Numbers are typically associated with a "linear" scale rather than a "${_f(n)}" scale. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., 1 for integers), or you can suppress this warning by setting the type of the ${e} scale to "${_f(n)}".`)}switch(r.type=n,n){case"diverging":case"diverging-sqrt":case"diverging-pow":case"diverging-log":case"diverging-symlog":case"cyclical":case"sequential":case"linear":case"sqrt":case"threshold":case"quantile":case"pow":case"log":case"symlog":r=Rd(t,r,za);break;case"identity":switch(Be.get(e)){case yn:r=Rd(t,r,za);break;case yf:r=Rd(t,r,bN);break}break;case"utc":case"time":r=Rd(t,r,Mg);break}switch(n){case"diverging":return xT(e,t,r);case"diverging-sqrt":return gT(e,t,r);case"diverging-pow":return Hg(e,t,r);case"diverging-log":return bT(e,t,r);case"diverging-symlog":return wT(e,t,r);case"categorical":case"ordinal":case If:return MT(e,t,r);case"cyclical":case"sequential":case"linear":return fT(e,t,r);case"sqrt":return cT(e,t,r);case"threshold":return Md(e,t,r);case"quantile":return pT(e,t,r);case"quantize":return mT(e,t,r);case"pow":return zg(e,t,r);case"log":return uT(e,t,r);case"symlog":return lT(e,t,r);case"utc":return _T(e,t,r);case"time":return IT(e,t,r);case"point":return OT(e,t,r);case"band":return RT(e,t,r);case"identity":return dT(e);case void 0:return;default:throw new Error(`unknown scale type: ${n}`)}}function _f(e){return typeof e=="symbol"?e.description:e}function NT(e){return typeof e=="string"?`${e}`.toLowerCase():e}var FT={toString:()=>"projection"};function xN(e,t,{type:r,domain:n,range:o,scheme:i,pivot:a,projection:s}){if(r=NT(r),e==="fx"||e==="fy")return"band";(e==="x"||e==="y")&&s!=null&&(r=FT);for(let c of t){let m=NT(c.type);if(m!==void 0){if(r===void 0)r=m;else if(r!==m)throw new Error(`scale incompatible with channel: ${r} !== ${m}`)}}if(r===FT)return;if(r!==void 0)return r;if(n===void 0&&!t.some(({value:c})=>c!==void 0))return;let f=Be.get(e);if(f===qa)return"sqrt";if(f===Ya||f===Ha)return"linear";if(f===yf)return"ordinal";let u=(n??o)?.length;if(u<2||u>2)return Yg(f);if(n!==void 0){if(Ag(n))return Yg(f);if(Dt(n))return"utc"}else{let c=t.map(({value:m})=>m).filter(m=>m!==void 0);if(c.some(Ag))return Yg(f);if(c.some(Dt))return"utc"}if(f===zr){if(a!=null||iT(i))return"diverging";if(nT(i))return"categorical"}return"linear"}function Yg(e){switch(e){case yn:return"point";case zr:return If;default:return"ordinal"}}function So({type:e}){return e==="ordinal"||e==="point"||e==="band"||e===If}function Zg({type:e}){return e==="threshold"}function gN({type:e}){return e==="point"||e==="band"}function Wi(e){if(e===void 0)return!0;let t=e.domain(),r=e(t[0]);for(let n=1,o=t.length;n{if(!Be.has(t=`${t}`))throw new Error(`unknown scale: ${t}`);return e[t]}}function wN({scale:e,type:t,domain:r,range:n,interpolate:o,interval:i,transform:a,percent:s,pivot:f}){if(t==="identity")return{type:"identity",apply:c=>c,invert:c=>c};let u=e.unknown?e.unknown():void 0;return{type:t,domain:Bi(r),...n!==void 0&&{range:Bi(n)},...a!==void 0&&{transform:a},...s&&{percent:s},...u!==void 0&&{unknown:u},...i!==void 0&&{interval:i},...o!==void 0&&{interpolate:o},...e.clamp&&{clamp:e.clamp()},...f!==void 0&&{pivot:f,symmetric:!1},...e.base&&{base:e.base()},...e.exponent&&{exponent:e.exponent()},...e.constant&&{constant:e.constant()},...e.align&&{align:e.align(),round:e.round()},...e.padding&&(e.paddingInner?{paddingInner:e.paddingInner(),paddingOuter:e.paddingOuter()}:{padding:e.padding()}),...e.bandwidth&&{bandwidth:e.bandwidth(),step:e.step()},apply:c=>e(c),...e.invert&&{invert:c=>e.invert(c)}}}function jT(e,t){let{fx:r,fy:n}=Nu(e,t),o=r?.scale.domain(),i=n?.scale.domain();return o&&i?Ol(o,i).map(([a,s],f)=>({x:a,y:s,i:f})):o?o.map((a,s)=>({x:a,i:s})):i?i.map((a,s)=>({y:a,i:s})):void 0}function BT(e,{x:t,y:r}){return t&&=rb(t),r&&=rb(r),e.filter(t&&r?n=>t.has(n.x)&&r.has(n.y):t?n=>t.has(n.x):n=>r.has(n.y)).sort(t&&r?(n,o)=>t.get(n.x)-t.get(o.x)||r.get(n.y)-r.get(o.y):t?(n,o)=>t.get(n.x)-t.get(o.x):(n,o)=>r.get(n.y)-r.get(o.y))}function Pd(e,{fx:t,fy:r}){let n=Rr(e),o=t?.value,i=r?.value;return t&&r?Qn(n,a=>(a.fx=o[a[0]],a.fy=i[a[0]],a),a=>o[a],a=>i[a]):t?Qn(n,a=>(a.fx=o[a[0]],a),a=>o[a]):Qn(n,a=>(a.fy=i[a[0]],a),a=>i[a])}function GT(e,t,{marginTop:r,marginLeft:n}){let o=e?({x:a})=>e(a)-n:()=>0,i=t?({y:a})=>t(a)-r:()=>0;return function(a){this.tagName==="svg"?(this.setAttribute("x",o(a)),this.setAttribute("y",i(a))):this.setAttribute("transform",`translate(${o(a)},${i(a)})`)}}function zT(e){let t=[],r=new Uint32Array(rn(e,n=>n.length));for(let n of e){let o=0;for(let i of e)n!==i&&(r.set(i,o),o+=i.length);t.push(r.slice(0,o))}return t}var SN=new Map([["top",Qg],["right",tb],["bottom",Jg],["left",eb],["top-left",Ad(Qg,eb)],["top-right",Ad(Qg,tb)],["bottom-left",Ad(Jg,eb)],["bottom-right",Ad(Jg,tb)],["top-empty",_N],["right-empty",MN],["bottom-empty",vN],["left-empty",TN],["empty",ON]]);function KT(e){if(e==null)return null;let t=SN.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid facet anchor: ${e}`)}var UT=new WeakMap;function rb(e){let t=UT.get(e);return t||UT.set(e,t=new pr(We(e,(r,n)=>[r,n]))),t}function Xi(e,t){return rb(e).get(t)}function IN(e,t,r){return t=dn(t),r=dn(r),e.find(n=>Object.is(dn(n.x),t)&&Object.is(dn(n.y),r))}function kd(e,t,r){return IN(e,t,r)?.empty}function Qg(e,{y:t},{y:r}){return t?Xi(t,r)===0:!0}function Jg(e,{y:t},{y:r}){return t?Xi(t,r)===t.length-1:!0}function eb(e,{x:t},{x:r}){return t?Xi(t,r)===0:!0}function tb(e,{x:t},{x:r}){return t?Xi(t,r)===t.length-1:!0}function _N(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Xi(t,n);if(i>0)return kd(e,r,t[i-1])}function vN(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Xi(t,n);if(i0)return kd(e,t[i-1],n)}function MN(e,{x:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=Xi(t,r);if(in.get(o)?.get(i)??[]):t?e.map(({x:o})=>n.get(o)??[]):e.map(({y:o})=>n.get(o)??[])}var qT=Math.PI,ui=2*qT,nb=.618;function HT({projection:e,inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={},a){if(e==null)return;if(typeof e.stream=="function")return e;let s,f,u="frame";if(wo(e)){let T;if({type:e,domain:f,inset:T,insetTop:r=T!==void 0?T:r,insetRight:n=T!==void 0?T:n,insetBottom:o=T!==void 0?T:o,insetLeft:i=T!==void 0?T:i,clip:u=u,...s}=e,e==null)return}typeof e!="function"&&({type:e}=ob(e));let{width:c,height:m,marginLeft:l,marginRight:p,marginTop:d,marginBottom:y}=a,x=c-l-p-i-n,w=m-d-y-r-o;if(e=e?.({width:x,height:w,clip:u,...s}),e==null)return;u=RN(u,l,d,c-p,m-y);let g=l+i,S=d+r,b;if(f!=null){let[[T,I],[v,O]]=Ks(e).bounds(f),C=Math.min(x/(v-T),w/(O-I));C>0?(g-=(C*(T+v)-x)/2,S-=(C*(I+O)-w)/2,b=qs({point(E,A){this.stream.point(E*C+g,A*C+S)}})):Cr("Warning: the projection could not be fit to the specified domain; using the default scale.")}return b??=g===0&&S===0?YT():qs({point(T,I){this.stream.point(T+g,I+S)}}),{stream:T=>e.stream(b.stream(u(T)))}}function ob(e){switch(`${e}`.toLowerCase()){case"albers-usa":return Vn(zy,.7463,.4673);case"albers":return Fd(jc,.7463,.4673);case"azimuthal-equal-area":return Vn(qy,4,4);case"azimuthal-equidistant":return Vn(Yy,ui,ui);case"conic-conformal":return Fd(Zy,ui,ui);case"conic-equal-area":return Fd(Fi,6.1702,2.9781);case"conic-equidistant":return Fd(Jy,7.312,3.6282);case"equal-earth":return Vn(tx,5.4133,2.6347);case"equirectangular":return Vn(Qy,ui,qT);case"gnomonic":return Vn(nx,3.4641,3.4641);case"identity":return{type:YT};case"reflect-y":return{type:CN};case"mercator":return Vn(Wy,ui,ui);case"orthographic":return Vn(ix,2,2);case"stereographic":return Vn(sx,2,2);case"transverse-mercator":return Vn(cx,ui,ui);default:throw new Error(`unknown projection type: ${e}`)}}function RN(e,t,r,n,o){if(e===!1||e==null||typeof e=="number")return i=>i;switch(e===!0&&(e="frame"),`${e}`.toLowerCase()){case"frame":return Us(t,r,n,o);default:throw new Error(`unknown projection clip type: ${e}`)}}function Vn(e,t,r){return{type:({width:n,height:o,rotate:i,precision:a=.15,clip:s})=>{let f=e();return a!=null&&f.precision?.(a),i!=null&&f.rotate?.(i),typeof s=="number"&&f.clipAngle?.(s),n!=null&&(f.scale(Math.min(n/t,o/r)),f.translate([n/2,o/2])),f},aspectRatio:r/t}}function Fd(e,t,r){let{type:n,aspectRatio:o}=Vn(e,t,r);return{type:i=>{let{parallels:a,domain:s,width:f,height:u}=i,c=n(i);return a!=null&&(c.parallels(a),s===void 0&&f!=null&&c.fitSize([f,u],{type:"Sphere"})),c},aspectRatio:o}}var YT=Gr({stream:e=>e}),CN=Gr(qs({point(e,t){this.stream.point(e,-t)}}));function WT(e,t,r,n){let o=r[e],i=r[t],a=o.length,s=r[e]=new Float64Array(a).fill(NaN),f=r[t]=new Float64Array(a).fill(NaN),u,c=n.stream({point(m,l){s[u]=m,f[u]=l}});for(u=0;u5?5:f:nb}}if(e!=null){if(typeof e!="function"){let{aspectRatio:t}=ob(e);if(t)return t}return nb}}function QT(e){let t=[],r=[],n={scale:"x",value:t},o={scale:"y",value:r},i={point(a,s){t.push(a),r.push(s)},lineStart(){},lineEnd(){},polygonStart(){},polygonEnd(){},sphere(){}};for(let a of e.value)$n(a,i);return[n,o]}function JT({x:e,y:t}){if(e||t)return e??=r=>r,t??=r=>r,qs({point(r,n){this.stream.point(e(r),t(n))}})}function vf(e={}){let{document:t=typeof window<"u"?window.document:void 0,clip:r}=e;return{document:t,clip:Td(r)}}function Ve(e,{document:t}){return nn(Go(e).call(t.documentElement))}var Ed=Symbol("unset");function $d(e){return(e.length===1?AN:PN)(e)}function AN(e){let t,r=Ed;return n=>(Object.is(r,n)||(r=n,t=e(n)),t)}function PN(e){let t,r;return(...n)=>((r?.length!==n.length||r.some((o,i)=>!Object.is(o,n[i])))&&(r=n,t=e(...n)),t)}var kN=$d(e=>new Intl.NumberFormat(e)),Vbe=$d((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{month:t}})),Ube=$d((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{weekday:t}}));function NN(e="en-US"){let t=kN(e);return r=>r!=null&&!isNaN(r)?t.format(r):void 0}function FN(e){return yd(e,"Invalid Date")}function EN(e="en-US"){let t=NN(e);return r=>(r instanceof Date?FN:typeof r=="number"?t:wt)(r)}var Io=EN();var Zt=(typeof window<"u"?window.devicePixelRatio>1:typeof it>"u")?0:.5,$N=0;function tM(){return`plot-clip-${++$N}`}function rM(e,{title:t,href:r,ariaLabel:n,ariaDescription:o,ariaHidden:i,target:a,fill:s,fillOpacity:f,stroke:u,strokeWidth:c,strokeOpacity:m,strokeLinejoin:l,strokeLinecap:p,strokeMiterlimit:d,strokeDasharray:y,strokeDashoffset:x,opacity:w,mixBlendMode:g,imageFilter:S,paintOrder:b,pointerEvents:T,shapeRendering:I,channels:v},{ariaLabel:O,fill:C="currentColor",fillOpacity:E,stroke:A="none",strokeOpacity:F,strokeWidth:H,strokeLinecap:j,strokeLinejoin:M,strokeMiterlimit:U,paintOrder:D}){C===null&&(s=null,f=null),A===null&&(u=null,m=null),Ut(C)?!Ut(A)&&(!Ut(s)||v?.fill)&&(A="none"):Ut(A)&&(!Ut(u)||v?.stroke)&&(C="none");let[oe,V]=go(s,C),[K,Y]=ht(f,E),[Z,J]=go(u,A),[ye,B]=ht(m,F),[W,X]=ht(w);Ka(J)||(c===void 0&&(c=H),p===void 0&&(p=j),l===void 0&&(l=M),d===void 0&&!A6(l)&&(d=U),!Ka(V)&&b===void 0&&(b=D));let[le,L]=ht(c);return C!==null&&(e.fill=yt(V,"currentColor"),e.fillOpacity=Fu(Y,1)),A!==null&&(e.stroke=yt(J,"none"),e.strokeWidth=Fu(L,1),e.strokeOpacity=Fu(B,1),e.strokeLinejoin=yt(l,"miter"),e.strokeLinecap=yt(p,"butt"),e.strokeMiterlimit=Fu(d,4),e.strokeDasharray=yt(y,"none"),e.strokeDashoffset=yt(x,"0")),e.target=wt(a),e.ariaLabel=wt(O),e.ariaDescription=wt(o),e.ariaHidden=wt(i),e.opacity=Fu(X,1),e.mixBlendMode=yt(g,"normal"),e.imageFilter=yt(S,"none"),e.paintOrder=yt(b,"normal"),e.pointerEvents=yt(T,"auto"),e.shapeRendering=yt(I,"auto"),{title:{value:t,optional:!0,filter:null},href:{value:r,optional:!0,filter:null},ariaLabel:{value:n,optional:!0,filter:null},fill:{value:oe,scale:"auto",optional:!0},fillOpacity:{value:K,scale:"auto",optional:!0},stroke:{value:Z,scale:"auto",optional:!0},strokeOpacity:{value:ye,scale:"auto",optional:!0},strokeWidth:{value:le,optional:!0},opacity:{value:W,scale:"auto",optional:!0}}}function LN(e,t){t&&e.filter(r=>Tu(t[r])).append("title").call(VN,t)}function DN(e,t){t&&e.filter(([r])=>Tu(t[r])).append("title").call(UN,t)}function VN(e,t){t&&e.text(r=>Io(t[r]))}function UN(e,t){t&&e.text(([r])=>Io(t[r]))}function Ar(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:f,strokeWidth:u,opacity:c,href:m}){n&&pe(e,"aria-label",l=>n[l]),i&&pe(e,"fill",l=>i[l]),a&&pe(e,"fill-opacity",l=>a[l]),s&&pe(e,"stroke",l=>s[l]),f&&pe(e,"stroke-opacity",l=>f[l]),u&&pe(e,"stroke-width",l=>u[l]),c&&pe(e,"opacity",l=>c[l]),m&&iM(e,l=>m[l],t),r||LN(e,o)}function nM(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:f,strokeWidth:u,opacity:c,href:m}){n&&pe(e,"aria-label",([l])=>n[l]),i&&pe(e,"fill",([l])=>i[l]),a&&pe(e,"fill-opacity",([l])=>a[l]),s&&pe(e,"stroke",([l])=>s[l]),f&&pe(e,"stroke-opacity",([l])=>f[l]),u&&pe(e,"stroke-width",([l])=>u[l]),c&&pe(e,"opacity",([l])=>c[l]),m&&iM(e,([l])=>m[l],t),r||DN(e,o)}function jN({ariaLabel:e,title:t,fill:r,fillOpacity:n,stroke:o,strokeOpacity:i,strokeWidth:a,opacity:s,href:f},{tip:u}){return[e,u?void 0:t,r,n,o,i,a,s,f].filter(c=>c!==void 0)}function BN(e,t,r){let n=Vo(e,o=>t[o]);return r===void 0&&n.size>1+e.length>>1&&Cr("Warning: the implicit z channel has high cardinality. This may occur when the fill or stroke channel is associated with quantitative data rather than ordinal or categorical data. You can suppress this warning by setting the z option explicitly; if this data represents a single series, set z to null."),n.values()}function*oM(e,t,r,n){let{z:o}=r,{z:i}=n,a=jN(n,r),s=[...t,...a];for(let f of i?BN(e,i,o):[e]){let u,c;e:for(let m of f){for(let l of s)if(!mn(l[m])){c&&c.push(-1);continue e}if(u===void 0){c&&(yield c),u=a.map(l=>dn(l[m])),c=[m];continue}c.push(m);for(let l=0;ldn(d[m])),c=[m];continue e}}c&&(yield c)}}function GN(e,t,r,n){let o,{clip:i=n.clip}=t;i==="frame"?(e=Ve("svg:g",n).each(function(){this.appendChild(e.node()),e.node=()=>this}),o=KN(n,r)):i&&(o=HN(i,n)),pe(e,"aria-label",t.ariaLabel),pe(e,"aria-description",t.ariaDescription),pe(e,"aria-hidden",t.ariaHidden),pe(e,"clip-path",o)}function zN(e){let t=new WeakMap;return(r,n)=>{let o=t.get(r);if(!o){let i=tM();nn(r.ownerSVGElement).append("clipPath").attr("id",i).call(e,r,n),t.set(r,o=`url(#${i})`)}return o}}var KN=zN((e,t,r)=>{let{width:n,height:o,marginLeft:i,marginRight:a,marginTop:s,marginBottom:f}=r;e.append("rect").attr("x",i).attr("y",s).attr("width",n-a-i).attr("height",o-s-f)}),eM=new WeakMap,qN={type:"Sphere"};function HN(e,t){let r,n;if((r=eM.get(t))||eM.set(t,r=new WeakMap),e.type==="Sphere"&&(e=qN),!(n=r.get(e))){let o=tM();nn(t.ownerSVGElement).append("clipPath").attr("id",o).append("path").attr("d",t.path()(e)),r.set(e,n=`url(#${o})`)}return n}function Qt(e,t,r,n){GN(e,t,r,n),pe(e,"class",t.className),pe(e,"fill",t.fill),pe(e,"fill-opacity",t.fillOpacity),pe(e,"stroke",t.stroke),pe(e,"stroke-width",t.strokeWidth),pe(e,"stroke-opacity",t.strokeOpacity),pe(e,"stroke-linejoin",t.strokeLinejoin),pe(e,"stroke-linecap",t.strokeLinecap),pe(e,"stroke-miterlimit",t.strokeMiterlimit),pe(e,"stroke-dasharray",t.strokeDasharray),pe(e,"stroke-dashoffset",t.strokeDashoffset),pe(e,"shape-rendering",t.shapeRendering),pe(e,"filter",t.imageFilter),pe(e,"paint-order",t.paintOrder);let{pointerEvents:o=n.pointerSticky===!1?"none":void 0}=t;pe(e,"pointer-events",o)}function Bt(e,t){YN(e,"mix-blend-mode",t.mixBlendMode),pe(e,"opacity",t.opacity)}function iM(e,t,r){e.each(function(n){let o=t(n);if(o!=null){let i=this.ownerDocument.createElementNS(Jn.svg,"a");i.setAttribute("fill","inherit"),i.setAttributeNS(Jn.xlink,"href",o),r!=null&&i.setAttribute("target",r),this.parentNode.insertBefore(i,this).appendChild(this)}})}function pe(e,t,r){r!=null&&e.attr(t,r)}function YN(e,t,r){r!=null&&e.style(t,r)}function Jt(e,t,{x:r,y:n},o=Zt,i=Zt){o+=t.dx,i+=t.dy,r?.bandwidth&&(o+=r.bandwidth()/2),n?.bandwidth&&(i+=n.bandwidth()/2),(o||i)&&e.attr("transform",`translate(${o},${i})`)}function yt(e,t){if((e=wt(e))!==t)return e}function Fu(e,t){if((e=St(e))!==t)return e}var WN=/^-?([_a-z]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])([_a-z0-9-]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])*$/i;function Tf(e){if(e===void 0)return"plot-d6a7b5";if(e=`${e}`,!WN.test(e))throw new Error(`invalid class name: ${e}`);return e}function Mf(e,t){if(typeof t=="string")e.property("style",t);else if(t!=null)for(let r of e)Object.assign(r.style,t)}function _o({frameAnchor:e},{width:t,height:r,marginTop:n,marginRight:o,marginBottom:i,marginLeft:a}){return[/left$/.test(e)?a:/right$/.test(e)?t-o:(a+t-o)/2,/^top/.test(e)?n:/^bottom/.test(e)?r-i:(n+r-i)/2]}var ot=class{constructor(t,r={},n={},o){let{facet:i="auto",facetAnchor:a,fx:s,fy:f,sort:u,dx:c=0,dy:m=0,margin:l=0,marginTop:p=l,marginRight:d=l,marginBottom:y=l,marginLeft:x=l,className:w,clip:g=o?.clip,channels:S,tip:b,render:T}=n;if(this.data=t,this.sort=Gi(u)?u:null,this.initializer=ai(n).initializer,this.transform=this.initializer?n.transform:Au(n).transform,i===null||i===!1?this.facet=null:(this.facet=yr(i===!0?"include":i,"facet",["auto","include","exclude","super"]),this.fx=t===pf&&typeof s=="string"?[s]:s,this.fy=t===pf&&typeof f=="string"?[f]:f),this.facetAnchor=KT(a),r=Pg(r),S!==void 0&&(r={...XN(S),...r}),o!==void 0&&(r={...rM(this,n,o),...r}),this.channels=Object.fromEntries(Object.entries(r).map(([I,v])=>{if(df(v.value)){let{value:O,label:C=v.label,scale:E=v.scale}=v.value;v={...v,label:C,scale:E,value:O}}if(t===pf&&typeof v.value=="string"){let{value:O}=v;v={...v,value:[O]}}return[I,v]}).filter(([I,{value:v,optional:O}])=>{if(v!=null)return!0;if(O)return!1;throw new Error(`missing channel value: ${I}`)})),this.dx=+c,this.dy=+m,this.marginTop=+p,this.marginRight=+d,this.marginBottom=+y,this.marginLeft=+x,this.clip=Td(g),this.tip=ZN(b),this.className=wt(w),this.facet==="super"){if(s||f)throw new Error("super-faceting cannot use fx or fy");for(let I in this.channels){let{scale:v}=r[I];if(!(v!=="x"&&v!=="y"))throw new Error("super-faceting cannot use x or y")}}T!=null&&(this.render=ab(T,this.render))}initialize(t,r,n){let o=oi(this.data);t===void 0&&o!=null&&(t=[Rr(o)]);let i=t;this.transform!=null&&({facets:t,data:o}=this.transform(o,t,n),o=oi(o)),t!==void 0&&(t.original=i);let a=H6(this.channels,o);return this.sort!=null&&W6(o,t,a,r,this.sort),{data:o,facets:t,channels:a}}filter(t,r,n){for(let o in r){let{filter:i=mn}=r[o];if(i!==null){let a=n[o];t=t.filter(s=>i(a[s]))}}return t}project(t,r,n){for(let o in t)if(t[o].scale==="x"&&/^x|x$/.test(o)){let i=o.replace(/^x|x$/,"y");i in t&&t[i].scale==="y"&&WT(o,i,r,n.projection)}}scale(t,r,n){let o=Y6(t,r);return n.projection&&this.project(t,o,n),o}};function ib(...e){return e.plot=ot.prototype.plot,e}function ab(e,t){if(e==null)return t===null?void 0:t;if(t==null)return e===null?void 0:e;if(typeof e!="function")throw new TypeError(`invalid render transform: ${e}`);if(typeof t!="function")throw new TypeError(`invalid render transform: ${t}`);return function(r,n,o,i,a,s){return e.call(this,r,n,o,i,a,(f,u,c,m,l)=>t.call(this,f,u,c,m,l,s))}}function XN(e){return Object.fromEntries(Object.entries(Pg(e)).map(([t,r])=>(r=typeof r=="string"?{value:r,label:t}:Hi(r),r.filter===void 0&&r.scale==null&&(r={...r,filter:null}),[t,r])))}function ZN(e){return e===!0?"xy":e===!1||e==null?null:typeof e=="string"?yr(e,"tip",["x","y","xy"]):e}function Eu(e,t){return e?.tip===!0?{...e,tip:t}:wo(e?.tip)&&e.tip.pointer===void 0?{...e,tip:{...e.tip,pointer:t}}:e}function sM(e,t,r={}){let n=.5-Zt,o=.5+Zt,i=.5+Zt,a=.5-Zt;for(let{marginTop:y,marginRight:x,marginBottom:w,marginLeft:g}of t)y>n&&(n=y),x>o&&(o=x),w>i&&(i=w),g>a&&(a=g);let{margin:s,marginTop:f=s!==void 0?s:n,marginRight:u=s!==void 0?s:o,marginBottom:c=s!==void 0?s:i,marginLeft:m=s!==void 0?s:a}=r;f=+f,u=+u,c=+c,m=+m;let{width:l=640,height:p=QN(e,r,{width:l,marginTopDefault:n,marginRightDefault:o,marginBottomDefault:i,marginLeftDefault:a})+Math.max(0,f-n+c-i)}=r;l=+l,p=+p;let d={width:l,height:p,marginTop:f,marginRight:u,marginBottom:c,marginLeft:m};if(e.fx||e.fy){let{margin:y,marginTop:x=y!==void 0?y:f,marginRight:w=y!==void 0?y:u,marginBottom:g=y!==void 0?y:c,marginLeft:S=y!==void 0?y:m}=r.facet??{};x=+x,w=+w,g=+g,S=+S,d.facet={marginTop:x,marginRight:w,marginBottom:g,marginLeft:S}}return d}function QN({x:e,y:t,fy:r,fx:n},{projection:o,aspectRatio:i},{width:a,marginTopDefault:s,marginRightDefault:f,marginBottomDefault:u,marginLeftDefault:c}){let m=r&&r.scale.domain().length||1,l=ZT(o);if(l){let d=n?n.scale.domain().length:1,y=(1.1*m-.1)/(1.1*d-.1)*l,x=Math.max(.1,Math.min(10,y));return Math.round((a-c-f)*x+s+u)}let p=t?So(t)?t.scale.domain().length||1:Math.max(7,17/m):1;if(i!=null){if(i=+i,!(isFinite(i)&&i>0))throw new Error(`invalid aspectRatio: ${i}`);let d=aM("y",t)/(aM("x",e)*i),y=n?n.scale.bandwidth():1,x=r?r.scale.bandwidth():1,w=y*(a-c-f)-e.insetLeft-e.insetRight;return(d*w+t.insetTop+t.insetBottom)/x+s+u}return!!(t||r)*Math.max(1,Math.min(60,p*m))*20+!!n*30+60}function aM(e,t){if(!t)throw new Error(`aspectRatio requires ${e} scale`);let{type:r,domain:n}=t,o;switch(r){case"linear":case"utc":case"time":o=Number;break;case"pow":{let s=t.scale.exponent();o=f=>Math.pow(f,s);break}case"log":o=Math.log;break;case"point":case"band":return n.length;default:throw new Error(`unsupported ${e} scale for aspectRatio: ${r}`)}let[i,a]=Tr(n);return Math.abs(o(a)-o(i))}var fM=new WeakMap;function sb(e,t,{x:r,y:n,px:o,py:i,maxRadius:a=40,channels:s,render:f,...u}={}){return a=+a,o!=null&&(r??=null,s={...s,px:{value:o,scale:"x"}}),i!=null&&(n??=null,s={...s,py:{value:i,scale:"y"}}),{x:r,y:n,channels:s,...u,render:ab(function(c,m,l,p,d,y){d={...d,pointerSticky:!1};let x=d.ownerSVGElement,{data:w}=d.getMarkState(this),g=fM.get(x);g||fM.set(x,g={sticky:!1,roots:[],renders:[]});let S=g.renders.push(J)-1,{x:b,y:T,fx:I,fy:v}=m,O=I?I(c.fx)-p.marginLeft:0,C=v?v(c.fy)-p.marginTop:0;b?.bandwidth&&(O+=b.bandwidth()/2),T?.bandwidth&&(C+=T.bandwidth()/2);let E=c.fi!=null,A;if(E){let X=g.facetStates;X||(g.facetStates=X=new Map),A=X.get(this),A||X.set(this,A=new Map)}let[F,H]=_o(this,p),{px:j,py:M}=l,U=j?X=>j[X]:cb(l,F),D=M?X=>M[X]:ub(l,H),oe,V,K,Y;function Z(X,le){if(E)if(Y&&(Y=cancelAnimationFrame(Y)),X==null)A.delete(c.fi);else{A.set(c.fi,le),Y=requestAnimationFrame(()=>{Y=null;for(let[L,Q]of A)if(Q1)){let Q=oe==null?null:Dn(w)?w[oe]:w.get(oe);d.dispatchValue(Q)}return L}function ye(X){if(g.sticky||X.pointerType==="mouse"&&X.buttons===1)return;let[le,L]=H0(X);le-=O,L-=C;let Q=lep.width-p.marginRight?1:e,re=Lp.height-p.marginBottom?1:t,$=null,ke=a*a;for(let G of c){let ae=Q*(U(G)-le),xe=re*(D(G)-L),Ge=ae*ae+xe*xe;Ge<=ke&&($=G,ke=Ge)}if($!=null&&(e!==1||t!==1)){let G=U($)-le,ae=D($)-L;ke=G*G+ae*ae}Z($,ke)}function B(X){X.pointerType==="mouse"&&oe!=null&&(g.sticky&&g.roots.some(le=>le?.contains(X.target))||(g.sticky?(g.sticky=!1,g.renders.forEach(le=>le(null))):(g.sticky=!0,J(oe)),X.stopImmediatePropagation()))}function W(X){X.pointerType==="mouse"&&(g.sticky||Z(null))}return x.addEventListener("pointerenter",ye),x.addEventListener("pointermove",ye),x.addEventListener("pointerdown",B),x.addEventListener("pointerleave",W),J(null)},f)}}function cM(e){return sb(1,1,e)}function uM(e){return sb(1,.01,e)}function fb(e){return sb(.01,1,e)}function cb({x1:e,x2:t,x:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function ub({y1:e,y2:t,y:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function Ld(e){return So(e)&&e.interval===void 0?void 0:"tabular-nums"}function lM(e,t){let{label:r=e.label,tickSize:n=6,width:o=240,height:i=44+n,marginTop:a=18,marginRight:s=0,marginBottom:f=16+n,marginLeft:u=0,style:c,ticks:m=(o-u-s)/64,tickFormat:l,fontVariant:p=Ld(e),round:d=!0,opacity:y,className:x}=t,w=vf(t);x=Tf(x),y=ht(y)[1],l===null&&(l=()=>null);let g=Ve("svg",w).attr("class",`${x}-ramp`).attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("width",o).attr("height",i).attr("viewBox",`0 0 ${o} ${i}`).call(F=>F.append("style").text(`:where(.${x}-ramp) { +${r}`}function $E(e){return e==="time"?Qd:e==="utc"?al:EE}function pT(e,t,r){let n=jt(bp(t,(o,i)=>Math.abs(i-o)));if(n<1e3)return cT("millisecond","utc",r);for(let[o,i,a,s]of $E(e)){if(n>s||o==="hour"&&!n)break;if(t.every(c=>i.floor(c)>=c))return cT(o,a,r)}}function Ec(e,t,r){return(n,o,i)=>{let a=e(n,o),s=t(n,o),c=o-_i(i);return o!==c&&i[c]!==void 0&&s===t(i[c],c)?a:r(a,s)}}var mx=Object.getPrototypeOf(Uint8Array),DE=Object.prototype.toString;function Xn(e){return e instanceof Array||e instanceof mx}function hT(e){return e instanceof mx&&!LE(e)}function yT(e){return e?.prototype instanceof mx&&!VE(e)}function LE(e){return e instanceof BigInt64Array||e instanceof BigUint64Array}function VE(e){return e===BigInt64Array||e===BigUint64Array}var dx=Symbol("reindex");function qt(e,t,r){let n=typeof t;return n==="string"?LT(e)?hx(e.getChild(t),r):mT(e,yx(t),r):n==="function"?mT(e,t,r):n==="number"||t instanceof Date||n==="boolean"?et(e,en(t),r):typeof t?.transform=="function"?px(t.transform(e),r):jE(px(t,r),e?.[dx])}function jE(e,t){return e!=null&&t?th(e,t):e}function mT(e,t,r){return et(e,yT(r)?(n,o)=>gx(t(n,o)):t,r)}function px(e,t){return t===void 0?Fo(e):VT(e)?hx(e,t):e instanceof t?e:t.from(e,yT(t)&&!hT(e)?gx:void 0)}function hx(e,t){return e==null?e:(t===void 0||t===Array)&&KE(e.type)?xx(dT(e)):px(dT(e),t)}function dT(e){return e.nullCount?e.toJSON():e.toArray()}var Dc=[null],yx=e=>t=>{let r=t[e];return r===void 0&&t.type==="Feature"?t.properties?.[e]:r},sl={transform:Dr},St={transform:e=>e};var bT=()=>1,gT=()=>!0,Mt=e=>e==null?e:`${e}`,Ot=e=>e==null?e:+e;var bx=e=>e?e[0]:void 0,xT=e=>e?e[1]:void 0;var en=e=>()=>e;function wT(e){let t=+`${e}`.slice(1)/100;return(r,n)=>si(r,t,n)}function ds(e){return hT(e)?e:et(e,gx,Float64Array)}function gx(e){return e==null?NaN:Number(e)}function xx(e){return et(e,UE)}function UE(e){return e instanceof Date&&!isNaN(e)?e:typeof e=="string"?il(e):e==null||isNaN(e=Number(e))?void 0:new Date(e)}function Eo(e,t){return e===void 0&&(e=t),e===null?[void 0,"none"]:jc(e)?[void 0,e]:[e,void 0]}function It(e,t){return e===void 0&&(e=t),e===null||typeof e=="number"?[void 0,e]:[e,void 0]}function wx(e,t,r){if(e!=null)return Pr(e,t,r)}function Pr(e,t,r){let n=`${e}`.toLowerCase();if(!r.includes(n))throw new Error(`invalid ${t}: ${e}`);return n}function vi(e){return LT(e)?e:Fo(e)}function Fo(e){if(e==null||Xn(e))return e;if(VT(e))return hx(e);if(ST(e))switch(e.type){case"FeatureCollection":return e.features;case"GeometryCollection":return e.geometries;default:return[e]}return Array.from(e)}function ST(e){switch(e?.type){case"FeatureCollection":case"GeometryCollection":case"Feature":case"LineString":case"MultiLineString":case"MultiPoint":case"MultiPolygon":case"Point":case"Polygon":case"Sphere":return!0;default:return!1}}function et(e,t,r=Array){return e==null?e:e instanceof r?e.map(t):r.from(e,t)}function ua(e,t=Array){return e instanceof t?e.slice():t.from(e)}function IT({x:e,x1:t,x2:r}){return e!==void 0||t!==void 0||r!==void 0}function Sx({y:e,y1:t,y2:r}){return e!==void 0||t!==void 0||r!==void 0}function _T(e){return IT(e)||Sx(e)||e.interval!==void 0}function $o(e){return e?.toString===DE}function Lc(e){return $o(e)&&(e.type!==void 0||e.domain!==void 0)}function Vc(e){return $o(e)&&typeof e.transform!="function"}function la(e){return Vc(e)&&e.value===void 0&&e.channel===void 0}function vT(e,t,r,n=St){return t===void 0&&r===void 0?(t=0,r=e===void 0?n:e):t===void 0?t=e===void 0?0:e:r===void 0&&(r=e===void 0?0:e),[t,r]}function Pi(e,t){return e===void 0&&t===void 0?[bx,xT]:[e,t]}function eh({z:e,fill:t,stroke:r}={}){return e===void 0&&([e]=Eo(t)),e===void 0&&([e]=Eo(r)),e}function pa(e){return Xn(e)?e.length:e?.numRows}function Dr(e){let t=pa(e),r=new Uint32Array(t);for(let n=0;ne[r],e.constructor):et(t,r=>e.at(r))}function PT(e,t,r){return e.subarray?e.subarray(t,r):e.slice(t,r)}function Pn(e){return e!==null&&typeof e=="object"?e.valueOf():e}function cl(e){let t;return[{transform:()=>t,label:ma(e)},r=>t=r]}function TT(e){return e==null?[e]:cl(e)}function ma(e,t){return typeof e=="string"?e:e&&e.label!==void 0?e.label:t}function MT(e,t){return{transform(r){let n=e.transform(r),o=t.transform(r);return Kt(n)||Kt(o)?et(n,(i,a)=>new Date((+n[a]+ +o[a])/2)):et(n,(i,a)=>(+n[a]+ +o[a])/2,Float64Array)},label:e.label}}function OT(e,t){let r=Ix(t?.interval,t?.type);return r?et(e,r):e}function Ix(e,t){let r=rh(e,t);return r&&(n=>vn(n)?r.floor(n):n)}function rh(e,t){if(e!=null){if(typeof e=="number")return BE(e);if(typeof e=="string")return(t==="time"?fx:ux)(e);if(typeof e.floor!="function")throw new Error("invalid interval; missing floor method");if(typeof e.offset!="function")throw new Error("invalid interval; missing offset method");return e}}function BE(e){e=+e,0Math.floor(r*t)/t,offset:(r,n=1)=>(r*t+Math.floor(n))/t,range:(r,n)=>Ua(Math.ceil(r*t),n*t).map(o=>o/t)}:{floor:r=>Math.floor(r/t)*t,offset:(r,n=1)=>r+t*Math.floor(n),range:(r,n)=>Ua(Math.ceil(r/t),n/t).map(o=>o*t)}}function da(e,t){if(e=rh(e,t),e&&typeof e.range!="function")throw new Error("invalid interval: missing range method");return e}function CT(e,t){if(e=da(e,t),e&&typeof e.ceil!="function")throw new Error("invalid interval: missing ceil method");return e}function kT(e){return typeof e?.range=="function"}function ha(e){return e===void 0||Vc(e)?e:{value:e}}function RT(e){return e==null?null:{transform:t=>qt(t,e,Float64Array),label:ma(e)}}function Tn(e){return e&&typeof e[Symbol.iterator]=="function"}function nh(e){for(let t of e)if(t!=null)return typeof t!="object"||t instanceof Date}function _x(e){for(let t of e){if(t==null)continue;let r=typeof t;return r==="string"||r==="boolean"}}function Kt(e){for(let t of e)if(t!=null)return t instanceof Date}function NT(e){for(let t of e)if(t!=null)return typeof t=="string"&&isNaN(t)&&il(t)}function AT(e){for(let t of e)if(t!=null){if(typeof t!="string")return!1;if(t.trim())return!isNaN(t)}}function ET(e){for(let t of e)if(t!=null)return typeof t=="number"}function oh(e,t){let r;for(let n of e)if(n!=null){if(!t(n))return!1;r=!0}return r}var zE=new Set("none,currentcolor,transparent,aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkgrey,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkslategrey,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dimgrey,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,grey,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgoldenrodyellow,lightgray,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightslategrey,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,rebeccapurple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,slategrey,snow,springgreen,steelblue,tan,teal,thistle,tomato,turquoise,violet,wheat,white,whitesmoke,yellow".split(","));function jc(e){return typeof e!="string"?!1:(e=e.toLowerCase().trim(),/^#[0-9a-f]{3,8}$/.test(e)||/^(?:url|var|rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\(.*\)$/.test(e)||zE.has(e))}function FT(e){return typeof e=="number"&&(0<=e&&e<=1||isNaN(e))}function Ht(e){return e==null||hs(e)}function hs(e){return/^\s*none\s*$/i.test(e)}function $T(e){return/^\s*round\s*$/i.test(e)}function ih(e,t){return wx(e,t,["middle","top-left","top","top-right","right","bottom-right","bottom","bottom-left","left"])}function ya(e="middle"){return ih(e,"frameAnchor")}function DT(e={},...t){let r=e;for(let n of t)for(let o in n)if(r[o]===void 0){let i=n[o];r===e?r={...r,[o]:i}:r[o]=i}return r}function GE(e){console.warn("named iterables are deprecated; please use an object instead");let t=new Set;return Object.fromEntries(Array.from(e,r=>{let{name:n}=r;if(n==null)throw new Error("missing name");let o=`${n}`;if(o==="__proto__")throw new Error(`illegal name: ${o}`);if(t.has(o))throw new Error(`duplicate name: ${o}`);return t.add(o),[n,r]}))}function vx(e){return Tn(e)?GE(e):e}function ah(e){return e===!0?e="frame":e===!1?e=null:!ST(e)&&e!=null&&(e=Pr(e,"clip",["frame","sphere"]),e==="sphere"&&(e={type:"Sphere"})),e}function LT(e){return e&&typeof e.getChild=="function"&&typeof e.toArray=="function"&&e.schema&&Array.isArray(e.schema.fields)}function VT(e){return e&&typeof e.toArray=="function"&&e.type}function KE(e){return e&&(e.typeId===8||e.typeId===10)&&e.unit===1}var Mn=Symbol("position"),tn=Symbol("color"),ys=Symbol("radius"),bs=Symbol("length"),gs=Symbol("opacity"),Uc=Symbol("symbol"),jT=Symbol("projection"),He=new Map([["x",Mn],["y",Mn],["fx",Mn],["fy",Mn],["r",ys],["color",tn],["opacity",gs],["symbol",Uc],["length",bs],["projection",jT]]);function UT(e){return e===Mn||e===jT}function BT(e){return e===Mn||e===ys||e===bs||e===gs}var qE=Math.sqrt(3),HE=2/qE,YE={draw(e,t){let r=Math.sqrt(t/Math.PI),n=r*HE,o=n/2;e.moveTo(0,n),e.lineTo(r,o),e.lineTo(r,-o),e.lineTo(0,-n),e.lineTo(-r,-o),e.lineTo(-r,o),e.closePath()}},Px=new Map([["asterisk",Ku],["circle",Si],["cross",qu],["diamond",Hu],["diamond2",Yu],["hexagon",YE],["plus",Wu],["square",Xu],["square2",Zu],["star",Qu],["times",kc],["triangle",Ju],["triangle2",el],["wye",tl]]);function Tx(e){return e&&typeof e.draw=="function"}function zT(e){return Tx(e)?!0:typeof e!="string"?!1:Px.has(e.toLowerCase())}function Bc(e){if(e==null||Tx(e))return e;let t=Px.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid symbol: ${e}`)}function GT(e){if(e==null||Tx(e))return[void 0,e];if(typeof e=="string"){let t=Px.get(`${e}`.toLowerCase());if(t)return[void 0,t]}return[e,void 0]}function fl({filter:e,sort:t,reverse:r,transform:n,initializer:o,...i}={},a){if(n===void 0&&(e!=null&&(n=KT(e)),t!=null&&!la(t)&&(n=Mx(n,Cx(t))),r&&(n=Mx(n,qT))),a!=null&&o!=null)throw new Error("transforms cannot be applied after initializers");return{...i,...(t===null||la(t))&&{sort:t},transform:Mx(n,a)}}function Ti({filter:e,sort:t,reverse:r,initializer:n,...o}={},i){return n===void 0&&(e!=null&&(n=KT(e)),t!=null&&!la(t)&&(n=Ox(n,Cx(t))),r&&(n=Ox(n,qT))),{...o,...(t===null||la(t))&&{sort:t},initializer:Ox(n,i)}}function Mx(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o){return{data:r,facets:n}=e.call(this,r,n,o),t.call(this,vi(r),n,o)}}function Ox(e,t){return e==null?t===null?void 0:t:t==null?e===null?void 0:e:function(r,n,o,...i){let a,s,c,u,f,m;return{data:s=r,facets:c=n,channels:a}=e.call(this,r,n,o,...i),{data:f=s,facets:m=c,channels:u}=t.call(this,s,c,{...o,...a},...i),{data:f,facets:m,channels:{...a,...u}}}}function WE(e,t){return(e.initializer!=null?Ti:fl)(e,t)}function KT(e){return(t,r)=>{let n=qt(t,e);return{data:t,facets:r.map(o=>o.filter(i=>n[i]))}}}function qT(e,t){return{data:e,facets:t.map(r=>r.slice().reverse())}}function HT(e,{sort:t,...r}={}){return{...(Vc(e)&&e.channel!==void 0?Ti:WE)(r,Cx(e)),sort:la(t)?t:null}}function Cx(e){return(typeof e=="function"&&e.length!==1?XE:ZE)(e)}function XE(e){return(t,r)=>{let n=Xn(t)?(o,i)=>e(t[o],t[i]):(o,i)=>e(t.get(o),t.get(i));return{data:t,facets:r.map(o=>o.slice().sort(n))}}}function ZE(e){let t,r;({channel:t,value:e,order:r}={...ha(e)});let n=t?.startsWith("-");if(n&&(t=t.slice(1)),r===void 0&&(r=n?ls:$r),typeof r!="function")switch(`${r}`.toLowerCase()){case"ascending":r=$r;break;case"descending":r=ls;break;default:throw new Error(`invalid order: ${r}`)}return(o,i,a)=>{let s;if(t===void 0)s=qt(o,e);else{if(a===void 0)throw new Error("channel sort requires an initializer");if(s=a[t],!s)return{};s=s.value}let c=(u,f)=>r(s[u],s[f]);return{data:o,facets:i.map(u=>u.slice().sort(c))}}}function ZT(e,t,r=QE){if(e==null)return r(e);if(typeof e.reduceIndex=="function")return e;if(typeof e.reduce=="function"&&$o(e))return JE(e);if(typeof e=="function")return eF(e);if(/^p\d{2}$/i.test(e))return Mi(wT(e));switch(`${e}`.toLowerCase()){case"first":return rF;case"last":return nF;case"identity":return tF;case"count":return WT;case"distinct":return oF;case"sum":return t==null?WT:iF;case"proportion":return XT(t,"data");case"proportion-facet":return XT(t,"facet");case"deviation":return Mi(up);case"min":return Mi(Ir);case"min-index":return Mi(mp);case"max":return Mi(jt);case"max-index":return Mi(pp);case"mean":return YT(hp);case"median":return YT(ja);case"variance":return Mi(Zs);case"mode":return Mi(yp)}return r(e)}function QE(e){throw new Error(`invalid reduce: ${e}`)}function JE(e){return console.warn("deprecated reduce interface; implement reduceIndex instead."),{...e,reduceIndex:e.reduce.bind(e)}}function eF(e){return{reduceIndex(t,r,n){return e(th(r,t),n)}}}function Mi(e){return{reduceIndex(t,r){return e(t,n=>r[n])}}}function YT(e){return{reduceIndex(t,r){let n=e(t,o=>r[o]);return Kt(r)?new Date(n):n}}}var tF={reduceIndex(e,t){return th(t,e)}},rF={reduceIndex(e,t){return t[e[0]]}};var nF={reduceIndex(e,t){return t[e[e.length-1]]}},WT={label:"Frequency",reduceIndex(e){return e.length}},oF={label:"Distinct",reduceIndex(e,t){let r=new zn;for(let n of e)r.add(t[n]);return r.size}},iF=Mi(dn);function XT(e,t){return e==null?{scope:t,label:"Frequency",reduceIndex:(r,n,o=1)=>r.length/o}:{scope:t,reduceIndex:(r,n,o=1)=>dn(r,i=>n[i])/o}}function zc(e,{scale:t,type:r,value:n,filter:o,hint:i,label:a=ma(n)},s){return i===void 0&&typeof n?.transform=="function"&&(i=n.hint),Rx(s,{scale:t,type:r,value:qt(e,n),label:a,filter:o,hint:i})}function JT(e,t){return Object.fromEntries(Object.entries(e).map(([r,n])=>[r,zc(t,n,r)]))}function e6(e,t){let r=Object.fromEntries(Object.entries(e).map(([n,{scale:o,value:i}])=>{let a=o==null?null:t[o];return[n,a==null?i:et(i,a)]}));return r.channels=e,r}function Rx(e,t){let{scale:r,value:n}=t;if(r===!0||r==="auto")switch(e){case"fill":case"stroke":case"color":t.scale=r!==!0&&oh(n,jc)?null:"color",t.defaultScale="color";break;case"fillOpacity":case"strokeOpacity":case"opacity":t.scale=r!==!0&&oh(n,FT)?null:"opacity",t.defaultScale="opacity";break;case"symbol":r!==!0&&oh(n,zT)?(t.scale=null,t.value=et(n,Bc)):t.scale="symbol",t.defaultScale="symbol";break;default:t.scale=He.has(e)?e:null;break}else if(r===!1)t.scale=null;else if(r!=null&&!He.has(r))throw new Error(`unknown scale: ${r}`);return t}function t6(e,t,r,n,o){let{order:i,reverse:a,reduce:s=!0,limit:c}=o;for(let u in o){if(!He.has(u))continue;let{value:f,order:m=i,reverse:l=a,reduce:p=s,limit:h=c}=ha(o[u]),y=f?.startsWith("-");if(y&&(f=f.slice(1)),m=m===void 0?y!==(f==="width"||f==="height")?n6:r6:cF(m),p==null||p===!1)continue;let b=u==="fx"||u==="fy"?sF(t,n[u]):aF(r,u);if(!b)throw new Error(`missing channel for scale: ${u}`);let w=b.value,[g=0,_=1/0]=Tn(h)?h:h<0?[h]:[0,h];if(f==null)b.domain=()=>{let x=Array.from(new zn(w));return l&&(x=x.reverse()),(g!==0||_!==1/0)&&(x=x.slice(g,_)),x};else{let x=f==="data"?e:f==="height"?QT(r,"y1","y2"):f==="width"?QT(r,"x1","x2"):kx(r,f,f==="y"?"y2":f==="x"?"x2":void 0),I=ZT(p===!0?"max":p,x);b.domain=()=>{let S=My(Dr(w),v=>I.reduceIndex(v,x),v=>w[v]);return m&&S.sort(m),l&&S.reverse(),(g!==0||_!==1/0)&&(S=S.slice(g,_)),S.map(bx)}}}}function aF(e,t){for(let r in e){let n=e[r];if(n.scale===t)return n}}function sF(e,t){let r=e.original;if(r===e)return t;let n=t.value,o=t.value=[];for(let i=0;iMath.abs(i-n[a]),Float64Array)}function kx(e,t,r){let n=e[t];if(!n&&r!==void 0&&(n=e[r]),n)return n.value;throw new Error(`missing channel: ${t}`)}function cF(e){if(e==null||typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"ascending":return r6;case"descending":return n6}throw new Error(`invalid order: ${e}`)}function r6([e,t],[r,n]){return $r(t,n)||$r(e,r)}function n6([e,t],[r,n]){return ls(t,n)||$r(e,r)}function Nx(e,t){let r=e[t];if(r){for(;r.source;)r=r.source;return r.source===null?null:r}}var c6=new Map([["accent",Sg],["category10",wg],["dark2",Ig],["observable10",_g],["paired",vg],["pastel1",Pg],["pastel2",Tg],["set1",Mg],["set2",Og],["set3",Cg],["tableau10",kg]]);function f6(e){return e!=null&&c6.has(`${e}`.toLowerCase())}var o6=new Map([...c6,["brbg",Oi(Em,Fm)],["prgn",Oi($m,Dm)],["piyg",Oi(Lm,Vm)],["puor",Oi(jm,Um)],["rdbu",Oi(Bu,Tc)],["rdgy",Oi(Bm,zm)],["rdylbu",Oi(zu,Mc)],["rdylgn",Oi(Gm,Km)],["spectral",Oi(qm,Hm)],["burd",i6(Bu,Tc)],["buylrd",i6(zu,Mc)],["blues",Yt(gd,xd)],["greens",Yt(wd,Sd)],["greys",Yt(Id,_d)],["oranges",Yt(Od,Cd)],["purples",Yt(vd,Pd)],["reds",Yt(Td,Md)],["turbo",Ci(Ld)],["viridis",Ci(jd)],["magma",Ci(Ud)],["inferno",Ci(Bd)],["plasma",Ci(zd)],["cividis",Ci(kd)],["cubehelix",Ci(Rd)],["warm",Ci(Ad)],["cool",Ci(Ed)],["bugn",Yt(Ym,Wm)],["bupu",Yt(Xm,Zm)],["gnbu",Yt(Qm,Jm)],["orrd",Yt(ed,td)],["pubu",Yt(od,id)],["pubugn",Yt(rd,nd)],["purd",Yt(ad,sd)],["rdpu",Yt(cd,fd)],["ylgn",Yt(pd,md)],["ylgnbu",Yt(ud,ld)],["ylorbr",Yt(dd,hd)],["ylorrd",Yt(yd,bd)],["rainbow",a6(Fd)],["sinebow",a6(Dd)]]);function Yt(e,t){return({length:r})=>r===1?[e[3][1]]:r===2?[e[3][1],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>9?pr(t,r):e[r])}function Oi(e,t){return({length:r})=>r===2?[e[3][0],e[3][2]]:(r=Math.max(3,Math.floor(r)),r>11?pr(t,r):e[r])}function i6(e,t){return({length:r})=>r===2?[e[3][2],e[3][0]]:(r=Math.max(3,Math.floor(r)),r>11?pr(n=>t(1-n),r):e[r].slice().reverse())}function Ci(e){return({length:t})=>pr(e,Math.max(2,Math.floor(t)))}function a6(e){return({length:t})=>pr(e,Math.floor(t)+1).slice(0,-1)}function Ax(e){let t=`${e}`.toLowerCase();if(!o6.has(t))throw new Error(`unknown ordinal scheme: ${t}`);return o6.get(t)}function ul(e,t){let r=Ax(e),n=typeof r=="function"?r({length:t}):r;return n.length!==t?n.slice(0,t):n}function u6(e,t="greys"){let r=new Set,[n,o]=ul(t,2);for(let i of e)if(i!=null)if(i===!0)r.add(o);else if(i===!1)r.add(n);else return;return[...r]}var s6=new Map([["brbg",Fm],["prgn",Dm],["piyg",Vm],["puor",Um],["rdbu",Tc],["rdgy",zm],["rdylbu",Mc],["rdylgn",Km],["spectral",Hm],["burd",e=>Tc(1-e)],["buylrd",e=>Mc(1-e)],["blues",xd],["greens",Sd],["greys",_d],["purples",Pd],["reds",Md],["oranges",Cd],["turbo",Ld],["viridis",jd],["magma",Ud],["inferno",Bd],["plasma",zd],["cividis",kd],["cubehelix",Rd],["warm",Ad],["cool",Ed],["bugn",Wm],["bupu",Zm],["gnbu",Jm],["orrd",td],["pubugn",nd],["pubu",id],["purd",sd],["rdpu",fd],["ylgnbu",ld],["ylgn",md],["ylorbr",hd],["ylorrd",bd],["rainbow",Fd],["sinebow",Dd]]);function Gc(e){let t=`${e}`.toLowerCase();if(!s6.has(t))throw new Error(`unknown quantitative scheme: ${t}`);return s6.get(t)}var fF=new Set(["brbg","prgn","piyg","puor","rdbu","rdgy","rdylbu","rdylgn","spectral","burd","buylrd"]);function l6(e){return e!=null&&fF.has(`${e}`.toLowerCase())}var Fx=e=>t=>e(1-t),Ex=[0,1],p6=new Map([["number",st],["rgb",bn],["hsl",tb],["hcl",rb],["lab",Ap]]);function $x(e){let t=`${e}`.toLowerCase();if(!p6.has(t))throw new Error(`unknown interpolator: ${t}`);return p6.get(t)}function qc(e,t,r,{type:n,nice:o,clamp:i,zero:a,domain:s=S6(e,r),unknown:c,round:u,scheme:f,interval:m,range:l=He.get(e)===ys?mF(r,s):He.get(e)===bs?dF(r,s):He.get(e)===gs?Ex:void 0,interpolate:p=He.get(e)===tn?f==null&&l!==void 0?bn:Gc(f!==void 0?f:n==="cyclical"?"rainbow":"turbo"):u?Ha:st,reverse:h}){if(s=m6(s),m=da(m,n),(n==="cyclical"||n==="sequential")&&(n="linear"),typeof p!="function"&&(p=$x(p)),h=!!h,l!==void 0){let y=s.length,b=(l=m6(l)).length;if(y!==b){if(p.length===1)throw new Error("invalid piecewise interpolator");p=wo(p,l),l=void 0}}if(p.length===1?(h&&(p=Fx(p),h=!1),l===void 0&&(l=Float64Array.from(s,(y,b)=>b/(s.length-1)),l.length===2&&(l=Ex)),t.interpolate((l===Ex?en:ll)(p))):t.interpolate(p),a){let[y,b]=Er(s);(y>0||b<0)&&(s=ua(s),(_i(s)||1)===Math.sign(y)?s[0]=0:s[s.length-1]=0)}return h&&(s=Wi(s)),t.domain(s).unknown(c),o&&(t.nice(uF(o,n)),s=t.domain()),l!==void 0&&t.range(l),i&&t.clamp(i),{type:n,domain:s,range:l,scale:t,interpolate:p,interval:m}}function m6(e){return e=Fo(e),e.length>=2?e:[e[0],e[0]]}function uF(e,t){return e===!0?void 0:typeof e=="number"?e:CT(e,t)}function d6(e,t,r){return qc(e,ts(),t,r)}function h6(e,t,r){return Dx(e,t,{...r,exponent:.5})}function Dx(e,t,{exponent:r=1,...n}){return qc(e,Nu().exponent(r),t,{...n,type:"pow"})}function y6(e,t,{base:r=10,domain:n=hF(t),...o}){return qc(e,ku().base(r),t,{...o,domain:n})}function b6(e,t,{constant:r=1,...n}){return qc(e,Ru().constant(r),t,n)}function g6(e,t,{range:r,quantiles:n=r===void 0?5:(r=[...r]).length,n:o=n,scheme:i="rdylbu",domain:a=yF(t),unknown:s,interpolate:c,reverse:u}){return r===void 0&&(r=c!==void 0?pr(c,o):He.get(e)===tn?ul(i,o):void 0),a.length>0&&(a=Au(a,r===void 0?{length:o}:r).quantiles()),sh(e,t,{domain:a,range:r,reverse:u,unknown:s})}function x6(e,t,{range:r,n=r===void 0?5:(r=[...r]).length,scheme:o="rdylbu",domain:i=S6(e,t),unknown:a,interpolate:s,reverse:c}){let[u,f]=Er(i),m;return r===void 0?(m=ai(u,f,n),m[0]<=u&&m.splice(0,1),m[m.length-1]>=f&&m.pop(),n=m.length+1,r=s!==void 0?pr(s,n):He.get(e)===tn?ul(o,n):void 0):(m=pr(st(u,f),n+1).slice(1,-1),u instanceof Date&&(m=m.map(l=>new Date(l)))),_i(Fo(i))<0&&m.reverse(),sh(e,t,{domain:m,range:r,reverse:c,unknown:a})}function sh(e,t,{domain:r=[0],unknown:n,scheme:o="rdylbu",interpolate:i,range:a=i!==void 0?pr(i,r.length+1):He.get(e)===tn?ul(o,r.length+1):void 0,reverse:s}){r=Fo(r);let c=_i(r);if(!isNaN(c)&&!lF(r,c))throw new Error(`the ${e} scale has a non-monotonic domain`);return s&&(a=Wi(a)),{type:"threshold",scale:Eu(c<0?Wi(r):r,a===void 0?[]:a).unknown(n),domain:r,range:a}}function lF(e,t){for(let r=1,n=e.length,o=e[0];rt}}function Kc(e,t=ix){return e.length?[Ir(e,({value:r})=>r===void 0?r:Ir(r,t)),jt(e,({value:r})=>r===void 0?r:jt(r,t))]:[0,1]}function S6(e,t){let r=He.get(e);return(r===ys||r===gs||r===bs?pF:Kc)(t)}function pF(e){return[0,e.length?jt(e,({value:t})=>t===void 0?t:jt(t,ix)):1]}function mF(e,t){let r=e.find(({radius:a})=>a!==void 0);if(r!==void 0)return[0,r.radius];let n=si(e,.5,({value:a})=>a===void 0?NaN:si(a,.25,ps)),o=t.map(a=>3*Math.sqrt(a/n)),i=30/jt(o);return i<1?o.map(a=>a*i):o}function dF(e,t){let r=ja(e,({value:i})=>i===void 0?NaN:ja(i,Math.abs)),n=t.map(i=>12*i/r),o=60/jt(n);return o<1?n.map(i=>i*o):n}function hF(e){for(let{value:t}of e)if(t!==void 0)for(let r of t){if(r>0)return Kc(e,ps);if(r<0)return Kc(e,Ac)}return[1,10]}function yF(e){let t=[];for(let{value:r}of e)if(r!==void 0)for(let n of r)t.push(n);return t}function ll(e){return(t,r)=>n=>e(t+n*(r-t))}var Lx=0,Vx;function I6(){let e=Lx;return Lx=0,Vx=void 0,e}function Lr(e){e!==Vx&&(Vx=e,console.warn(e),++Lx)}function ch(e,t,r,n,{type:o,nice:i,clamp:a,domain:s=Kc(n),unknown:c,pivot:u=0,scheme:f,range:m,symmetric:l=!0,interpolate:p=He.get(e)===tn?f==null&&m!==void 0?bn:Gc(f!==void 0?f:"rdbu"):st,reverse:h}){u=+u,s=Fo(s);let[y,b]=s;if(s.length>2&&Lr(`Warning: the diverging ${e} scale domain contains extra elements.`),mn(y,b)<0&&([y,b]=[b,y],h=!h),y=Math.min(y,u),b=Math.max(b,u),typeof p!="function"&&(p=$x(p)),m!==void 0&&(p=p.length===1?ll(p)(...m):wo(p,m)),h&&(p=Fx(p)),l){let w=r.apply(u),g=w-r.apply(y),_=r.apply(b)-w;g<_?y=r.invert(w-_):g>_&&(b=r.invert(w+g))}return t.domain([y,u,b]).unknown(c).interpolator(p),a&&t.clamp(a),i&&t.nice(i),{type:o,domain:[y,b],pivot:u,interpolate:p,scale:t}}function _6(e,t,r){return ch(e,Uu(),bF,t,r)}function v6(e,t,r){return jx(e,t,{...r,exponent:.5})}function jx(e,t,{exponent:r=1,...n}){return ch(e,Am().exponent(r=+r),wF(r),t,{...n,type:"diverging-pow"})}function P6(e,t,{base:r=10,pivot:n=1,domain:o=Kc(t,n<0?Ac:ps),...i}){return ch(e,Rm().base(r=+r),gF,t,{domain:o,pivot:n,...i})}function T6(e,t,{constant:r=1,...n}){return ch(e,Nm().constant(r=+r),SF(r),t,n)}var bF={apply(e){return e},invert(e){return e}},gF={apply:Math.log,invert:Math.exp},xF={apply(e){return Math.sign(e)*Math.sqrt(Math.abs(e))},invert(e){return Math.sign(e)*(e*e)}};function wF(e){return e===.5?xF:{apply(t){return Math.sign(t)*Math.pow(Math.abs(t),e)},invert(t){return Math.sign(t)*Math.pow(Math.abs(t),1/e)}}}function SF(e){return{apply(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))},invert(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}}function M6(e,t,r,n){return qc(e,t,r,n)}function O6(e,t,r){return M6(e,Om(),t,r)}function C6(e,t,r){return M6(e,Cm(),t,r)}var Hc=Symbol("ordinal");function R6(e,t,r,{type:n,interval:o,domain:i,range:a,reverse:s,hint:c}){return o=da(o,n),i===void 0&&(i=$6(r,o,e)),(n==="categorical"||n===Hc)&&(n="ordinal"),s&&(i=Wi(i)),i=t.domain(i).domain(),a!==void 0&&(typeof a=="function"&&(a=a(i)),t.range(a)),{type:n,domain:i,range:a,scale:t,hint:c,interval:o}}function N6(e,t,{type:r,interval:n,domain:o,range:i,scheme:a,unknown:s,...c}){n=da(n,r),o===void 0&&(o=$6(t,n,e));let u;if(He.get(e)===Uc)u=IF(t),i=i===void 0?_F(u):et(i,Bc);else if(He.get(e)===tn&&(i===void 0&&(r==="ordinal"||r===Hc)&&(i=u6(o,a),i!==void 0&&(a=void 0)),a===void 0&&i===void 0&&(a=r==="ordinal"?"turbo":"observable10"),a!==void 0))if(i!==void 0){let f=Gc(a),m=i[0],l=i[1]-i[0];i=({length:p})=>pr(h=>f(m+l*h),p)}else i=Ax(a);if(s===Tu)throw new Error(`implicit unknown on ${e} scale is not supported`);return R6(e,Ja().unknown(s),t,{...c,type:r,domain:o,range:i,hint:u})}function A6(e,t,{align:r=.5,padding:n=.5,...o}){return F6(ng().align(r).padding(n),t,o,e)}function E6(e,t,{align:r=.5,padding:n=.1,paddingInner:o=n,paddingOuter:i=e==="fx"||e==="fy"?0:n,...a}){return F6(na().align(r).paddingInner(o).paddingOuter(i),t,a,e)}function F6(e,t,r,n){let{round:o}=r;return o!==void 0&&e.round(o=!!o),e=R6(n,e,t,r),e.round=o,e}function $6(e,t,r){let n=new zn;for(let{value:o,domain:i}of e){if(i!==void 0)return i();if(o!==void 0)for(let a of o)n.add(a)}if(t!==void 0){let[o,i]=Er(n).map(t.floor,t);return t.range(o,t.offset(i))}if(n.size>1e4&&He.get(r)===Mn)throw new Error(`implicit ordinal domain of ${r} scale has more than 10,000 values`);return Yi(n,$r)}function k6(e,t){let r;for(let{hint:n}of e){let o=n?.[t];if(o!==void 0){if(r===void 0)r=o;else if(r!==o)return}}return r}function IF(e){return{fill:k6(e,"fill"),stroke:k6(e,"stroke")}}function _F(e){return Ht(e.fill)?Lg:Kd}function pl(e,{label:t,inset:r=0,insetTop:n=r,insetRight:o=r,insetBottom:i=r,insetLeft:a=r,round:s,nice:c,clamp:u,zero:f,align:m,padding:l,projection:p,facet:{label:h=t}={},...y}={}){let b={};for(let[w,g]of e){let _=y[w],x=TF(w,g,{round:He.get(w)===Mn?s:void 0,nice:c,clamp:u,zero:f,align:m,padding:l,projection:p,..._});if(x){let{label:I=w==="fx"||w==="fy"?h:t,percent:S,transform:v,inset:T,insetTop:O=T!==void 0?T:w==="y"?n:0,insetRight:R=T!==void 0?T:w==="x"?o:0,insetBottom:C=T!==void 0?T:w==="y"?i:0,insetLeft:k=T!==void 0?T:w==="x"?a:0}=_||{};if(v==null)v=void 0;else if(typeof v!="function")throw new Error("invalid scale transform; not a function");x.percent=!!S,x.label=I===void 0?vF(g,x):I,x.transform=v,w==="x"||w==="fx"?(x.insetLeft=+k,x.insetRight=+R):(w==="y"||w==="fy")&&(x.insetTop=+O,x.insetBottom=+C),b[w]=x}}return b}function Bx(e){let t={},r={scales:t};for(let[n,o]of Object.entries(e)){let{scale:i,type:a,interval:s,label:c}=o;t[n]=kF(o),r[n]=i,i.type=a,s!=null&&(i.interval=s),c!=null&&(i.label=c)}return r}function U6(e,t){let{x:r,y:n,fx:o,fy:i}=e,a=o||i?uh(t):t;o&&D6(o,a),i&&L6(i,a);let s=o||i?zx(e,t):t;r&&D6(r,s),n&&L6(n,s)}function vF(e=[],t){let r;for(let{label:n}of e)if(n!==void 0){if(r===void 0)r=n;else if(r!==n)return}if(r!==void 0)return!Do(t)&&t.percent&&(r=`${r} (%)`),{inferred:!0,toString:()=>r}}function B6(e){return Math.sign(_i(e.domain()))*Math.sign(_i(e.range()))}function uh(e){let{marginTop:t,marginRight:r,marginBottom:n,marginLeft:o,width:i,height:a,facet:{marginTop:s,marginRight:c,marginBottom:u,marginLeft:f}}=e;return{marginTop:Math.max(t,s),marginRight:Math.max(r,c),marginBottom:Math.max(n,u),marginLeft:Math.max(o,f),width:i,height:a}}function zx({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:c}=uh(r);return{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:e?e.scale.bandwidth()+a+o:s,height:t?t.scale.bandwidth()+n+i:c,facet:{width:s,height:c}}}function D6(e,t){if(e.range===void 0){let{insetLeft:r,insetRight:n}=e,{width:o,marginLeft:i=0,marginRight:a=0}=t,s=i+r,c=o-a-n;e.range=[s,Math.max(s,c)],Do(e)||(e.range=G6(e)),e.scale.range(e.range)}z6(e)}function L6(e,t){if(e.range===void 0){let{insetTop:r,insetBottom:n}=e,{height:o,marginTop:i=0,marginBottom:a=0}=t,s=i+r,c=o-a-n;e.range=[Math.max(s,c),s],Do(e)?e.range.reverse():e.range=G6(e),e.scale.range(e.range)}z6(e)}function z6(e){e.round===void 0&&OF(e)&&PF(e)<=30&&e.scale.round(!0)}function PF({scale:e}){let t=e.domain().length,[r,n]=e.range(),o=e.paddingInner?e.paddingInner():1,i=e.paddingOuter?e.paddingOuter():e.padding(),a=t-o,s=Math.abs(n-r)/Math.max(1,a+i*2);return(s-Math.floor(s))*a}function G6(e){let t=e.scale.domain().length+Gx(e);if(!(t>2))return e.range;let[r,n]=e.range;return Array.from({length:t},(o,i)=>r+i/(t-1)*(n-r))}function TF(e,t=[],r={}){let n=MF(e,t,r);if(r.type===void 0&&r.domain===void 0&&r.range===void 0&&r.interval==null&&e!=="fx"&&e!=="fy"&&Do({type:n})){let o=t.map(({value:i})=>i).filter(i=>i!==void 0);o.some(Kt)?Lr(`Warning: some data associated with the ${e} scale are dates. Dates are typically associated with a "utc" or "time" scale rather than a "${Yc(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., d3.utcDay), or you can suppress this warning by setting the type of the ${e} scale to "${Yc(n)}".`):o.some(NT)?Lr(`Warning: some data associated with the ${e} scale are strings that appear to be dates (e.g., YYYY-MM-DD). If these strings represent dates, you should parse them to Date objects. Dates are typically associated with a "utc" or "time" scale rather than a "${Yc(n)}" scale. If you are using a bar mark, you probably want a rect mark with the interval option instead; if you are using a group transform, you probably want a bin transform instead. If you want to treat this data as ordinal, you can suppress this warning by setting the type of the ${e} scale to "${Yc(n)}".`):o.some(AT)&&Lr(`Warning: some data associated with the ${e} scale are strings that appear to be numbers. If these strings represent numbers, you should parse or coerce them to numbers. Numbers are typically associated with a "linear" scale rather than a "${Yc(n)}" scale. If you want to treat this data as ordinal, you can specify the interval of the ${e} scale (e.g., 1 for integers), or you can suppress this warning by setting the type of the ${e} scale to "${Yc(n)}".`)}switch(r.type=n,n){case"diverging":case"diverging-sqrt":case"diverging-pow":case"diverging-log":case"diverging-symlog":case"cyclical":case"sequential":case"linear":case"sqrt":case"threshold":case"quantile":case"pow":case"log":case"symlog":r=fh(t,r,ds);break;case"identity":switch(He.get(e)){case Mn:r=fh(t,r,ds);break;case Uc:r=fh(t,r,CF);break}break;case"utc":case"time":r=fh(t,r,xx);break}switch(n){case"diverging":return _6(e,t,r);case"diverging-sqrt":return v6(e,t,r);case"diverging-pow":return jx(e,t,r);case"diverging-log":return P6(e,t,r);case"diverging-symlog":return T6(e,t,r);case"categorical":case"ordinal":case Hc:return N6(e,t,r);case"cyclical":case"sequential":case"linear":return d6(e,t,r);case"sqrt":return h6(e,t,r);case"threshold":return sh(e,t,r);case"quantile":return g6(e,t,r);case"quantize":return x6(e,t,r);case"pow":return Dx(e,t,r);case"log":return y6(e,t,r);case"symlog":return b6(e,t,r);case"utc":return C6(e,t,r);case"time":return O6(e,t,r);case"point":return A6(e,t,r);case"band":return E6(e,t,r);case"identity":return w6(e);case void 0:return;default:throw new Error(`unknown scale type: ${n}`)}}function Yc(e){return typeof e=="symbol"?e.description:e}function V6(e){return typeof e=="string"?`${e}`.toLowerCase():e}var j6={toString:()=>"projection"};function MF(e,t,{type:r,domain:n,range:o,scheme:i,pivot:a,projection:s}){if(r=V6(r),e==="fx"||e==="fy")return"band";(e==="x"||e==="y")&&s!=null&&(r=j6);for(let f of t){let m=V6(f.type);if(m!==void 0){if(r===void 0)r=m;else if(r!==m)throw new Error(`scale incompatible with channel: ${r} !== ${m}`)}}if(r===j6)return;if(r!==void 0)return r;if(n===void 0&&!t.some(({value:f})=>f!==void 0))return;let c=He.get(e);if(c===ys)return"sqrt";if(c===gs||c===bs)return"linear";if(c===Uc)return"ordinal";let u=(n??o)?.length;if(u<2||u>2)return Ux(c);if(n!==void 0){if(_x(n))return Ux(c);if(Kt(n))return"utc"}else{let f=t.map(({value:m})=>m).filter(m=>m!==void 0);if(f.some(_x))return Ux(c);if(f.some(Kt))return"utc"}if(c===tn){if(a!=null||l6(i))return"diverging";if(f6(i))return"categorical"}return"linear"}function Ux(e){switch(e){case Mn:return"point";case tn:return Hc;default:return"ordinal"}}function Do({type:e}){return e==="ordinal"||e==="point"||e==="band"||e===Hc}function Gx({type:e}){return e==="threshold"}function OF({type:e}){return e==="point"||e==="band"}function ba(e){if(e===void 0)return!0;let t=e.domain(),r=e(t[0]);for(let n=1,o=t.length;n{if(!He.has(t=`${t}`))throw new Error(`unknown scale: ${t}`);return e[t]}}function kF({scale:e,type:t,domain:r,range:n,interpolate:o,interval:i,transform:a,percent:s,pivot:c}){if(t==="identity")return{type:"identity",apply:f=>f,invert:f=>f};let u=e.unknown?e.unknown():void 0;return{type:t,domain:ua(r),...n!==void 0&&{range:ua(n)},...a!==void 0&&{transform:a},...s&&{percent:s},...u!==void 0&&{unknown:u},...i!==void 0&&{interval:i},...o!==void 0&&{interpolate:o},...e.clamp&&{clamp:e.clamp()},...c!==void 0&&{pivot:c,symmetric:!1},...e.base&&{base:e.base()},...e.exponent&&{exponent:e.exponent()},...e.constant&&{constant:e.constant()},...e.align&&{align:e.align(),round:e.round()},...e.padding&&(e.paddingInner?{paddingInner:e.paddingInner(),paddingOuter:e.paddingOuter()}:{padding:e.padding()}),...e.bandwidth&&{bandwidth:e.bandwidth(),step:e.step()},apply:f=>e(f),...e.invert&&{invert:f=>e.invert(f)}}}function H6(e,t){let{fx:r,fy:n}=pl(e,t),o=r?.scale.domain(),i=n?.scale.domain();return o&&i?cp(o,i).map(([a,s],c)=>({x:a,y:s,i:c})):o?o.map((a,s)=>({x:a,i:s})):i?i.map((a,s)=>({y:a,i:s})):void 0}function Y6(e,{x:t,y:r}){return t&&=Wx(t),r&&=Wx(r),e.filter(t&&r?n=>t.has(n.x)&&r.has(n.y):t?n=>t.has(n.x):n=>r.has(n.y)).sort(t&&r?(n,o)=>t.get(n.x)-t.get(o.x)||r.get(n.y)-r.get(o.y):t?(n,o)=>t.get(n.x)-t.get(o.x):(n,o)=>r.get(n.y)-r.get(o.y))}function ph(e,{fx:t,fy:r}){let n=Dr(e),o=t?.value,i=r?.value;return t&&r?ho(n,a=>(a.fx=o[a[0]],a.fy=i[a[0]],a),a=>o[a],a=>i[a]):t?ho(n,a=>(a.fx=o[a[0]],a),a=>o[a]):ho(n,a=>(a.fy=i[a[0]],a),a=>i[a])}function W6(e,t,{marginTop:r,marginLeft:n}){let o=e?({x:a})=>e(a)-n:()=>0,i=t?({y:a})=>t(a)-r:()=>0;return function(a){this.tagName==="svg"?(this.setAttribute("x",o(a)),this.setAttribute("y",i(a))):this.setAttribute("transform",`translate(${o(a)},${i(a)})`)}}function X6(e){let t=[],r=new Uint32Array(dn(e,n=>n.length));for(let n of e){let o=0;for(let i of e)n!==i&&(r.set(i,o),o+=i.length);t.push(r.slice(0,o))}return t}var RF=new Map([["top",Kx],["right",Yx],["bottom",qx],["left",Hx],["top-left",lh(Kx,Hx)],["top-right",lh(Kx,Yx)],["bottom-left",lh(qx,Hx)],["bottom-right",lh(qx,Yx)],["top-empty",AF],["right-empty",$F],["bottom-empty",EF],["left-empty",FF],["empty",DF]]);function Z6(e){if(e==null)return null;let t=RF.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid facet anchor: ${e}`)}var q6=new WeakMap;function Wx(e){let t=q6.get(e);return t||q6.set(e,t=new Sr(et(e,(r,n)=>[r,n]))),t}function ga(e,t){return Wx(e).get(t)}function NF(e,t,r){return t=Pn(t),r=Pn(r),e.find(n=>Object.is(Pn(n.x),t)&&Object.is(Pn(n.y),r))}function mh(e,t,r){return NF(e,t,r)?.empty}function Kx(e,{y:t},{y:r}){return t?ga(t,r)===0:!0}function qx(e,{y:t},{y:r}){return t?ga(t,r)===t.length-1:!0}function Hx(e,{x:t},{x:r}){return t?ga(t,r)===0:!0}function Yx(e,{x:t},{x:r}){return t?ga(t,r)===t.length-1:!0}function AF(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=ga(t,n);if(i>0)return mh(e,r,t[i-1])}function EF(e,{y:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=ga(t,n);if(i0)return mh(e,t[i-1],n)}function $F(e,{x:t},{x:r,y:n,empty:o}){if(o)return!1;if(!t)return;let i=ga(t,r);if(in.get(o)?.get(i)??[]):t?e.map(({x:o})=>n.get(o)??[]):e.map(({y:o})=>n.get(o)??[])}var Q6=Math.PI,ki=2*Q6,Xx=.618;function J6({projection:e,inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={},a){if(e==null)return;if(typeof e.stream=="function")return e;let s,c,u="frame";if($o(e)){let I;if({type:e,domain:c,inset:I,insetTop:r=I!==void 0?I:r,insetRight:n=I!==void 0?I:n,insetBottom:o=I!==void 0?I:o,insetLeft:i=I!==void 0?I:i,clip:u=u,...s}=e,e==null)return}typeof e!="function"&&({type:e}=Zx(e));let{width:f,height:m,marginLeft:l,marginRight:p,marginTop:h,marginBottom:y}=a,b=f-l-p-i-n,w=m-h-y-r-o;if(e=e?.({width:b,height:w,clip:u,...s}),e==null)return;u=LF(u,l,h,f-p,m-y);let g=l+i,_=h+r,x;if(c!=null){let[[I,S],[v,T]]=bc(e).bounds(c),O=Math.min(b/(v-I),w/(T-S));O>0?(g-=(O*(I+v)-b)/2,_-=(O*(S+T)-w)/2,x=gc({point(R,C){this.stream.point(R*O+g,C*O+_)}})):Lr("Warning: the projection could not be fit to the specified domain; using the default scale.")}return x??=g===0&&_===0?eM():gc({point(I,S){this.stream.point(I+g,S+_)}}),{stream:I=>e.stream(x.stream(u(I)))}}function Zx(e){switch(`${e}`.toLowerCase()){case"albers-usa":return Zn(Db,.7463,.4673);case"albers":return hh(wu,.7463,.4673);case"azimuthal-equal-area":return Zn(Vb,4,4);case"azimuthal-equidistant":return Zn(Ub,ki,ki);case"conic-conformal":return hh(Gb,ki,ki);case"conic-equal-area":return hh(ra,6.1702,2.9781);case"conic-equidistant":return hh(qb,7.312,3.6282);case"equal-earth":return Zn(Yb,5.4133,2.6347);case"equirectangular":return Zn(Kb,ki,Q6);case"gnomonic":return Zn(Xb,3.4641,3.4641);case"identity":return{type:eM};case"reflect-y":return{type:VF};case"mercator":return Zn(Bb,ki,ki);case"orthographic":return Zn(Qb,2,2);case"stereographic":return Zn(eg,2,2);case"transverse-mercator":return Zn(rg,ki,ki);default:throw new Error(`unknown projection type: ${e}`)}}function LF(e,t,r,n,o){if(e===!1||e==null||typeof e=="number")return i=>i;switch(e===!0&&(e="frame"),`${e}`.toLowerCase()){case"frame":return pc(t,r,n,o);default:throw new Error(`unknown projection clip type: ${e}`)}}function Zn(e,t,r){return{type:({width:n,height:o,rotate:i,precision:a=.15,clip:s})=>{let c=e();return a!=null&&c.precision?.(a),i!=null&&c.rotate?.(i),typeof s=="number"&&c.clipAngle?.(s),n!=null&&(c.scale(Math.min(n/t,o/r)),c.translate([n/2,o/2])),c},aspectRatio:r/t}}function hh(e,t,r){let{type:n,aspectRatio:o}=Zn(e,t,r);return{type:i=>{let{parallels:a,domain:s,width:c,height:u}=i,f=n(i);return a!=null&&(f.parallels(a),s===void 0&&c!=null&&f.fitSize([c,u],{type:"Sphere"})),f},aspectRatio:o}}var eM=en({stream:e=>e}),VF=en(gc({point(e,t){this.stream.point(e,-t)}}));function tM(e,t,r,n){let o=r[e],i=r[t],a=o.length,s=r[e]=new Float64Array(a).fill(NaN),c=r[t]=new Float64Array(a).fill(NaN),u,f=n.stream({point(m,l){s[u]=m,c[u]=l}});for(u=0;u5?5:c:Xx}}if(e!=null){if(typeof e!="function"){let{aspectRatio:t}=Zx(e);if(t)return t}return Xx}}function oM(e){let t=[],r=[],n={scale:"x",value:t},o={scale:"y",value:r},i={point(a,s){t.push(a),r.push(s)},lineStart(){},lineEnd(){},polygonStart(){},polygonEnd(){},sphere(){}};for(let a of e.value)Yn(a,i);return[n,o]}function iM({x:e,y:t}){if(e||t)return e??=r=>r,t??=r=>r,gc({point(r,n){this.stream.point(e(r),t(n))}})}function Wc(e={}){let{document:t=typeof window<"u"?window.document:void 0,clip:r}=e;return{document:t,clip:ah(r)}}function ze(e,{document:t}){return hn(fi(e).call(t.documentElement))}var yh=Symbol("unset");function bh(e){return(e.length===1?jF:UF)(e)}function jF(e){let t,r=yh;return n=>(Object.is(r,n)||(r=n,t=e(n)),t)}function UF(e){let t,r;return(...n)=>((r?.length!==n.length||r.some((o,i)=>!Object.is(o,n[i])))&&(r=n,t=e(...n)),t)}var BF=bh(e=>new Intl.NumberFormat(e)),owe=bh((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{month:t}})),iwe=bh((e,t)=>new Intl.DateTimeFormat(e,{timeZone:"UTC",...t&&{weekday:t}}));function zF(e="en-US"){let t=BF(e);return r=>r!=null&&!isNaN(r)?t.format(r):void 0}function GF(e){return Zd(e,"Invalid Date")}function KF(e="en-US"){let t=zF(e);return r=>(r instanceof Date?GF:typeof r=="number"?t:Mt)(r)}var Lo=KF();var or=(typeof window<"u"?window.devicePixelRatio>1:typeof it>"u")?0:.5,qF=0;function sM(){return`plot-clip-${++qF}`}function cM(e,{title:t,href:r,ariaLabel:n,ariaDescription:o,ariaHidden:i,target:a,fill:s,fillOpacity:c,stroke:u,strokeWidth:f,strokeOpacity:m,strokeLinejoin:l,strokeLinecap:p,strokeMiterlimit:h,strokeDasharray:y,strokeDashoffset:b,opacity:w,mixBlendMode:g,imageFilter:_,paintOrder:x,pointerEvents:I,shapeRendering:S,channels:v},{ariaLabel:T,fill:O="currentColor",fillOpacity:R,stroke:C="none",strokeOpacity:k,strokeWidth:z,strokeLinecap:j,strokeLinejoin:M,strokeMiterlimit:U,paintOrder:L}){O===null&&(s=null,c=null),C===null&&(u=null,m=null),Ht(O)?!Ht(C)&&(!Ht(s)||v?.fill)&&(C="none"):Ht(C)&&(!Ht(u)||v?.stroke)&&(O="none");let[re,V]=Eo(s,O),[q,H]=It(c,R),[W,te]=Eo(u,C),[be,K]=It(m,k),[Z,Y]=It(w);hs(te)||(f===void 0&&(f=z),p===void 0&&(p=j),l===void 0&&(l=M),h===void 0&&!$T(l)&&(h=U),!hs(V)&&x===void 0&&(x=L));let[ee,A]=It(f);return O!==null&&(e.fill=_t(V,"currentColor"),e.fillOpacity=ml(H,1)),C!==null&&(e.stroke=_t(te,"none"),e.strokeWidth=ml(A,1),e.strokeOpacity=ml(K,1),e.strokeLinejoin=_t(l,"miter"),e.strokeLinecap=_t(p,"butt"),e.strokeMiterlimit=ml(h,4),e.strokeDasharray=_t(y,"none"),e.strokeDashoffset=_t(b,"0")),e.target=Mt(a),e.ariaLabel=Mt(T),e.ariaDescription=Mt(o),e.ariaHidden=Mt(i),e.opacity=ml(Y,1),e.mixBlendMode=_t(g,"normal"),e.imageFilter=_t(_,"none"),e.paintOrder=_t(x,"normal"),e.pointerEvents=_t(I,"auto"),e.shapeRendering=_t(S,"auto"),{title:{value:t,optional:!0,filter:null},href:{value:r,optional:!0,filter:null},ariaLabel:{value:n,optional:!0,filter:null},fill:{value:re,scale:"auto",optional:!0},fillOpacity:{value:q,scale:"auto",optional:!0},stroke:{value:W,scale:"auto",optional:!0},strokeOpacity:{value:be,scale:"auto",optional:!0},strokeWidth:{value:ee,optional:!0},opacity:{value:Z,scale:"auto",optional:!0}}}function HF(e,t){t&&e.filter(r=>ol(t[r])).append("title").call(WF,t)}function YF(e,t){t&&e.filter(([r])=>ol(t[r])).append("title").call(XF,t)}function WF(e,t){t&&e.text(r=>Lo(t[r]))}function XF(e,t){t&&e.text(([r])=>Lo(t[r]))}function Vr(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:c,strokeWidth:u,opacity:f,href:m}){n&&de(e,"aria-label",l=>n[l]),i&&de(e,"fill",l=>i[l]),a&&de(e,"fill-opacity",l=>a[l]),s&&de(e,"stroke",l=>s[l]),c&&de(e,"stroke-opacity",l=>c[l]),u&&de(e,"stroke-width",l=>u[l]),f&&de(e,"opacity",l=>f[l]),m&&lM(e,l=>m[l],t),r||HF(e,o)}function fM(e,{target:t,tip:r},{ariaLabel:n,title:o,fill:i,fillOpacity:a,stroke:s,strokeOpacity:c,strokeWidth:u,opacity:f,href:m}){n&&de(e,"aria-label",([l])=>n[l]),i&&de(e,"fill",([l])=>i[l]),a&&de(e,"fill-opacity",([l])=>a[l]),s&&de(e,"stroke",([l])=>s[l]),c&&de(e,"stroke-opacity",([l])=>c[l]),u&&de(e,"stroke-width",([l])=>u[l]),f&&de(e,"opacity",([l])=>f[l]),m&&lM(e,([l])=>m[l],t),r||YF(e,o)}function ZF({ariaLabel:e,title:t,fill:r,fillOpacity:n,stroke:o,strokeOpacity:i,strokeWidth:a,opacity:s,href:c},{tip:u}){return[e,u?void 0:t,r,n,o,i,a,s,c].filter(f=>f!==void 0)}function QF(e,t,r){let n=ii(e,o=>t[o]);return r===void 0&&n.size>1+e.length>>1&&Lr("Warning: the implicit z channel has high cardinality. This may occur when the fill or stroke channel is associated with quantitative data rather than ordinal or categorical data. You can suppress this warning by setting the z option explicitly; if this data represents a single series, set z to null."),n.values()}function*uM(e,t,r,n){let{z:o}=r,{z:i}=n,a=ZF(n,r),s=[...t,...a];for(let c of i?QF(e,i,o):[e]){let u,f;e:for(let m of c){for(let l of s)if(!vn(l[m])){f&&f.push(-1);continue e}if(u===void 0){f&&(yield f),u=a.map(l=>Pn(l[m])),f=[m];continue}f.push(m);for(let l=0;lPn(h[m])),f=[m];continue e}}f&&(yield f)}}function JF(e,t,r,n){let o,{clip:i=n.clip}=t;i==="frame"?(e=ze("svg:g",n).each(function(){this.appendChild(e.node()),e.node=()=>this}),o=t9(n,r)):i&&(o=n9(i,n)),de(e,"aria-label",t.ariaLabel),de(e,"aria-description",t.ariaDescription),de(e,"aria-hidden",t.ariaHidden),de(e,"clip-path",o)}function e9(e){let t=new WeakMap;return(r,n)=>{let o=t.get(r);if(!o){let i=sM();hn(r.ownerSVGElement).append("clipPath").attr("id",i).call(e,r,n),t.set(r,o=`url(#${i})`)}return o}}var t9=e9((e,t,r)=>{let{width:n,height:o,marginLeft:i,marginRight:a,marginTop:s,marginBottom:c}=r;e.append("rect").attr("x",i).attr("y",s).attr("width",n-a-i).attr("height",o-s-c)}),aM=new WeakMap,r9={type:"Sphere"};function n9(e,t){let r,n;if((r=aM.get(t))||aM.set(t,r=new WeakMap),e.type==="Sphere"&&(e=r9),!(n=r.get(e))){let o=sM();hn(t.ownerSVGElement).append("clipPath").attr("id",o).append("path").attr("d",t.path()(e)),r.set(e,n=`url(#${o})`)}return n}function ir(e,t,r,n){JF(e,t,r,n),de(e,"class",t.className),de(e,"fill",t.fill),de(e,"fill-opacity",t.fillOpacity),de(e,"stroke",t.stroke),de(e,"stroke-width",t.strokeWidth),de(e,"stroke-opacity",t.strokeOpacity),de(e,"stroke-linejoin",t.strokeLinejoin),de(e,"stroke-linecap",t.strokeLinecap),de(e,"stroke-miterlimit",t.strokeMiterlimit),de(e,"stroke-dasharray",t.strokeDasharray),de(e,"stroke-dashoffset",t.strokeDashoffset),de(e,"shape-rendering",t.shapeRendering),de(e,"filter",t.imageFilter),de(e,"paint-order",t.paintOrder);let{pointerEvents:o=n.pointerSticky===!1?"none":void 0}=t;de(e,"pointer-events",o)}function Wt(e,t){o9(e,"mix-blend-mode",t.mixBlendMode),de(e,"opacity",t.opacity)}function lM(e,t,r){e.each(function(n){let o=t(n);if(o!=null){let i=this.ownerDocument.createElementNS(yo.svg,"a");i.setAttribute("fill","inherit"),i.setAttributeNS(yo.xlink,"href",o),r!=null&&i.setAttribute("target",r),this.parentNode.insertBefore(i,this).appendChild(this)}})}function de(e,t,r){r!=null&&e.attr(t,r)}function o9(e,t,r){r!=null&&e.style(t,r)}function ar(e,t,{x:r,y:n},o=or,i=or){o+=t.dx,i+=t.dy,r?.bandwidth&&(o+=r.bandwidth()/2),n?.bandwidth&&(i+=n.bandwidth()/2),(o||i)&&e.attr("transform",`translate(${o},${i})`)}function _t(e,t){if((e=Mt(e))!==t)return e}function ml(e,t){if((e=Ot(e))!==t)return e}var i9=/^-?([_a-z]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])([_a-z0-9-]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])*$/i;function Xc(e){if(e===void 0)return"plot-d6a7b5";if(e=`${e}`,!i9.test(e))throw new Error(`invalid class name: ${e}`);return e}function Zc(e,t){if(typeof t=="string")e.property("style",t);else if(t!=null)for(let r of e)Object.assign(r.style,t)}function Vo({frameAnchor:e},{width:t,height:r,marginTop:n,marginRight:o,marginBottom:i,marginLeft:a}){return[/left$/.test(e)?a:/right$/.test(e)?t-o:(a+t-o)/2,/^top/.test(e)?n:/^bottom/.test(e)?r-i:(n+r-i)/2]}var lt=class{constructor(t,r={},n={},o){let{facet:i="auto",facetAnchor:a,fx:s,fy:c,sort:u,dx:f=0,dy:m=0,margin:l=0,marginTop:p=l,marginRight:h=l,marginBottom:y=l,marginLeft:b=l,className:w,clip:g=o?.clip,channels:_,tip:x,render:I}=n;if(this.data=t,this.sort=la(u)?u:null,this.initializer=Ti(n).initializer,this.transform=this.initializer?n.transform:fl(n).transform,i===null||i===!1?this.facet=null:(this.facet=Pr(i===!0?"include":i,"facet",["auto","include","exclude","super"]),this.fx=t===Dc&&typeof s=="string"?[s]:s,this.fy=t===Dc&&typeof c=="string"?[c]:c),this.facetAnchor=Z6(a),r=vx(r),_!==void 0&&(r={...a9(_),...r}),o!==void 0&&(r={...cM(this,n,o),...r}),this.channels=Object.fromEntries(Object.entries(r).map(([S,v])=>{if(Vc(v.value)){let{value:T,label:O=v.label,scale:R=v.scale}=v.value;v={...v,label:O,scale:R,value:T}}if(t===Dc&&typeof v.value=="string"){let{value:T}=v;v={...v,value:[T]}}return[S,v]}).filter(([S,{value:v,optional:T}])=>{if(v!=null)return!0;if(T)return!1;throw new Error(`missing channel value: ${S}`)})),this.dx=+f,this.dy=+m,this.marginTop=+p,this.marginRight=+h,this.marginBottom=+y,this.marginLeft=+b,this.clip=ah(g),this.tip=s9(x),this.className=Mt(w),this.facet==="super"){if(s||c)throw new Error("super-faceting cannot use fx or fy");for(let S in this.channels){let{scale:v}=r[S];if(!(v!=="x"&&v!=="y"))throw new Error("super-faceting cannot use x or y")}}I!=null&&(this.render=Jx(I,this.render))}initialize(t,r,n){let o=vi(this.data);t===void 0&&o!=null&&(t=[Dr(o)]);let i=t;this.transform!=null&&({facets:t,data:o}=this.transform(o,t,n),o=vi(o)),t!==void 0&&(t.original=i);let a=JT(this.channels,o);return this.sort!=null&&t6(o,t,a,r,this.sort),{data:o,facets:t,channels:a}}filter(t,r,n){for(let o in r){let{filter:i=vn}=r[o];if(i!==null){let a=n[o];t=t.filter(s=>i(a[s]))}}return t}project(t,r,n){for(let o in t)if(t[o].scale==="x"&&/^x|x$/.test(o)){let i=o.replace(/^x|x$/,"y");i in t&&t[i].scale==="y"&&tM(o,i,r,n.projection)}}scale(t,r,n){let o=e6(t,r);return n.projection&&this.project(t,o,n),o}};function Qx(...e){return e.plot=lt.prototype.plot,e}function Jx(e,t){if(e==null)return t===null?void 0:t;if(t==null)return e===null?void 0:e;if(typeof e!="function")throw new TypeError(`invalid render transform: ${e}`);if(typeof t!="function")throw new TypeError(`invalid render transform: ${t}`);return function(r,n,o,i,a,s){return e.call(this,r,n,o,i,a,(c,u,f,m,l)=>t.call(this,c,u,f,m,l,s))}}function a9(e){return Object.fromEntries(Object.entries(vx(e)).map(([t,r])=>(r=typeof r=="string"?{value:r,label:t}:ha(r),r.filter===void 0&&r.scale==null&&(r={...r,filter:null}),[t,r])))}function s9(e){return e===!0?"xy":e===!1||e==null?null:typeof e=="string"?Pr(e,"tip",["x","y","xy"]):e}function dl(e,t){return e?.tip===!0?{...e,tip:t}:$o(e?.tip)&&e.tip.pointer===void 0?{...e,tip:{...e.tip,pointer:t}}:e}function mM(e,t,r={}){let n=.5-or,o=.5+or,i=.5+or,a=.5-or;for(let{marginTop:y,marginRight:b,marginBottom:w,marginLeft:g}of t)y>n&&(n=y),b>o&&(o=b),w>i&&(i=w),g>a&&(a=g);let{margin:s,marginTop:c=s!==void 0?s:n,marginRight:u=s!==void 0?s:o,marginBottom:f=s!==void 0?s:i,marginLeft:m=s!==void 0?s:a}=r;c=+c,u=+u,f=+f,m=+m;let{width:l=640,height:p=c9(e,r,{width:l,marginTopDefault:n,marginRightDefault:o,marginBottomDefault:i,marginLeftDefault:a})+Math.max(0,c-n+f-i)}=r;l=+l,p=+p;let h={width:l,height:p,marginTop:c,marginRight:u,marginBottom:f,marginLeft:m};if(e.fx||e.fy){let{margin:y,marginTop:b=y!==void 0?y:c,marginRight:w=y!==void 0?y:u,marginBottom:g=y!==void 0?y:f,marginLeft:_=y!==void 0?y:m}=r.facet??{};b=+b,w=+w,g=+g,_=+_,h.facet={marginTop:b,marginRight:w,marginBottom:g,marginLeft:_}}return h}function c9({x:e,y:t,fy:r,fx:n},{projection:o,aspectRatio:i},{width:a,marginTopDefault:s,marginRightDefault:c,marginBottomDefault:u,marginLeftDefault:f}){let m=r&&r.scale.domain().length||1,l=nM(o);if(l){let h=n?n.scale.domain().length:1,y=(1.1*m-.1)/(1.1*h-.1)*l,b=Math.max(.1,Math.min(10,y));return Math.round((a-f-c)*b+s+u)}let p=t?Do(t)?t.scale.domain().length||1:Math.max(7,17/m):1;if(i!=null){if(i=+i,!(isFinite(i)&&i>0))throw new Error(`invalid aspectRatio: ${i}`);let h=pM("y",t)/(pM("x",e)*i),y=n?n.scale.bandwidth():1,b=r?r.scale.bandwidth():1,w=y*(a-f-c)-e.insetLeft-e.insetRight;return(h*w+t.insetTop+t.insetBottom)/b+s+u}return!!(t||r)*Math.max(1,Math.min(60,p*m))*20+!!n*30+60}function pM(e,t){if(!t)throw new Error(`aspectRatio requires ${e} scale`);let{type:r,domain:n}=t,o;switch(r){case"linear":case"utc":case"time":o=Number;break;case"pow":{let s=t.scale.exponent();o=c=>Math.pow(c,s);break}case"log":o=Math.log;break;case"point":case"band":return n.length;default:throw new Error(`unsupported ${e} scale for aspectRatio: ${r}`)}let[i,a]=Er(n);return Math.abs(o(a)-o(i))}var dM=new WeakMap;function e1(e,t,{x:r,y:n,px:o,py:i,maxRadius:a=40,channels:s,render:c,...u}={}){return a=+a,o!=null&&(r??=null,s={...s,px:{value:o,scale:"x"}}),i!=null&&(n??=null,s={...s,py:{value:i,scale:"y"}}),{x:r,y:n,channels:s,...u,render:Jx(function(f,m,l,p,h,y){h={...h,pointerSticky:!1};let b=h.ownerSVGElement,{data:w}=h.getMarkState(this),g=dM.get(b);g||dM.set(b,g={sticky:!1,roots:[],renders:[]});let _=g.renders.push(te)-1,{x,y:I,fx:S,fy:v}=m,T=S?S(f.fx)-p.marginLeft:0,O=v?v(f.fy)-p.marginTop:0;x?.bandwidth&&(T+=x.bandwidth()/2),I?.bandwidth&&(O+=I.bandwidth()/2);let R=f.fi!=null,C;if(R){let Y=g.facetStates;Y||(g.facetStates=Y=new Map),C=Y.get(this),C||Y.set(this,C=new Map)}let[k,z]=Vo(this,p),{px:j,py:M}=l,U=j?Y=>j[Y]:r1(l,k),L=M?Y=>M[Y]:n1(l,z),re,V,q,H;function W(Y,ee){if(R)if(H&&(H=cancelAnimationFrame(H)),Y==null)C.delete(f.fi);else{C.set(f.fi,ee),H=requestAnimationFrame(()=>{H=null;for(let[A,B]of C)if(B1)){let B=re==null?null:Xn(w)?w[re]:w.get(re);h.dispatchValue(B)}return A}function be(Y){if(g.sticky||Y.pointerType==="mouse"&&Y.buttons===1)return;let[ee,A]=jy(Y);ee-=T,A-=O;let B=eep.width-p.marginRight?1:e,Q=Ap.height-p.marginBottom?1:t,E=null,me=a*a;for(let G of f){let oe=B*(U(G)-ee),ue=Q*(L(G)-A),Ce=oe*oe+ue*ue;Ce<=me&&(E=G,me=Ce)}if(E!=null&&(e!==1||t!==1)){let G=U(E)-ee,oe=L(E)-A;me=G*G+oe*oe}W(E,me)}function K(Y){Y.pointerType==="mouse"&&re!=null&&(g.sticky&&g.roots.some(ee=>ee?.contains(Y.target))||(g.sticky?(g.sticky=!1,g.renders.forEach(ee=>ee(null))):(g.sticky=!0,te(re)),Y.stopImmediatePropagation()))}function Z(Y){Y.pointerType==="mouse"&&(g.sticky||W(null))}return b.addEventListener("pointerenter",be),b.addEventListener("pointermove",be),b.addEventListener("pointerdown",K),b.addEventListener("pointerleave",Z),te(null)},c)}}function hM(e){return e1(1,1,e)}function yM(e){return e1(1,.01,e)}function t1(e){return e1(.01,1,e)}function r1({x1:e,x2:t,x:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function n1({y1:e,y2:t,y:r=e},n){return e&&t?o=>(e[o]+t[o])/2:r?o=>r[o]:()=>n}function gh(e){return Do(e)&&e.interval===void 0?void 0:"tabular-nums"}function bM(e,t){let{label:r=e.label,tickSize:n=6,width:o=240,height:i=44+n,marginTop:a=18,marginRight:s=0,marginBottom:c=16+n,marginLeft:u=0,style:f,ticks:m=(o-u-s)/64,tickFormat:l,fontVariant:p=gh(e),round:h=!0,opacity:y,className:b}=t,w=Wc(t);b=Xc(b),y=It(y)[1],l===null&&(l=()=>null);let g=ze("svg",w).attr("class",`${b}-ramp`).attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("width",o).attr("height",i).attr("viewBox",`0 0 ${o} ${i}`).call(k=>k.append("style").text(`:where(.${b}-ramp) { display: block; height: auto; height: intrinsic; max-width: 100%; overflow: visible; } -:where(.${x}-ramp text) { +:where(.${b}-ramp text) { white-space: pre; -}`)).call(Mf,c),S=F=>F.selectAll(".tick line").attr("y1",a+f-i),b,T=d?(F,H)=>F.rangeRound(H):(F,H)=>F.range(H),{type:I,domain:v,range:O,interpolate:C,scale:E,pivot:A}=e;if(C){let F=O===void 0?C:no(C.length===1?ku(C):C,O);b=T(E.copy(),ir(et(u,o-s),Math.min(v.length+(A!==void 0),O===void 0?1/0:O.length)));let H=256,j=w.document.createElement("canvas");j.width=H,j.height=1;let M=j.getContext("2d");for(let U=0,D=H-1;Uj:typeof l=="string"?sn(l):l;b=T(Pa().domain([-1,O.length-1]),[u,o-s]),g.append("g").attr("fill-opacity",y).selectAll().data(O).enter().append("rect").attr("x",(j,M)=>b(M-1)).attr("y",a).attr("width",(j,M)=>b(M)-b(M-1)).attr("height",i-a-f).attr("fill",j=>j),m=We(F,(j,M)=>M),l=j=>H(F[j],j)}else b=T(Ei().domain(v),[u,o-s]),g.append("g").attr("fill-opacity",y).selectAll().data(v).enter().append("rect").attr("x",b).attr("y",a).attr("width",Math.max(0,b.bandwidth()-1)).attr("height",i-a-f).attr("fill",E),S=()=>{};return g.append("g").attr("transform",`translate(0,${i-f})`).call(B0(b).ticks(Array.isArray(m)?null:m,typeof l=="string"?l:void 0).tickFormat(typeof l=="function"?l:void 0).tickSize(n).tickValues(Array.isArray(m)?m:null)).attr("font-size",null).attr("font-family",null).attr("font-variant",yt(p,"normal")).call(S).call(F=>F.select(".domain").remove()),r!==void 0&&g.append("text").attr("x",u).attr("y",a-6).attr("fill","currentColor").attr("font-weight","bold").text(r),g.node()}var lb=Math.PI/180;function $u(e,{marker:t,markerStart:r=t,markerMid:n=t,markerEnd:o=t}={}){e.markerStart=pb(r),e.markerMid=pb(n),e.markerEnd=pb(o)}function pb(e){if(e==null||e===!1)return null;if(e===!0)return mM;if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"none":return null;case"arrow":return pM("auto");case"arrow-reverse":return pM("auto-start-reverse");case"dot":return JN;case"circle":case"circle-fill":return mM;case"circle-stroke":return eF;case"tick":return mb("auto");case"tick-x":return mb(90);case"tick-y":return mb(0)}throw new Error(`invalid marker: ${e}`)}function pM(e){return(t,r)=>Ve("svg:marker",r).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("orient",e).attr("fill","none").attr("stroke",t).attr("stroke-width",1.5).attr("stroke-linecap","round").attr("stroke-linejoin","round").call(n=>n.append("path").attr("d","M-1.5,-3l3,3l-3,3")).node()}function JN(e,t){return Ve("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","none").call(r=>r.append("circle").attr("r",2.5)).node()}function mM(e,t){return Ve("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","var(--plot-background)").attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function eF(e,t){return Ve("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill","var(--plot-background)").attr("stroke",e).attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function mb(e){return(t,r)=>Ve("svg:marker",r).attr("viewBox","-3 -3 6 6").attr("markerWidth",6).attr("markerHeight",6).attr("orient",e).attr("stroke",t).call(n=>n.append("path").attr("d","M0,-3v6")).node()}var tF=0;function hb(e,t,{stroke:r},n){return yM(e,t,r&&(o=>r[o]),null,n)}function dM(e,t,{stroke:r,z:n},o){return yM(e,t,r&&(([i])=>r[i]),n,o)}var db=1,hM=2;function rF(e,t){let r=new Uint8Array(t.length),n=e.data().filter(i=>i.length>1),o=n.length;for(let i=0,a=Ed;i1){let f=s[0];a!==(a=dn(t[f]))&&(r[f]|=db)}}for(let i=o-1,a=Ed;i>=0;--i){let s=n[i];if(s.length>1){let f=s[0];a!==(a=dn(t[f]))&&(r[f]|=hM)}}return([i])=>r[i]}function yM(e,{markerStart:t,markerMid:r,markerEnd:n,stroke:o},i=()=>o,a,s){if(!t&&!r&&!n)return;let f=new Map,u=a&&rF(e,a);function c(m,l,p){return function(d){if(p&&!p(d))return;let y=i(d),x=f.get(l);x||f.set(l,x=new Map);let w=x.get(y);if(!w){let g=this.parentNode.insertBefore(l(y,s),this),S=`plot-marker-${++tF}`;g.setAttribute("id",S),x.set(y,w=`url(#${S})`)}this.setAttribute(m,w)}}t&&e.each(c("marker-start",t,u&&(m=>u(m)&db))),r&&u&&e.each(c("marker-start",r,m=>!(u(m)&db))),r&&e.each(c("marker-mid",r)),n&&e.each(c("marker-end",n,u&&(m=>u(m)&hM)))}function Dd({inset:e,insetLeft:t,insetRight:r,...n}={}){return[t,r]=xM(e,t,r),{inset:e,insetLeft:t,insetRight:r,...n}}function yb({inset:e,insetTop:t,insetBottom:r,...n}={}){return[t,r]=xM(e,t,r),{inset:e,insetTop:t,insetBottom:r,...n}}function xM(e,t,r){return e===void 0&&t===void 0&&r===void 0?Zt?[1,0]:[.5,.5]:[t,r]}function gM(e,{interval:t}){return e={...Hi(e)},e.interval=Sd(e.interval===void 0?t:e.interval),e}function xb(e,t,r,n){let{[e]:o,[`${e}1`]:i,[`${e}2`]:a}=r,{value:s,interval:f}=gM(o,r);if(s==null||f==null&&!n)return r;let u=Ki(o);if(f==null){let p,d={transform:y=>p||(p=Vt(y,s)),label:u};return{...r,[e]:void 0,[`${e}1`]:i===void 0?d:i,[`${e}2`]:a===void 0&&!(i===a&&n)?d:a}}let c,m;function l(p){return m!==void 0&&p===c?m:m=We(Vt(c=p,s),d=>f.floor(d))}return t({...r,[e]:void 0,[`${e}1`]:i===void 0?{transform:l,label:u}:i,[`${e}2`]:a===void 0?{transform:p=>l(p).map(d=>f.offset(d)),label:u}:a})}function bM(e,t,r){let{[e]:n}=r,{value:o,interval:i}=gM(n,r);return o==null||i==null?r:t({...r,[e]:{label:Ki(n),transform:a=>{let s=We(Vt(a,o),u=>i.floor(u)),f=s.map(u=>i.offset(u));return s.map(Dt(s)?(u,c)=>u==null||isNaN(u=+u)||(c=f[c],c==null)||isNaN(c=+c)?void 0:new Date((u+c)/2):(u,c)=>u==null||(c=f[c],c==null)?NaN:(+u+ +c)/2)}}})}function wM(e={}){return xb("x",Dd,e,!0)}function SM(e={}){return xb("x",Dd,e)}function IM(e={}){return xb("y",yb,e)}function _M(e={}){return bM("x",Dd,e)}function vM(e={}){return bM("y",yb,e)}var TM={ariaLabel:"rule",fill:null,stroke:"currentColor"},Vd=class extends ot{constructor(t,r={}){let{x:n,y1:o,y2:i,inset:a=0,insetTop:s=a,insetBottom:f=a}=r;super(t,{x:{value:n,scale:"x",optional:!0},y1:{value:o,scale:"y",optional:!0},y2:{value:i,scale:"y",optional:!0}},Eu(r,"x"),TM),this.insetTop=St(s),this.insetBottom=St(f),$u(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:f,y1:u,y2:c}=n,{width:m,height:l,marginTop:p,marginRight:d,marginLeft:y,marginBottom:x}=o,{insetTop:w,insetBottom:g}=this;return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,{x:f&&a},Zt,0).call(S=>S.selectAll().data(t).enter().append("line").call(Bt,this).attr("x1",f?b=>f[b]:(y+m-d)/2).attr("x2",f?b=>f[b]:(y+m-d)/2).attr("y1",u&&!Wi(s)?b=>u[b]+w:p+w).attr("y2",c&&!Wi(s)?s.bandwidth?b=>c[b]+s.bandwidth()-g:b=>c[b]-g:l-x-g).call(Ar,this,n).call(hb,this,n,i)).node()}},Ud=class extends ot{constructor(t,r={}){let{x1:n,x2:o,y:i,inset:a=0,insetRight:s=a,insetLeft:f=a}=r;super(t,{y:{value:i,scale:"y",optional:!0},x1:{value:n,scale:"x",optional:!0},x2:{value:o,scale:"x",optional:!0}},Eu(r,"y"),TM),this.insetRight=St(s),this.insetLeft=St(f),$u(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{y:f,x1:u,x2:c}=n,{width:m,height:l,marginTop:p,marginRight:d,marginLeft:y,marginBottom:x}=o,{insetLeft:w,insetRight:g}=this;return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,{y:f&&s},0,Zt).call(S=>S.selectAll().data(t).enter().append("line").call(Bt,this).attr("x1",u&&!Wi(a)?b=>u[b]+w:y+w).attr("x2",c&&!Wi(a)?a.bandwidth?b=>c[b]+a.bandwidth()-g:b=>c[b]-g:m-d-g).attr("y1",f?b=>f[b]:(p+l-x)/2).attr("y2",f?b=>f[b]:(p+l-x)/2).call(Ar,this,n).call(hb,this,n,i)).node()}};function gb(e,t){let{x:r=dt,y:n,y1:o,y2:i,...a}=IM(t);return[o,i]=MM(n,o,i),new Vd(e,{...a,x:r,y1:o,y2:i})}function li(e,t){let{y:r=dt,x:n,x1:o,x2:i,...a}=SM(t);return[o,i]=MM(n,o,i),new Ud(e,{...a,y:r,x1:o,x2:i})}function MM(e,t,r){if(e==null){if(t===void 0){if(r!==void 0)return[0,r]}else if(r===void 0)return[0,t]}else{if(t===void 0)return r===void 0?[0,e]:[e,r];if(r===void 0)return[e,t]}return[t,r]}function Of(e,...t){let r=t.length;for(let n=0,o=!0;n{let o=e[0];for(let i=0;i=0))throw new Error(`invalid lineWidth: ${c}`);this.splitLines=_b(this),this.clipLine=vb(this)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:f,y:u,rotate:c,text:m,title:l,fontSize:p}=n,{rotate:d}=this,[y,x]=_o(this,o);return Ve("svg:g",i).call(Qt,this,o,i).call(Ib,this,m,o).call(Jt,this,{x:f&&a,y:u&&s}).call(w=>w.selectAll().data(t).enter().append("text").call(Bt,this).call(oF,this,m,l).attr("transform",Of`translate(${f?g=>f[g]:y},${u?g=>u[g]:x})${c?g=>` rotate(${c[g]})`:d?` rotate(${d})`:""}`).call(pe,"font-size",p&&(g=>p[g])).call(Ar,this,n)).node()}};function wb(e){return e==null?null:yr(e,"textOverflow",["clip","ellipsis","clip-start","clip-end","ellipsis-start","ellipsis-middle","ellipsis-end"]).replace(/^(clip|ellipsis)$/,"$1-end")}function oF(e,t,r,n){if(!r)return;let{lineAnchor:o,lineHeight:i,textOverflow:a,splitLines:s,clipLine:f}=t;e.each(function(u){let c=s(Io(r[u])??"").map(f),m=c.length,l=o==="top"?.71:o==="bottom"?1-m:(164-m*100)/200;if(m>1){let p=0;for(let d=0;do&&r(e,o,s)>t&&(n.push(e.slice(o,i)+(e[i-1]===PM?"-":"")),o=a),f){n.push(e.slice(o,s)),o=void 0;continue}i=s}return n}function*cF(e){let t=0,r=0,n=e.length;for(;rk.selectAll(".tick line").attr("y1",a+c-i),x,I=h?(k,z)=>k.rangeRound(z):(k,z)=>k.range(z),{type:S,domain:v,range:T,interpolate:O,scale:R,pivot:C}=e;if(O){let k=T===void 0?O:wo(O.length===1?ll(O):O,T);x=I(R.copy(),pr(st(u,o-s),Math.min(v.length+(C!==void 0),T===void 0?1/0:T.length)));let z=256,j=w.document.createElement("canvas");j.width=z,j.height=1;let M=j.getContext("2d");for(let U=0,L=z-1;Uj:typeof l=="string"?gn(l):l;x=I(ts().domain([-1,T.length-1]),[u,o-s]),g.append("g").attr("fill-opacity",y).selectAll().data(T).enter().append("rect").attr("x",(j,M)=>x(M-1)).attr("y",a).attr("width",(j,M)=>x(M)-x(M-1)).attr("height",i-a-c).attr("fill",j=>j),m=et(k,(j,M)=>M),l=j=>z(k[j],j)}else x=I(na().domain(v),[u,o-s]),g.append("g").attr("fill-opacity",y).selectAll().data(v).enter().append("rect").attr("x",x).attr("y",a).attr("width",Math.max(0,x.bandwidth()-1)).attr("height",i-a-c).attr("fill",R),_=()=>{};return g.append("g").attr("transform",`translate(0,${i-c})`).call(Fy(x).ticks(Array.isArray(m)?null:m,typeof l=="string"?l:void 0).tickFormat(typeof l=="function"?l:void 0).tickSize(n).tickValues(Array.isArray(m)?m:null)).attr("font-size",null).attr("font-family",null).attr("font-variant",_t(p,"normal")).call(_).call(k=>k.select(".domain").remove()),r!==void 0&&g.append("text").attr("x",u).attr("y",a-6).attr("fill","currentColor").attr("font-weight","bold").text(r),g.node()}var o1=Math.PI/180;function hl(e,{marker:t,markerStart:r=t,markerMid:n=t,markerEnd:o=t}={}){e.markerStart=i1(r),e.markerMid=i1(n),e.markerEnd=i1(o)}function i1(e){if(e==null||e===!1)return null;if(e===!0)return xM;if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"none":return null;case"arrow":return gM("auto");case"arrow-reverse":return gM("auto-start-reverse");case"dot":return f9;case"circle":case"circle-fill":return xM;case"circle-stroke":return u9;case"tick":return a1("auto");case"tick-x":return a1(90);case"tick-y":return a1(0)}throw new Error(`invalid marker: ${e}`)}function gM(e){return(t,r)=>ze("svg:marker",r).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("orient",e).attr("fill","none").attr("stroke",t).attr("stroke-width",1.5).attr("stroke-linecap","round").attr("stroke-linejoin","round").call(n=>n.append("path").attr("d","M-1.5,-3l3,3l-3,3")).node()}function f9(e,t){return ze("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","none").call(r=>r.append("circle").attr("r",2.5)).node()}function xM(e,t){return ze("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill",e).attr("stroke","var(--plot-background)").attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function u9(e,t){return ze("svg:marker",t).attr("viewBox","-5 -5 10 10").attr("markerWidth",6.67).attr("markerHeight",6.67).attr("fill","var(--plot-background)").attr("stroke",e).attr("stroke-width",1.5).call(r=>r.append("circle").attr("r",3)).node()}function a1(e){return(t,r)=>ze("svg:marker",r).attr("viewBox","-3 -3 6 6").attr("markerWidth",6).attr("markerHeight",6).attr("orient",e).attr("stroke",t).call(n=>n.append("path").attr("d","M0,-3v6")).node()}var l9=0;function c1(e,t,{stroke:r},n){return IM(e,t,r&&(o=>r[o]),null,n)}function wM(e,t,{stroke:r,z:n},o){return IM(e,t,r&&(([i])=>r[i]),n,o)}var s1=1,SM=2;function p9(e,t){let r=new Uint8Array(t.length),n=e.data().filter(i=>i.length>1),o=n.length;for(let i=0,a=yh;i1){let c=s[0];a!==(a=Pn(t[c]))&&(r[c]|=s1)}}for(let i=o-1,a=yh;i>=0;--i){let s=n[i];if(s.length>1){let c=s[0];a!==(a=Pn(t[c]))&&(r[c]|=SM)}}return([i])=>r[i]}function IM(e,{markerStart:t,markerMid:r,markerEnd:n,stroke:o},i=()=>o,a,s){if(!t&&!r&&!n)return;let c=new Map,u=a&&p9(e,a);function f(m,l,p){return function(h){if(p&&!p(h))return;let y=i(h),b=c.get(l);b||c.set(l,b=new Map);let w=b.get(y);if(!w){let g=this.parentNode.insertBefore(l(y,s),this),_=`plot-marker-${++l9}`;g.setAttribute("id",_),b.set(y,w=`url(#${_})`)}this.setAttribute(m,w)}}t&&e.each(f("marker-start",t,u&&(m=>u(m)&s1))),r&&u&&e.each(f("marker-start",r,m=>!(u(m)&s1))),r&&e.each(f("marker-mid",r)),n&&e.each(f("marker-end",n,u&&(m=>u(m)&SM)))}function xh({inset:e,insetLeft:t,insetRight:r,...n}={}){return[t,r]=_M(e,t,r),{inset:e,insetLeft:t,insetRight:r,...n}}function f1({inset:e,insetTop:t,insetBottom:r,...n}={}){return[t,r]=_M(e,t,r),{inset:e,insetTop:t,insetBottom:r,...n}}function _M(e,t,r){return e===void 0&&t===void 0&&r===void 0?or?[1,0]:[.5,.5]:[t,r]}function vM(e,{interval:t}){return e={...ha(e)},e.interval=rh(e.interval===void 0?t:e.interval),e}function u1(e,t,r,n){let{[e]:o,[`${e}1`]:i,[`${e}2`]:a}=r,{value:s,interval:c}=vM(o,r);if(s==null||c==null&&!n)return r;let u=ma(o);if(c==null){let p,h={transform:y=>p||(p=qt(y,s)),label:u};return{...r,[e]:void 0,[`${e}1`]:i===void 0?h:i,[`${e}2`]:a===void 0&&!(i===a&&n)?h:a}}let f,m;function l(p){return m!==void 0&&p===f?m:m=et(qt(f=p,s),h=>c.floor(h))}return t({...r,[e]:void 0,[`${e}1`]:i===void 0?{transform:l,label:u}:i,[`${e}2`]:a===void 0?{transform:p=>l(p).map(h=>c.offset(h)),label:u}:a})}function PM(e,t,r){let{[e]:n}=r,{value:o,interval:i}=vM(n,r);return o==null||i==null?r:t({...r,[e]:{label:ma(n),transform:a=>{let s=et(qt(a,o),u=>i.floor(u)),c=s.map(u=>i.offset(u));return s.map(Kt(s)?(u,f)=>u==null||isNaN(u=+u)||(f=c[f],f==null)||isNaN(f=+f)?void 0:new Date((u+f)/2):(u,f)=>u==null||(f=c[f],f==null)?NaN:(+u+ +f)/2)}}})}function TM(e={}){return u1("x",xh,e,!0)}function MM(e={}){return u1("x",xh,e)}function OM(e={}){return u1("y",f1,e)}function CM(e={}){return PM("x",xh,e)}function kM(e={}){return PM("y",f1,e)}var RM={ariaLabel:"rule",fill:null,stroke:"currentColor"},wh=class extends lt{constructor(t,r={}){let{x:n,y1:o,y2:i,inset:a=0,insetTop:s=a,insetBottom:c=a}=r;super(t,{x:{value:n,scale:"x",optional:!0},y1:{value:o,scale:"y",optional:!0},y2:{value:i,scale:"y",optional:!0}},dl(r,"x"),RM),this.insetTop=Ot(s),this.insetBottom=Ot(c),hl(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y1:u,y2:f}=n,{width:m,height:l,marginTop:p,marginRight:h,marginLeft:y,marginBottom:b}=o,{insetTop:w,insetBottom:g}=this;return ze("svg:g",i).call(ir,this,o,i).call(ar,this,{x:c&&a},or,0).call(_=>_.selectAll().data(t).enter().append("line").call(Wt,this).attr("x1",c?x=>c[x]:(y+m-h)/2).attr("x2",c?x=>c[x]:(y+m-h)/2).attr("y1",u&&!ba(s)?x=>u[x]+w:p+w).attr("y2",f&&!ba(s)?s.bandwidth?x=>f[x]+s.bandwidth()-g:x=>f[x]-g:l-b-g).call(Vr,this,n).call(c1,this,n,i)).node()}},Sh=class extends lt{constructor(t,r={}){let{x1:n,x2:o,y:i,inset:a=0,insetRight:s=a,insetLeft:c=a}=r;super(t,{y:{value:i,scale:"y",optional:!0},x1:{value:n,scale:"x",optional:!0},x2:{value:o,scale:"x",optional:!0}},dl(r,"y"),RM),this.insetRight=Ot(s),this.insetLeft=Ot(c),hl(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{y:c,x1:u,x2:f}=n,{width:m,height:l,marginTop:p,marginRight:h,marginLeft:y,marginBottom:b}=o,{insetLeft:w,insetRight:g}=this;return ze("svg:g",i).call(ir,this,o,i).call(ar,this,{y:c&&s},0,or).call(_=>_.selectAll().data(t).enter().append("line").call(Wt,this).attr("x1",u&&!ba(a)?x=>u[x]+w:y+w).attr("x2",f&&!ba(a)?a.bandwidth?x=>f[x]+a.bandwidth()-g:x=>f[x]-g:m-h-g).attr("y1",c?x=>c[x]:(p+l-b)/2).attr("y2",c?x=>c[x]:(p+l-b)/2).call(Vr,this,n).call(c1,this,n,i)).node()}};function yl(e,t){let{x:r=St,y:n,y1:o,y2:i,...a}=OM(t);return[o,i]=NM(n,o,i),new wh(e,{...a,x:r,y1:o,y2:i})}function Qn(e,t){let{y:r=St,x:n,x1:o,x2:i,...a}=MM(t);return[o,i]=NM(n,o,i),new Sh(e,{...a,y:r,x1:o,x2:i})}function NM(e,t,r){if(e==null){if(t===void 0){if(r!==void 0)return[0,r]}else if(r===void 0)return[0,t]}else{if(t===void 0)return r===void 0?[0,e]:[e,r];if(r===void 0)return[e,t]}return[t,r]}function Qc(e,...t){let r=t.length;for(let n=0,o=!0;n{let o=e[0];for(let i=0;i=0))throw new Error(`invalid lineWidth: ${f}`);this.splitLines=y1(this),this.clipLine=b1(this)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y:u,rotate:f,text:m,title:l,fontSize:p}=n,{rotate:h}=this,[y,b]=Vo(this,o);return ze("svg:g",i).call(ir,this,o,i).call(h1,this,m,o).call(ar,this,{x:c&&a,y:u&&s}).call(w=>w.selectAll().data(t).enter().append("text").call(Wt,this).call(d9,this,m,l).attr("transform",Qc`translate(${c?g=>c[g]:y},${u?g=>u[g]:b})${f?g=>` rotate(${f[g]})`:h?` rotate(${h})`:""}`).call(de,"font-size",p&&(g=>p[g])).call(Vr,this,n)).node()}};function p1(e){return e==null?null:Pr(e,"textOverflow",["clip","ellipsis","clip-start","clip-end","ellipsis-start","ellipsis-middle","ellipsis-end"]).replace(/^(clip|ellipsis)$/,"$1-end")}function d9(e,t,r,n){if(!r)return;let{lineAnchor:o,lineHeight:i,textOverflow:a,splitLines:s,clipLine:c}=t;e.each(function(u){let f=s(Lo(r[u])??"").map(c),m=f.length,l=o==="top"?.71:o==="bottom"?1-m:(164-m*100)/200;if(m>1){let p=0;for(let h=0;ho&&r(e,o,s)>t&&(n.push(e.slice(o,i)+(e[i-1]===DM?"-":"")),o=a),c){n.push(e.slice(o,s)),o=void 0;continue}i=s}return n}function*x9(e){let t=0,r=0,n=e.length;for(;ri.split(/\r\n?|\n/g);let n=e?Bd:jd,o=t*100;return i=>fF(i,o,n)}function vb({monospace:e,lineWidth:t,textOverflow:r}){if(r==null||t==1/0)return i=>i;let n=e?Bd:jd,o=t*100;switch(r){case"clip-start":return i=>CM(i,o,n,"");case"clip-end":return i=>RM(i,o,n,"");case"ellipsis-start":return i=>CM(i,o,n,Wa);case"ellipsis-middle":return i=>uF(i,o,n,Wa);case"ellipsis-end":return i=>RM(i,o,n,Wa)}}var Wa="\u2026";function Xa(e,t,r,n){let o=[],i=0;for(let a=0,s=0,f=e.length;at){for(i+=n;i>t&&a>0;)s=a,a=o.pop(),i-=r(e,a,s);return[a,t-i]}i+=u,o.push(a)}return[-1,0]}function RM(e,t,r,n){e=e.trim();let o=r(n),[i]=Xa(e,t,r,o);return i<0?e:e.slice(0,i).trimEnd()+n}function uF(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n)/2,[a,s]=Xa(e,t/2,r,i),[f]=Xa(e,o-t/2-s+i,r,-i);return f<0?n:e.slice(0,a).trimEnd()+n+e.slice(Rf(e,f)).trimStart()}function CM(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n),[a]=Xa(e,o-t+i,r,-i);return a<0?n:n+e.slice(Rf(e,a)).trimStart()}var bb=/[\p{Combining_Mark}\p{Emoji_Modifier}]+/uy,AM=/\p{Extended_Pictographic}/uy;function Rf(e,t){return t+=lF(e,t)?2:1,mF(e,t)&&(t=bb.lastIndex),pF(e,t)?Rf(e,t+1):t}function FM(e,t){return e.charCodeAt(t)<128}function lF(e,t){let r=e.charCodeAt(t);if(r>=55296&&r<56320){let n=e.charCodeAt(t+1);return n>=56320&&n<57344}return!1}function pF(e,t){return e.charCodeAt(t)===8205}function mF(e,t){return FM(e,t)?!1:(bb.lastIndex=t,bb.test(e))}function EM(e,t){return FM(e,t)?!1:(AM.lastIndex=t,AM.test(e))}var dF={ariaLabel:"vector",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"},$M=3.5,hF=$M*5,LM={draw(e,t,r){let n=t*r/hF;e.moveTo(0,0),e.lineTo(0,-t),e.moveTo(-n,n-t),e.lineTo(0,-t),e.lineTo(n,n-t)}},yF={draw(e,t,r){e.moveTo(-r,0),e.lineTo(0,-t),e.lineTo(r,0)}},xF=new Map([["arrow",LM],["spike",yF]]);function gF(e){return e&&typeof e.draw=="function"}function bF(e){if(gF(e))return e;let t=xF.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid shape: ${e}`)}var Gd=class extends ot{constructor(t,r={}){let{x:n,y:o,r:i=$M,length:a,rotate:s,shape:f=LM,anchor:u="middle",frameAnchor:c}=r,[m,l]=ht(a,12),[p,d]=ht(s,0);super(t,{x:{value:n,scale:"x",optional:!0},y:{value:o,scale:"y",optional:!0},length:{value:m,scale:"length",optional:!0},rotate:{value:p,optional:!0}},r,dF),this.r=+i,this.length=l,this.rotate=d,this.shape=bF(f),this.anchor=yr(u,"anchor",["start","middle","end"]),this.frameAnchor=Yi(c)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:f,y:u,length:c,rotate:m}=n,{length:l,rotate:p,anchor:d,shape:y,r:x}=this,[w,g]=_o(this,o);return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,{x:f&&a,y:u&&s}).call(S=>S.selectAll().data(t).enter().append("path").call(Bt,this).attr("transform",Of`translate(${f?b=>f[b]:w},${u?b=>u[b]:g})${m?b=>` rotate(${m[b]})`:p?` rotate(${p})`:""}${d==="start"?"":d==="end"?c?b=>` translate(0,${c[b]})`:` translate(0,${l})`:c?b=>` translate(0,${c[b]/2})`:` translate(0,${l/2})`}`).attr("d",c?b=>{let T=En();return y.draw(T,c[b],x),T}:(()=>{let b=En();return y.draw(b,l,x),b})()).call(Ar,this,n)).node()}};function DM(e,t={}){let{x:r=dt,...n}=t;return new Gd(e,{...n,x:r})}function VM(e,t={}){let{y:r=dt,...n}=t;return new Gd(e,{...n,y:r})}function Zi(e,t){return arguments.length<2&&!hn(e)&&(t=e,e=null),t===void 0&&(t={}),[e,t]}function zd({anchor:e}={},t){return e===void 0?t[0]:yr(e,"anchor",t)}function UM(e){return zd(e,["left","right"])}function jM(e){return zd(e,["right","left"])}function BM(e){return zd(e,["bottom","top"])}function GM(e){return zd(e,["top","bottom"])}function Mb(){let[e,t]=Zi(...arguments);return qM("y",UM(t),e,t)}function zM(){let[e,t]=Zi(...arguments);return qM("fy",jM(t),e,t)}function Ob(){let[e,t]=Zi(...arguments);return HM("x",BM(t),e,t)}function KM(){let[e,t]=Zi(...arguments);return HM("fx",GM(t),e,t)}function qM(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:f=n,fillOpacity:u=o,textAnchor:c,textStroke:m,textStrokeOpacity:l,textStrokeWidth:p,tickSize:d=e==="y"?6:0,tickPadding:y,tickRotate:x,x:w,margin:g,marginTop:S=g===void 0?20:g,marginRight:b=g===void 0?t==="right"?40:0:g,marginBottom:T=g===void 0?20:g,marginLeft:I=g===void 0?t==="left"?40:0:g,label:v,labelAnchor:O,labelArrow:C,labelOffset:E,ariaLabel:A=`${e}-axis`,...F}){return d=St(d),y=St(y),x=St(x),O!==void 0&&(O=yr(O,"labelAnchor",["center","top","bottom"])),C=i8(C),ib(d&&!Ut(i)?wF(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:d,tickPadding:y,tickRotate:x,x:w,ariaLabel:A,...F}):null,Ut(f)?null:IF(e,t,r,{fill:f,fillOpacity:u,stroke:m,strokeOpacity:l,strokeWidth:p,textAnchor:c,tickSize:d,tickPadding:y,tickRotate:x,x:w,marginTop:S,marginRight:b,marginBottom:T,marginLeft:I,ariaLabel:A,...F}),!Ut(f)&&v!==null?Sb([],t8({fill:f,fillOpacity:u,...F},function(H,j,M,U,D){let oe=U[e],{marginTop:V,marginRight:K,marginBottom:Y,marginLeft:Z}=e==="y"&&D.inset||D,J=O??(oe.bandwidth?"center":"top"),ye=E??(t==="right"?K:Z)-3;return J==="center"?(this.textAnchor=void 0,this.lineAnchor=t==="right"?"bottom":"top",this.frameAnchor=t,this.rotate=-90):(this.textAnchor=t==="right"?"end":"start",this.lineAnchor=J,this.frameAnchor=`${J}-${t}`,this.rotate=0),this.dy=J==="top"?3-V:J==="bottom"?Y-3:0,this.dx=t==="right"?ye:-ye,this.ariaLabel=`${A} label`,{facets:[[0]],channels:{text:{value:[o8(e,oe,{anchor:t,label:v,labelAnchor:J,labelArrow:C})]}}}})):null)}function HM(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:f=n,fillOpacity:u=o,textAnchor:c,textStroke:m,textStrokeOpacity:l,textStrokeWidth:p,tickSize:d=e==="x"?6:0,tickPadding:y,tickRotate:x,y:w,margin:g,marginTop:S=g===void 0?t==="top"?30:0:g,marginRight:b=g===void 0?20:g,marginBottom:T=g===void 0?t==="bottom"?30:0:g,marginLeft:I=g===void 0?20:g,label:v,labelAnchor:O,labelArrow:C,labelOffset:E,ariaLabel:A=`${e}-axis`,...F}){return d=St(d),y=St(y),x=St(x),O!==void 0&&(O=yr(O,"labelAnchor",["center","left","right"])),C=i8(C),ib(d&&!Ut(i)?SF(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:d,tickPadding:y,tickRotate:x,y:w,ariaLabel:A,...F}):null,Ut(f)?null:_F(e,t,r,{fill:f,fillOpacity:u,stroke:m,strokeOpacity:l,strokeWidth:p,textAnchor:c,tickSize:d,tickPadding:y,tickRotate:x,y:w,marginTop:S,marginRight:b,marginBottom:T,marginLeft:I,ariaLabel:A,...F}),!Ut(f)&&v!==null?Sb([],t8({fill:f,fillOpacity:u,...F},function(H,j,M,U,D){let oe=U[e],{marginTop:V,marginRight:K,marginBottom:Y,marginLeft:Z}=e==="x"&&D.inset||D,J=O??(oe.bandwidth?"center":"right"),ye=E??(t==="top"?V:Y)-3;return J==="center"?(this.frameAnchor=t,this.textAnchor=void 0):(this.frameAnchor=`${t}-${J}`,this.textAnchor=J==="right"?"end":"start"),this.lineAnchor=t,this.dy=t==="top"?-ye:ye,this.dx=J==="right"?K-3:J==="left"?3-Z:0,this.ariaLabel=`${A} label`,{facets:[[0]],channels:{text:{value:[o8(e,oe,{anchor:t,label:v,labelAnchor:J,labelArrow:C})]}}}})):null)}function wF(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="y"?"-empty":""),frameAnchor:s=t,tickSize:f,inset:u=0,insetLeft:c=u,insetRight:m=u,dx:l=0,y:p=e==="y"?void 0:null,ariaLabel:d,...y}){return Cf(VM,e,r,{ariaLabel:`${d} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinecap:o,strokeLinejoin:i,facetAnchor:a,frameAnchor:s,y:p,...y,dx:t==="left"?+l-Zt+ +c:+l+Zt-m,anchor:"start",length:f,shape:t==="left"?OF:RF})}function SF(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="x"?"-empty":""),frameAnchor:s=t,tickSize:f,inset:u=0,insetTop:c=u,insetBottom:m=u,dy:l=0,x:p=e==="x"?void 0:null,ariaLabel:d,...y}){return Cf(DM,e,r,{ariaLabel:`${d} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinejoin:i,strokeLinecap:o,facetAnchor:a,frameAnchor:s,x:p,...y,dy:t==="bottom"?+l-Zt-m:+l+Zt+ +c,anchor:"start",length:f,shape:t==="bottom"?TF:MF})}function IF(e,t,r,{facetAnchor:n=t+(e==="y"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>60?4*Math.cos(a*lb):0),text:f,textAnchor:u=Math.abs(a)>60?"middle":t==="left"?"end":"start",lineAnchor:c=a>60?"top":a<-60?"bottom":"middle",fontVariant:m,inset:l=0,insetLeft:p=l,insetRight:d=l,dx:y=0,ariaLabel:x,y:w=e==="y"?void 0:null,...g}){return Cf(NM,e,r,{ariaLabel:`${x} tick label`},{facetAnchor:n,frameAnchor:o,text:f,textAnchor:u,lineAnchor:c,fontVariant:m,rotate:a,y:w,...g,dx:t==="left"?+y-i-s+ +p:+y+ +i+ +s-d},function(S,b,T,I,v){m===void 0&&(this.fontVariant=n8(S)),f===void 0&&(v.text=r8(S,b,T,I,t))})}function _F(e,t,r,{facetAnchor:n=t+(e==="x"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>=10?4*Math.cos(a*lb):0),text:f,textAnchor:u=Math.abs(a)>=10?a<0^t==="bottom"?"start":"end":"middle",lineAnchor:c=Math.abs(a)>=10?"middle":t==="bottom"?"top":"bottom",fontVariant:m,inset:l=0,insetTop:p=l,insetBottom:d=l,dy:y=0,x=e==="x"?void 0:null,ariaLabel:w,...g}){return Cf(kM,e,r,{ariaLabel:`${w} tick label`},{facetAnchor:n,frameAnchor:o,text:f===void 0?null:f,textAnchor:u,lineAnchor:c,fontVariant:m,rotate:a,x,...g,dy:t==="bottom"?+y+ +i+ +s-d:+y-i-s+ +p},function(S,b,T,I,v){m===void 0&&(this.fontVariant=n8(S)),f===void 0&&(v.text=r8(S,b,T,I,t))})}function YM(){let[e,t]=Zi(...arguments);return QM("y",UM(t),e,t)}function WM(){let[e,t]=Zi(...arguments);return QM("fy",jM(t),e,t)}function XM(){let[e,t]=Zi(...arguments);return JM("x",BM(t),e,t)}function ZM(){let[e,t]=Zi(...arguments);return JM("fx",GM(t),e,t)}function QM(e,t,r,{y:n=e==="y"?void 0:null,x:o=null,x1:i=t==="left"?o:null,x2:a=t==="right"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:f=!0,...u}){return Cf(li,e,r,{ariaLabel:s,ariaHidden:f},{y:n,x1:i,x2:a,...e8(u)})}function JM(e,t,r,{x:n=e==="x"?void 0:null,y:o=null,y1:i=t==="top"?o:null,y2:a=t==="bottom"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:f=!0,...u}){return Cf(gb,e,r,{ariaLabel:s,ariaHidden:f},{x:n,y1:i,y2:a,...e8(u)})}function e8({color:e="currentColor",opacity:t=.1,stroke:r=e,strokeOpacity:n=t,strokeWidth:o=1,...i}){return{stroke:r,strokeOpacity:n,strokeWidth:o,...i}}function t8({fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:f,shapeRendering:u,clip:c=!1},m){return[,e]=go(e),[,t]=ht(t),{facet:"super",x:null,y:null,fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:f,shapeRendering:u,clip:c,initializer:m}}function Cf(e,t,r,n,o,i){let a;function s(c,m,l,p,d,y){let x=c==null&&(t==="fx"||t==="fy"),{[t]:w}=p;if(!w)throw new Error(`missing scale: ${t}`);let g=w.domain(),{interval:S,ticks:b,tickFormat:T,tickSpacing:I=t==="x"?80:35}=o;if(typeof b=="string"&&a8(w)&&(S=b,b=void 0),b===void 0&&(b=qi(S,w.type)??vF(w,I)),c==null){if(hn(b))c=bo(b);else if(v6(b))c=Tb(b,...Tr(g));else if(w.interval){let O=w.interval;if(w.ticks){let[C,E]=Tr(g),A=(E-C)/O[lf];O=gg(O,A/b)??O,c=Tb(O,C,E)}else{c=g;let C=c.length;O=gg(O,C/b)??O,O!==w.interval&&(c=Tb(O,...Tr(c)))}if(O===w.interval){let C=Math.round(c.length/b);C>1&&(c=c.filter((E,A)=>A%C===0))}}else w.ticks?c=w.ticks(b):c=g;if(!w.ticks&&c.length&&c!==g){let O=new Pn(g);c=c.filter(C=>O.has(C)),c.length||Cr(`Warning: the ${t}-axis ticks appear to not align with the scale domain, resulting in no ticks. Try different ticks?`)}t==="y"||t==="x"?m=[Rr(c)]:a[t]={scale:t,value:dt}}i?.call(this,w,c,b,T,a);let v=Object.fromEntries(Object.entries(a).map(([O,C])=>[O,{...C,value:Vt(c,C.value)}]));return x&&(m=y.filterFacets(c,v)),{data:c,facets:m,channels:v}}let f=ai(o).initializer,u=e(r,ai({...o,initializer:s},f));return r==null?(a=u.channels,u.channels={}):a={},n!==void 0&&Object.assign(u,n),u.clip===void 0&&(u.clip=!1),u}function vF(e,t){let[r,n]=Tr(e.range());return(n-r)/t}function r8(e,t,r,n,o){return{value:Du(e,t,r,n,o)}}function Du(e,t,r,n,o){return typeof n=="function"&&!(e.type==="log"&&e.tickFormat)?n:n===void 0&&t&&Dt(t)?a6(e.type,t,o)??Io:e.tickFormat?e.tickFormat(typeof r=="number"?r:null,n):typeof n=="string"&&e.domain().length>0?(Dt(e.domain())?ho:sn)(n):n===void 0?Io:Gr(n)}function Tb(e,t,r){return e.range(t,e.offset(e.floor(r)))}var TF={draw(e,t){e.moveTo(0,0),e.lineTo(0,t)}},MF={draw(e,t){e.moveTo(0,0),e.lineTo(0,-t)}},OF={draw(e,t){e.moveTo(0,0),e.lineTo(-t,0)}},RF={draw(e,t){e.moveTo(0,0),e.lineTo(t,0)}};function n8(e){return e.bandwidth&&!e.interval?void 0:"tabular-nums"}function o8(e,t,{anchor:r,label:n=t.label,labelAnchor:o,labelArrow:i}={}){if(!(n==null||n.inferred&&a8(t)&&/^(date|time|year)$/i.test(n))){if(n=String(n),i==="auto"&&(i=(!t.bandwidth||t.interval)&&!/[↑↓→←]/.test(n)),!i)return n;if(i===!0){let a=$T(t);a&&(i=/x$/.test(e)||o==="center"?/x$/.test(e)===a<0?"left":"right":a<0?"up":"down")}switch(i){case"left":return`\u2190 ${n}`;case"right":return`${n} \u2192`;case"up":return r==="right"?`${n} \u2191`:`\u2191 ${n}`;case"down":return r==="right"?`${n} \u2193`:`\u2193 ${n}`}return n}}function i8(e="auto"){return Ut(e)?!1:typeof e=="boolean"?e:yr(e,"labelArrow",["auto","up","right","down","left"])}function a8(e){return Dt(e.domain())}function s8(e,t){if(t==null)return t;let r=e(t);if(!r)throw new Error(`scale not found: ${t}`);return r}function f8(e,{opacity:t,...r}={}){if(!So(e)&&!Zg(e))throw new Error(`swatches legend requires ordinal or threshold color scale (not ${e.type})`);return u8(e,r,(n,o,i,a)=>n.append("svg").attr("width",i).attr("height",a).attr("fill",o.scale).attr("fill-opacity",ht(t)[1]).append("rect").attr("width","100%").attr("height","100%"))}function c8(e,{fill:t=e.hint?.fill!==void 0?e.hint.fill:"none",fillOpacity:r=1,stroke:n=e.hint?.stroke!==void 0?e.hint.stroke:Ut(t)?"currentColor":"none",strokeOpacity:o=1,strokeWidth:i=1.5,r:a=4.5,...s}={},f){let[u,c]=go(t),[m,l]=go(n),p=s8(f,u),d=s8(f,m),y=a*a*Math.PI;return r=ht(r)[1],o=ht(o)[1],i=ht(i)[1],u8(e,s,(x,w,g,S)=>x.append("svg").attr("viewBox","-8 -8 16 16").attr("width",g).attr("height",S).attr("fill",u==="color"?b=>p.scale(b):c).attr("fill-opacity",r).attr("stroke",m==="color"?b=>d.scale(b):l).attr("stroke-opacity",o).attr("stroke-width",i).append("path").attr("d",b=>{let T=En();return e.scale(b).draw(T,y),T}))}function u8(e,t={},r){let{columns:n,tickFormat:o,fontVariant:i=Ld(e),swatchSize:a=15,swatchWidth:s=a,swatchHeight:f=a,marginLeft:u=0,className:c,style:m,width:l}=t,p=vf(t);c=Tf(c),o=Du(e.scale,e.domain,void 0,o);let d=Ve("div",p).attr("class",`${c}-swatches ${c}-swatches-${n!=null?"columns":"wrap"}`),y;return n!=null?(y=`:where(.${c}-swatches-columns .${c}-swatch) { +`:yield[t,r,!0],r+=o,t=r;break;default:++r;break}}yield[t,r,!0]}var AM={a:56,b:63,c:57,d:63,e:58,f:37,g:62,h:60,i:26,j:26,k:55,l:26,m:88,n:60,o:60,p:62,q:62,r:39,s:54,t:38,u:60,v:55,w:79,x:54,y:55,z:55,A:69,B:67,C:73,D:74,E:61,F:58,G:76,H:75,I:28,J:55,K:67,L:58,M:89,N:75,O:78,P:65,Q:78,R:67,S:65,T:65,U:75,V:69,W:98,X:69,Y:67,Z:67,0:64,1:48,2:62,3:64,4:66,5:63,6:65,7:58,8:65,9:65," ":29,"!":32,'"':49,"'":31,"(":39,")":39,",":31,"-":48,".":31,"/":32,":":31,";":31,"?":52,"\u2018":31,"\u2019":31,"\u201C":47,"\u201D":47,"\u2026":82};function Ih(e,t=0,r=e.length){let n=0;for(let o=t;oi.split(/\r\n?|\n/g);let n=e?_h:Ih,o=t*100;return i=>g9(i,o,n)}function b1({monospace:e,lineWidth:t,textOverflow:r}){if(r==null||t==1/0)return i=>i;let n=e?_h:Ih,o=t*100;switch(r){case"clip-start":return i=>FM(i,o,n,"");case"clip-end":return i=>EM(i,o,n,"");case"ellipsis-start":return i=>FM(i,o,n,xs);case"ellipsis-middle":return i=>w9(i,o,n,xs);case"ellipsis-end":return i=>EM(i,o,n,xs)}}var xs="\u2026";function ws(e,t,r,n){let o=[],i=0;for(let a=0,s=0,c=e.length;at){for(i+=n;i>t&&a>0;)s=a,a=o.pop(),i-=r(e,a,s);return[a,t-i]}i+=u,o.push(a)}return[-1,0]}function EM(e,t,r,n){e=e.trim();let o=r(n),[i]=ws(e,t,r,o);return i<0?e:e.slice(0,i).trimEnd()+n}function w9(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n)/2,[a,s]=ws(e,t/2,r,i),[c]=ws(e,o-t/2-s+i,r,-i);return c<0?n:e.slice(0,a).trimEnd()+n+e.slice(tf(e,c)).trimStart()}function FM(e,t,r,n){e=e.trim();let o=r(e);if(o<=t)return e;let i=r(n),[a]=ws(e,o-t+i,r,-i);return a<0?n:n+e.slice(tf(e,a)).trimStart()}var l1=/[\p{Combining_Mark}\p{Emoji_Modifier}]+/uy,$M=/\p{Extended_Pictographic}/uy;function tf(e,t){return t+=S9(e,t)?2:1,_9(e,t)&&(t=l1.lastIndex),I9(e,t)?tf(e,t+1):t}function LM(e,t){return e.charCodeAt(t)<128}function S9(e,t){let r=e.charCodeAt(t);if(r>=55296&&r<56320){let n=e.charCodeAt(t+1);return n>=56320&&n<57344}return!1}function I9(e,t){return e.charCodeAt(t)===8205}function _9(e,t){return LM(e,t)?!1:(l1.lastIndex=t,l1.test(e))}function VM(e,t){return LM(e,t)?!1:($M.lastIndex=t,$M.test(e))}var v9={ariaLabel:"vector",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"},jM=3.5,P9=jM*5,UM={draw(e,t,r){let n=t*r/P9;e.moveTo(0,0),e.lineTo(0,-t),e.moveTo(-n,n-t),e.lineTo(0,-t),e.lineTo(n,n-t)}},T9={draw(e,t,r){e.moveTo(-r,0),e.lineTo(0,-t),e.lineTo(r,0)}},M9=new Map([["arrow",UM],["spike",T9]]);function O9(e){return e&&typeof e.draw=="function"}function C9(e){if(O9(e))return e;let t=M9.get(`${e}`.toLowerCase());if(t)return t;throw new Error(`invalid shape: ${e}`)}var vh=class extends lt{constructor(t,r={}){let{x:n,y:o,r:i=jM,length:a,rotate:s,shape:c=UM,anchor:u="middle",frameAnchor:f}=r,[m,l]=It(a,12),[p,h]=It(s,0);super(t,{x:{value:n,scale:"x",optional:!0},y:{value:o,scale:"y",optional:!0},length:{value:m,scale:"length",optional:!0},rotate:{value:p,optional:!0}},r,v9),this.r=+i,this.length=l,this.rotate=h,this.shape=C9(c),this.anchor=Pr(u,"anchor",["start","middle","end"]),this.frameAnchor=ya(f)}render(t,r,n,o,i){let{x:a,y:s}=r,{x:c,y:u,length:f,rotate:m}=n,{length:l,rotate:p,anchor:h,shape:y,r:b}=this,[w,g]=Vo(this,o);return ze("svg:g",i).call(ir,this,o,i).call(ar,this,{x:c&&a,y:u&&s}).call(_=>_.selectAll().data(t).enter().append("path").call(Wt,this).attr("transform",Qc`translate(${c?x=>c[x]:w},${u?x=>u[x]:g})${m?x=>` rotate(${m[x]})`:p?` rotate(${p})`:""}${h==="start"?"":h==="end"?f?x=>` translate(0,${f[x]})`:` translate(0,${l})`:f?x=>` translate(0,${f[x]/2})`:` translate(0,${l/2})`}`).attr("d",f?x=>{let I=Hn();return y.draw(I,f[x],b),I}:(()=>{let x=Hn();return y.draw(x,l,b),x})()).call(Vr,this,n)).node()}};function BM(e,t={}){let{x:r=St,...n}=t;return new vh(e,{...n,x:r})}function zM(e,t={}){let{y:r=St,...n}=t;return new vh(e,{...n,y:r})}function xa(e,t){return arguments.length<2&&!Tn(e)&&(t=e,e=null),t===void 0&&(t={}),[e,t]}function Ph({anchor:e}={},t){return e===void 0?t[0]:Pr(e,"anchor",t)}function GM(e){return Ph(e,["left","right"])}function KM(e){return Ph(e,["right","left"])}function qM(e){return Ph(e,["bottom","top"])}function HM(e){return Ph(e,["top","bottom"])}function x1(){let[e,t]=xa(...arguments);return XM("y",GM(t),e,t)}function YM(){let[e,t]=xa(...arguments);return XM("fy",KM(t),e,t)}function w1(){let[e,t]=xa(...arguments);return ZM("x",qM(t),e,t)}function WM(){let[e,t]=xa(...arguments);return ZM("fx",HM(t),e,t)}function XM(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:c=n,fillOpacity:u=o,textAnchor:f,textStroke:m,textStrokeOpacity:l,textStrokeWidth:p,tickSize:h=e==="y"?6:0,tickPadding:y,tickRotate:b,x:w,margin:g,marginTop:_=g===void 0?20:g,marginRight:x=g===void 0?t==="right"?40:0:g,marginBottom:I=g===void 0?20:g,marginLeft:S=g===void 0?t==="left"?40:0:g,label:v,labelAnchor:T,labelArrow:O,labelOffset:R,ariaLabel:C=`${e}-axis`,...k}){return h=Ot(h),y=Ot(y),b=Ot(b),T!==void 0&&(T=Pr(T,"labelAnchor",["center","top","bottom"])),O=fO(O),Qx(h&&!Ht(i)?k9(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:h,tickPadding:y,tickRotate:b,x:w,ariaLabel:C,...k}):null,Ht(c)?null:N9(e,t,r,{fill:c,fillOpacity:u,stroke:m,strokeOpacity:l,strokeWidth:p,textAnchor:f,tickSize:h,tickPadding:y,tickRotate:b,x:w,marginTop:_,marginRight:x,marginBottom:I,marginLeft:S,ariaLabel:C,...k}),!Ht(c)&&v!==null?ef([],iO({fill:c,fillOpacity:u,...k},function(z,j,M,U,L){let re=U[e],{marginTop:V,marginRight:q,marginBottom:H,marginLeft:W}=e==="y"&&L.inset||L,te=T??(re.bandwidth?"center":"top"),be=R??(t==="right"?q:W)-3;return te==="center"?(this.textAnchor=void 0,this.lineAnchor=t==="right"?"bottom":"top",this.frameAnchor=t,this.rotate=-90):(this.textAnchor=t==="right"?"end":"start",this.lineAnchor=te,this.frameAnchor=`${te}-${t}`,this.rotate=0),this.dy=te==="top"?3-V:te==="bottom"?H-3:0,this.dx=t==="right"?be:-be,this.ariaLabel=`${C} label`,{facets:[[0]],channels:{text:{value:[cO(e,re,{anchor:t,label:v,labelAnchor:te,labelArrow:O})]}}}})):null)}function ZM(e,t,r,{color:n="currentColor",opacity:o=1,stroke:i=n,strokeOpacity:a=o,strokeWidth:s=1,fill:c=n,fillOpacity:u=o,textAnchor:f,textStroke:m,textStrokeOpacity:l,textStrokeWidth:p,tickSize:h=e==="x"?6:0,tickPadding:y,tickRotate:b,y:w,margin:g,marginTop:_=g===void 0?t==="top"?30:0:g,marginRight:x=g===void 0?20:g,marginBottom:I=g===void 0?t==="bottom"?30:0:g,marginLeft:S=g===void 0?20:g,label:v,labelAnchor:T,labelArrow:O,labelOffset:R,ariaLabel:C=`${e}-axis`,...k}){return h=Ot(h),y=Ot(y),b=Ot(b),T!==void 0&&(T=Pr(T,"labelAnchor",["center","left","right"])),O=fO(O),Qx(h&&!Ht(i)?R9(e,t,r,{stroke:i,strokeOpacity:a,strokeWidth:s,tickSize:h,tickPadding:y,tickRotate:b,y:w,ariaLabel:C,...k}):null,Ht(c)?null:A9(e,t,r,{fill:c,fillOpacity:u,stroke:m,strokeOpacity:l,strokeWidth:p,textAnchor:f,tickSize:h,tickPadding:y,tickRotate:b,y:w,marginTop:_,marginRight:x,marginBottom:I,marginLeft:S,ariaLabel:C,...k}),!Ht(c)&&v!==null?ef([],iO({fill:c,fillOpacity:u,...k},function(z,j,M,U,L){let re=U[e],{marginTop:V,marginRight:q,marginBottom:H,marginLeft:W}=e==="x"&&L.inset||L,te=T??(re.bandwidth?"center":"right"),be=R??(t==="top"?V:H)-3;return te==="center"?(this.frameAnchor=t,this.textAnchor=void 0):(this.frameAnchor=`${t}-${te}`,this.textAnchor=te==="right"?"end":"start"),this.lineAnchor=t,this.dy=t==="top"?-be:be,this.dx=te==="right"?q-3:te==="left"?3-W:0,this.ariaLabel=`${C} label`,{facets:[[0]],channels:{text:{value:[cO(e,re,{anchor:t,label:v,labelAnchor:te,labelArrow:O})]}}}})):null)}function k9(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="y"?"-empty":""),frameAnchor:s=t,tickSize:c,inset:u=0,insetLeft:f=u,insetRight:m=u,dx:l=0,y:p=e==="y"?void 0:null,ariaLabel:h,...y}){return rf(zM,e,r,{ariaLabel:`${h} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinecap:o,strokeLinejoin:i,facetAnchor:a,frameAnchor:s,y:p,...y,dx:t==="left"?+l-or+ +f:+l+or-m,anchor:"start",length:c,shape:t==="left"?D9:L9})}function R9(e,t,r,{strokeWidth:n=1,strokeLinecap:o=null,strokeLinejoin:i=null,facetAnchor:a=t+(e==="x"?"-empty":""),frameAnchor:s=t,tickSize:c,inset:u=0,insetTop:f=u,insetBottom:m=u,dy:l=0,x:p=e==="x"?void 0:null,ariaLabel:h,...y}){return rf(BM,e,r,{ariaLabel:`${h} tick`,ariaHidden:!0},{strokeWidth:n,strokeLinejoin:i,strokeLinecap:o,facetAnchor:a,frameAnchor:s,x:p,...y,dy:t==="bottom"?+l-or-m:+l+or+ +f,anchor:"start",length:c,shape:t==="bottom"?F9:$9})}function N9(e,t,r,{facetAnchor:n=t+(e==="y"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>60?4*Math.cos(a*o1):0),text:c,textAnchor:u=Math.abs(a)>60?"middle":t==="left"?"end":"start",lineAnchor:f=a>60?"top":a<-60?"bottom":"middle",fontVariant:m,inset:l=0,insetLeft:p=l,insetRight:h=l,dx:y=0,ariaLabel:b,y:w=e==="y"?void 0:null,...g}){return rf(d1,e,r,{ariaLabel:`${b} tick label`},{facetAnchor:n,frameAnchor:o,text:c,textAnchor:u,lineAnchor:f,fontVariant:m,rotate:a,y:w,...g,dx:t==="left"?+y-i-s+ +p:+y+ +i+ +s-h},function(_,x,I,S,v){m===void 0&&(this.fontVariant=sO(_)),c===void 0&&(v.text=aO(_,x,I,S,t))})}function A9(e,t,r,{facetAnchor:n=t+(e==="x"?"-empty":""),frameAnchor:o=t,tickSize:i,tickRotate:a=0,tickPadding:s=Math.max(3,9-i)+(Math.abs(a)>=10?4*Math.cos(a*o1):0),text:c,textAnchor:u=Math.abs(a)>=10?a<0^t==="bottom"?"start":"end":"middle",lineAnchor:f=Math.abs(a)>=10?"middle":t==="bottom"?"top":"bottom",fontVariant:m,inset:l=0,insetTop:p=l,insetBottom:h=l,dy:y=0,x:b=e==="x"?void 0:null,ariaLabel:w,...g}){return rf(m1,e,r,{ariaLabel:`${w} tick label`},{facetAnchor:n,frameAnchor:o,text:c===void 0?null:c,textAnchor:u,lineAnchor:f,fontVariant:m,rotate:a,x:b,...g,dy:t==="bottom"?+y+ +i+ +s-h:+y-i-s+ +p},function(_,x,I,S,v){m===void 0&&(this.fontVariant=sO(_)),c===void 0&&(v.text=aO(_,x,I,S,t))})}function QM(){let[e,t]=xa(...arguments);return rO("y",GM(t),e,t)}function JM(){let[e,t]=xa(...arguments);return rO("fy",KM(t),e,t)}function eO(){let[e,t]=xa(...arguments);return nO("x",qM(t),e,t)}function tO(){let[e,t]=xa(...arguments);return nO("fx",HM(t),e,t)}function rO(e,t,r,{y:n=e==="y"?void 0:null,x:o=null,x1:i=t==="left"?o:null,x2:a=t==="right"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:c=!0,...u}){return rf(Qn,e,r,{ariaLabel:s,ariaHidden:c},{y:n,x1:i,x2:a,...oO(u)})}function nO(e,t,r,{x:n=e==="x"?void 0:null,y:o=null,y1:i=t==="top"?o:null,y2:a=t==="bottom"?o:null,ariaLabel:s=`${e}-grid`,ariaHidden:c=!0,...u}){return rf(yl,e,r,{ariaLabel:s,ariaHidden:c},{x:n,y1:i,y2:a,...oO(u)})}function oO({color:e="currentColor",opacity:t=.1,stroke:r=e,strokeOpacity:n=t,strokeWidth:o=1,...i}){return{stroke:r,strokeOpacity:n,strokeWidth:o,...i}}function iO({fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:c,shapeRendering:u,clip:f=!1},m){return[,e]=Eo(e),[,t]=It(t),{facet:"super",x:null,y:null,fill:e,fillOpacity:t,fontFamily:r,fontSize:n,fontStyle:o,fontVariant:i,fontWeight:a,monospace:s,pointerEvents:c,shapeRendering:u,clip:f,initializer:m}}function rf(e,t,r,n,o,i){let a;function s(f,m,l,p,h,y){let b=f==null&&(t==="fx"||t==="fy"),{[t]:w}=p;if(!w)throw new Error(`missing scale: ${t}`);let g=w.domain(),{interval:_,ticks:x,tickFormat:I,tickSpacing:S=t==="x"?80:35}=o;if(typeof x=="string"&&uO(w)&&(_=x,x=void 0),x===void 0&&(x=da(_,w.type)??E9(w,S)),f==null){if(Tn(x))f=Fo(x);else if(kT(x))f=g1(x,...Er(g));else if(w.interval){let T=w.interval;if(w.ticks){let[O,R]=Er(g),C=(R-O)/T[$c];T=lx(T,C/x)??T,f=g1(T,O,R)}else{f=g;let O=f.length;T=lx(T,O/x)??T,T!==w.interval&&(f=g1(T,...Er(f)))}if(T===w.interval){let O=Math.round(f.length/x);O>1&&(f=f.filter((R,C)=>C%O===0))}}else w.ticks?f=w.ticks(x):f=g;if(!w.ticks&&f.length&&f!==g){let T=new zn(g);f=f.filter(O=>T.has(O)),f.length||Lr(`Warning: the ${t}-axis ticks appear to not align with the scale domain, resulting in no ticks. Try different ticks?`)}t==="y"||t==="x"?m=[Dr(f)]:a[t]={scale:t,value:St}}i?.call(this,w,f,x,I,a);let v=Object.fromEntries(Object.entries(a).map(([T,O])=>[T,{...O,value:qt(f,O.value)}]));return b&&(m=y.filterFacets(f,v)),{data:f,facets:m,channels:v}}let c=Ti(o).initializer,u=e(r,Ti({...o,initializer:s},c));return r==null?(a=u.channels,u.channels={}):a={},n!==void 0&&Object.assign(u,n),u.clip===void 0&&(u.clip=!1),u}function E9(e,t){let[r,n]=Er(e.range());return(n-r)/t}function aO(e,t,r,n,o){return{value:bl(e,t,r,n,o)}}function bl(e,t,r,n,o){return typeof n=="function"&&!(e.type==="log"&&e.tickFormat)?n:n===void 0&&t&&Kt(t)?pT(e.type,t,o)??Lo:e.tickFormat?e.tickFormat(typeof r=="number"?r:null,n):typeof n=="string"&&e.domain().length>0?(Kt(e.domain())?Ro:gn)(n):n===void 0?Lo:en(n)}function g1(e,t,r){return e.range(t,e.offset(e.floor(r)))}var F9={draw(e,t){e.moveTo(0,0),e.lineTo(0,t)}},$9={draw(e,t){e.moveTo(0,0),e.lineTo(0,-t)}},D9={draw(e,t){e.moveTo(0,0),e.lineTo(-t,0)}},L9={draw(e,t){e.moveTo(0,0),e.lineTo(t,0)}};function sO(e){return e.bandwidth&&!e.interval?void 0:"tabular-nums"}function cO(e,t,{anchor:r,label:n=t.label,labelAnchor:o,labelArrow:i}={}){if(!(n==null||n.inferred&&uO(t)&&/^(date|time|year)$/i.test(n))){if(n=String(n),i==="auto"&&(i=(!t.bandwidth||t.interval)&&!/[↑↓→←]/.test(n)),!i)return n;if(i===!0){let a=B6(t);a&&(i=/x$/.test(e)||o==="center"?/x$/.test(e)===a<0?"left":"right":a<0?"up":"down")}switch(i){case"left":return`\u2190 ${n}`;case"right":return`${n} \u2192`;case"up":return r==="right"?`${n} \u2191`:`\u2191 ${n}`;case"down":return r==="right"?`${n} \u2193`:`\u2193 ${n}`}return n}}function fO(e="auto"){return Ht(e)?!1:typeof e=="boolean"?e:Pr(e,"labelArrow",["auto","up","right","down","left"])}function uO(e){return Kt(e.domain())}function lO(e,t){if(t==null)return t;let r=e(t);if(!r)throw new Error(`scale not found: ${t}`);return r}function pO(e,{opacity:t,...r}={}){if(!Do(e)&&!Gx(e))throw new Error(`swatches legend requires ordinal or threshold color scale (not ${e.type})`);return dO(e,r,(n,o,i,a)=>n.append("svg").attr("width",i).attr("height",a).attr("fill",o.scale).attr("fill-opacity",It(t)[1]).append("rect").attr("width","100%").attr("height","100%"))}function mO(e,{fill:t=e.hint?.fill!==void 0?e.hint.fill:"none",fillOpacity:r=1,stroke:n=e.hint?.stroke!==void 0?e.hint.stroke:Ht(t)?"currentColor":"none",strokeOpacity:o=1,strokeWidth:i=1.5,r:a=4.5,...s}={},c){let[u,f]=Eo(t),[m,l]=Eo(n),p=lO(c,u),h=lO(c,m),y=a*a*Math.PI;return r=It(r)[1],o=It(o)[1],i=It(i)[1],dO(e,s,(b,w,g,_)=>b.append("svg").attr("viewBox","-8 -8 16 16").attr("width",g).attr("height",_).attr("fill",u==="color"?x=>p.scale(x):f).attr("fill-opacity",r).attr("stroke",m==="color"?x=>h.scale(x):l).attr("stroke-opacity",o).attr("stroke-width",i).append("path").attr("d",x=>{let I=Hn();return e.scale(x).draw(I,y),I}))}function dO(e,t={},r){let{columns:n,tickFormat:o,fontVariant:i=gh(e),swatchSize:a=15,swatchWidth:s=a,swatchHeight:c=a,marginLeft:u=0,className:f,style:m,width:l}=t,p=Wc(t);f=Xc(f),o=bl(e.scale,e.domain,void 0,o);let h=ze("div",p).attr("class",`${f}-swatches ${f}-swatches-${n!=null?"columns":"wrap"}`),y;return n!=null?(y=`:where(.${f}-swatches-columns .${f}-swatch) { display: flex; align-items: center; break-inside: avoid; padding-bottom: 1px; } -:where(.${c}-swatches-columns .${c}-swatch::before) { +:where(.${f}-swatches-columns .${f}-swatch::before) { flex-shrink: 0; } -:where(.${c}-swatches-columns .${c}-swatch-label) { +:where(.${f}-swatches-columns .${f}-swatch-label) { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -}`,d.style("columns",n).selectAll().data(e.domain).enter().append("div").attr("class",`${c}-swatch`).call(r,e,s,f).call(x=>x.append("div").attr("class",`${c}-swatch-label`).attr("title",o).text(o))):(y=`:where(.${c}-swatches-wrap) { +}`,h.style("columns",n).selectAll().data(e.domain).enter().append("div").attr("class",`${f}-swatch`).call(r,e,s,c).call(b=>b.append("div").attr("class",`${f}-swatch-label`).attr("title",o).text(o))):(y=`:where(.${f}-swatches-wrap) { display: flex; align-items: center; min-height: 33px; flex-wrap: wrap; } -:where(.${c}-swatches-wrap .${c}-swatch) { +:where(.${f}-swatches-wrap .${f}-swatch) { display: inline-flex; align-items: center; margin-right: 1em; -}`,d.selectAll().data(e.domain).enter().append("span").attr("class",`${c}-swatch`).call(r,e,s,f).append(function(){return this.ownerDocument.createTextNode(o.apply(this,arguments))})),d.call(x=>x.insert("style","*").text(`:where(.${c}-swatches) { +}`,h.selectAll().data(e.domain).enter().append("span").attr("class",`${f}-swatch`).call(r,e,s,c).append(function(){return this.ownerDocument.createTextNode(o.apply(this,arguments))})),h.call(b=>b.insert("style","*").text(`:where(.${f}-swatches) { font-family: system-ui, sans-serif; font-size: 10px; margin-bottom: 0.5em; } -:where(.${c}-swatch > svg) { +:where(.${f}-swatch > svg) { margin-right: 0.5em; overflow: visible; } -${y}`)).style("margin-left",u?`${+u}px`:null).style("width",l===void 0?null:`${+l}px`).style("font-variant",yt(i,"normal")).call(Mf,m).node()}var Rb=new Map([["symbol",c8],["color",m8],["opacity",CF]]);function l8(e,t,r={}){return(n,o)=>{if(!Rb.has(n))throw new Error(`unknown legend type: ${n}`);if(n in e)return Rb.get(n)(e[n],p8(t,r[n],o),i=>e[i])}}function p8({className:e,...t},{label:r,ticks:n,tickFormat:o}={},i){return P6(i,{className:e,...t},{label:r,ticks:n,tickFormat:o})}function m8(e,{legend:t=!0,...r}){if(t===!0&&(t=e.type==="ordinal"?"swatches":"ramp"),e.domain!==void 0)switch(`${t}`.toLowerCase()){case"swatches":return f8(e,r);case"ramp":return lM(e,r);default:throw new Error(`unknown legend type: ${t}`)}}function CF({type:e,interpolate:t,...r},{legend:n=!0,color:o=on(0,0,0),...i}){if(!t)throw new Error(`${e} opacity scales are not supported`);if(n===!0&&(n="ramp"),`${n}`.toLowerCase()!=="ramp")throw new Error(`${n} opacity legends are not supported`);return m8({type:e,...r,interpolate:AF(o)},{legend:n,...i})}function AF(e){let{r:t,g:r,b:n}=on(e)||on(0,0,0);return o=>`rgba(${t},${r},${n},${o})`}function d8(e,t,r){let n=[];for(let[o,i]of Rb){let a=r[o];if(a?.legend&&o in e){let s=i(e[o],p8(t,e[o],a),f=>e[f]);s!=null&&n.push(s)}}return n}function h8(e={},t="y"){return Rg(e)?e:{...e,[t]:dt}}function y8(e,t){if(t.length===1)return{data:e,facets:t};let r=zi(e),n=new Uint8Array(r),o=0;for(let s of t)for(let f of s)n[f]&&++o,n[f]=1;if(o===0)return{data:e,facets:t};e=Bi(e);let i=e[Sg]=new Uint32Array(r+o);t=t.map(s=>Bi(s,Uint32Array));let a=r;n.fill(0);for(let s of t)for(let f=0,u=s.length;f{({data:y,facets:x}=y8(y,x));let g=e==null?void 0:c(I6(Vt(y,e),w?.[r])),S=Vt(y,t,Float64Array),b=Vt(y,f),T=i&&i(y,g,S,b),I=zi(y),v=l(new Float64Array(I)),O=d(new Float64Array(I)),C=[];for(let E of x){let A=g?Array.from(Vo(E,F=>g[F]).values()):[E];if(T)for(let F of A)F.sort(T);for(let F of A){let H=0,j=0;a&&F.reverse();for(let M of F){let U=S[M];U<0?H=O[M]=(v[M]=H)+U:U>0?j=O[M]=(v[M]=j)+U:O[M]=v[M]=j}}C.push(A)}return o&&o(C,v,O,b),{data:y,facets:x}}),u,m,p]}function EF(e){if(e!=null){if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"expand":case"normalize":return $F;case"center":case"silhouette":return LF;case"wiggle":return S8}throw new Error(`unknown offset: ${e}`)}}function w8(e,t){let r=0,n=0;for(let o of e){let i=t[o];in&&(n=i)}return[r,n]}function $F(e,t,r){for(let n of e)for(let o of n){let[i,a]=w8(o,r);for(let s of o){let f=1/(a-i||1);t[s]=f*(t[s]-i),r[s]=f*(r[s]-i)}}}function LF(e,t,r){for(let n of e){for(let o of n){let[i,a]=w8(o,r);for(let s of o){let f=(a+i)/2;t[s]-=f,r[s]-=f}}I8(n,t,r)}_8(e,t,r)}function S8(e,t,r,n){for(let o of e){let i=new pr,a=0;for(let s of o){let f=-1,u=s.map(p=>Math.abs(r[p]-t[p])),c=s.map(p=>{f=n?n[p]:++f;let d=r[p]-t[p],y=i.has(f)?d-i.get(f):0;return i.set(f,d),y}),m=[0,...Rl(c)];for(let p of s)t[p]+=a,r[p]+=a;let l=rn(u);l&&(a-=rn(u,(p,d)=>(c[d]/2+m[d])*p)/l)}I8(o,t,r)}_8(e,t,r)}function I8(e,t,r){let n=mr(e,o=>mr(o,i=>t[i]));for(let o of e)for(let i of o)t[i]-=n,r[i]-=n}function _8(e,t,r){let n=e.length;if(n===1)return;let o=e.map(s=>s.flat()),i=o.map(s=>(mr(s,f=>t[f])+Nt(s,f=>r[f]))/2),a=mr(i);for(let s=0;s(o,i)=>e(n[o],n[i])}function UF(e){return(t,r,n,o)=>(i,a)=>e(o[i],o[a])}function jF(e){return Kd(e,(t,r,n,o)=>Ms(Rr(t),i=>rn(i,a=>n[a]),i=>o[i]))}function BF(e){return Kd(e,(t,r,n,o)=>Ms(Rr(t),i=>r[cc(i,a=>n[a])],i=>o[i]))}function x8(e){return Kd(e,(t,r,n,o)=>{let i=Rr(t),a=Ms(i,m=>r[cc(m,l=>n[l])],m=>o[m]),s=Qn(i,m=>rn(m,l=>n[l]),m=>o[m]),f=[],u=[],c=0;for(let m of a)c<0?(c+=s.get(m),f.push(m)):(c-=s.get(m),u.push(m));return u.reverse().concat(f)})}function g8(e){return t=>{let r=Vt(t,e);return(n,o)=>Or(r[n],r[o])}}function GF(e){return t=>Dn(t)?(r,n)=>e(t[r],t[n]):(r,n)=>e(t.get(r),t.get(n))}function zF(e){return Kd(Or,()=>e)}function Kd(e,t){return(r,n,o,i)=>{if(!i)throw new Error("missing channel: z");let a=new pr(t(r,n,o,i).map((s,f)=>[s,f]));return(s,f)=>e(a.get(i[s]),a.get(i[f]))}}var KF={ariaLabel:"rect"},Yd=class extends ot{constructor(t,r={}){let{x1:n,y1:o,x2:i,y2:a}=r;super(t,{x1:{value:n,scale:"x",type:n!=null&&i==null?"band":void 0,optional:!0},y1:{value:o,scale:"y",type:o!=null&&a==null?"band":void 0,optional:!0},x2:{value:i,scale:"x",optional:!0},y2:{value:a,scale:"y",optional:!0}},r,KF),Cb(this,r),Ab(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x1:f,y1:u,x2:c,y2:m}=n,{marginTop:l,marginRight:p,marginBottom:d,marginLeft:y,width:x,height:w}=o,{projection:g}=i,{insetTop:S,insetRight:b,insetBottom:T,insetLeft:I}=this,{rx:v,ry:O,rx1y1:C,rx1y2:E,rx2y1:A,rx2y2:F}=this;(f||c)&&!g&&Wi(a)&&(f=c=null),(u||m)&&!g&&Wi(s)&&(u=m=null);let H=a?.bandwidth?a.bandwidth():0,j=s?.bandwidth?s.bandwidth():0;return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,{},0,0).call(M=>M.selectAll().data(t).enter().call(C||E||A||F?U=>U.append("path").call(Bt,this).call(Pb,f&&c?D=>f[D]+(c[D]f[D]+I:y+I,u&&m?D=>u[D]+(m[D]u[D]+S:l+S,f&&c?D=>c[D]-(c[D]f[D]+H-b:x-p-b,u&&m?D=>m[D]-(m[D]u[D]+j-T:w-d-T,this).call(Ar,this,n):U=>U.append("rect").call(Bt,this).attr("x",f?c?D=>Math.min(f[D],c[D])+I:D=>f[D]+I:y+I).attr("y",u?m?D=>Math.min(u[D],m[D])+S:D=>u[D]+S:l+S).attr("width",f?c?D=>Math.max(0,Math.abs(c[D]-f[D])+H-I-b):H-I-b:x-p-y-b-I).attr("height",u?m?D=>Math.max(0,Math.abs(u[D]-m[D])+j-S-T):j-S-T:w-l-d-S-T).call(pe,"rx",v).call(pe,"ry",O).call(Ar,this,n))).node()}};function Cb(e,{inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={}){e.insetTop=St(r),e.insetRight=St(n),e.insetBottom=St(o),e.insetLeft=St(i)}function Ab(e,{r:t,rx:r,ry:n,rx1:o=t,ry1:i=t,rx2:a=t,ry2:s=t,rx1y1:f=o!==void 0?+o:i!==void 0?+i:0,rx1y2:u=o!==void 0?+o:s!==void 0?+s:0,rx2y1:c=a!==void 0?+a:i!==void 0?+i:0,rx2y2:m=a!==void 0?+a:s!==void 0?+s:0}={}){f||u||c||m?(e.rx1y1=f,e.rx1y2=u,e.rx2y1=c,e.rx2y2=m):(e.rx=yt(r,"auto"),e.ry=yt(n,"auto"))}function Pb(e,t,r,n,o,i){let{rx1y1:a,rx1y2:s,rx2y1:f,rx2y2:u}=i;typeof t!="function"&&(t=Gr(t)),typeof r!="function"&&(r=Gr(r)),typeof n!="function"&&(n=Gr(n)),typeof o!="function"&&(o=Gr(o));let c=Math.max(Math.abs(a+f),Math.abs(s+u)),m=Math.max(Math.abs(a+s),Math.abs(f+u));e.attr("d",l=>{let p=t(l),d=r(l),y=n(l),x=o(l),w=p>y,g=d>x,S=w?y:p,b=w?p:y,T=g?x:d,I=g?d:x,v=Math.min(1,(b-S)/c,(I-T)/m),O=v*(w?g?u:f:g?s:a),C=v*(w?g?s:a:g?u:f),E=v*(w?g?a:s:g?f:u),A=v*(w?g?f:u:g?a:s);return`M${S},${T+Hd(O,A)}A${O},${O} 0 0 ${O<0?0:1} ${S+qd(O,A)},${T}H${b-qd(C,E)}A${C},${C} 0 0 ${C<0?0:1} ${b},${T+Hd(C,E)}V${I-Hd(E,C)}A${E},${E} 0 0 ${E<0?0:1} ${b-qd(E,C)},${I}H${S+qd(A,O)}A${A},${A} 0 0 ${A<0?0:1} ${S},${I-Hd(A,O)}Z`})}function qd(e,t){return t<0?e:Math.abs(e)}function Hd(e,t){return t<0?Math.abs(e):e}function Vu(e,t={}){return x6(t)||(t={...t,x:Ru,y2:dt,interval:1}),new Yd(e,b8(wM(h8(t))))}var qF={ariaLabel:"frame",fill:"none",stroke:"currentColor",clip:!1},HF={ariaLabel:"frame",fill:null,stroke:"currentColor",strokeLinecap:"square",clip:!1},kb=class extends ot{constructor(t={}){let{anchor:r=null}=t;super(pf,void 0,t,r==null?qF:HF),this.anchor=Og(r,"anchor",["top","right","bottom","left"]),Cb(this,t),r||Ab(this,t)}render(t,r,n,o,i){let{marginTop:a,marginRight:s,marginBottom:f,marginLeft:u,width:c,height:m}=o,{anchor:l,insetTop:p,insetRight:d,insetBottom:y,insetLeft:x}=this,{rx:w,ry:g,rx1y1:S,rx1y2:b,rx2y1:T,rx2y2:I}=this,v=u+x,O=c-s-d,C=a+p,E=m-f-y;return Ve(l?"svg:line":S||b||T||I?"svg:path":"svg:rect",i).datum(0).call(Qt,this,o,i).call(Bt,this).call(Ar,this,n).call(Jt,this,{}).call(l==="left"?A=>A.attr("x1",v).attr("x2",v).attr("y1",C).attr("y2",E):l==="right"?A=>A.attr("x1",O).attr("x2",O).attr("y1",C).attr("y2",E):l==="top"?A=>A.attr("x1",v).attr("x2",O).attr("y1",C).attr("y2",C):l==="bottom"?A=>A.attr("x1",v).attr("x2",O).attr("y1",E).attr("y2",E):S||b||T||I?A=>A.call(Pb,v,C,O,E,this):A=>A.attr("x",v).attr("y",C).attr("width",O-v).attr("height",E-C).attr("rx",w).attr("ry",g)).node()}};function Nb(e){return new kb(e)}var Fb={ariaLabel:"tip",fill:"var(--plot-background)",stroke:"currentColor"},YF=new Set(["geometry","href","src","ariaLabel","scales"]),Eb=class extends ot{constructor(t,r={}){r.tip&&(r={...r,tip:!1}),r.title===void 0&&hn(t)&&Id(t)&&(r={...r,title:dt});let{x:n,y:o,x1:i,x2:a,y1:s,y2:f,anchor:u,preferredAnchor:c="bottom",monospace:m,fontFamily:l=m?"ui-monospace, monospace":void 0,fontSize:p,fontStyle:d,fontVariant:y,fontWeight:x,lineHeight:w=1,lineWidth:g=20,frameAnchor:S,format:b,textAnchor:T="start",textOverflow:I,textPadding:v=8,title:O,pointerSize:C=12,pathFilter:E="drop-shadow(0 3px 4px rgba(0,0,0,0.2))"}=r;super(t,{x:{value:i!=null&&a!=null?null:n,scale:"x",optional:!0},y:{value:s!=null&&f!=null?null:o,scale:"y",optional:!0},x1:{value:i,scale:"x",optional:a==null},y1:{value:s,scale:"y",optional:f==null},x2:{value:a,scale:"x",optional:i==null},y2:{value:f,scale:"y",optional:s==null},title:{value:O,optional:!0}},r,Fb),this.anchor=vd(u,"anchor"),this.preferredAnchor=vd(c,"preferredAnchor"),this.frameAnchor=Yi(S),this.textAnchor=yt(T,"middle"),this.textPadding=+v,this.pointerSize=+C,this.pathFilter=wt(E),this.lineHeight=+w,this.lineWidth=+g,this.textOverflow=wb(I),this.monospace=!!m,this.fontFamily=wt(l),this.fontSize=St(p),this.fontStyle=wt(d),this.fontVariant=wt(y),this.fontWeight=wt(x);for(let A in Fb)A in this.channels&&(this[A]=Fb[A]);this.splitLines=_b(this),this.clipLine=vb(this),this.format=typeof b=="string"||typeof b=="function"?{title:b}:{...b}}render(t,r,n,o,i){let a=this,{x:s,y:f,fx:u,fy:c}=r,{ownerSVGElement:m,document:l}=i,{anchor:p,monospace:d,lineHeight:y,lineWidth:x}=this,{textPadding:w,pointerSize:g,pathFilter:S}=this,{marginTop:b,marginLeft:T}=o,{x1:I,y1:v,x2:O,y2:C,x:E=I??O,y:A=v??C}=n,F=u?u(t.fx)-T:0,H=c?c(t.fy)-b:0,[j,M]=_o(this,o),U=cb(n,j),D=ub(n,M),oe=d?Bd:jd,V=oe(Wa),K,Y;"title"in n?(K=v8.call(this,{title:n.channels.title},r),Y=QF):(K=v8.call(this,n.channels,r),Y=JF);let Z=Ve("svg:g",i).call(Qt,this,o,i).call(Ib,this).call(Jt,this,{x:E&&s,y:A&&f}).call(B=>B.selectAll().data(t).enter().append("g").attr("transform",W=>`translate(${Math.round(U(W))},${Math.round(D(W))})`).call(Bt,this).call(W=>W.append("path").attr("filter",S)).call(W=>W.append("text").each(function(X){let le=nn(this);this.setAttribute("fill","currentColor"),this.setAttribute("fill-opacity",1),this.setAttribute("stroke","none");let L=Y.call(a,X,t,K,r,n);if(typeof L=="string")for(let Q of a.splitLines(L))J(le,{value:a.clipLine(Q)});else{let Q=new Set;for(let re of L){let{label:$=""}=re;$&&Q.has($)||(Q.add($),J(le,re))}}})));function J(B,{label:W,value:X,color:le,opacity:L}){W??="",X??="";let Q=le!=null||L!=null,re,$=x*100,[ke]=Xa(W,$,oe,V);if(ke>=0)W=W.slice(0,ke).trimEnd()+Wa,re=X.trim(),X="";else{(W||!X&&!Q)&&(X=" "+X);let[ae]=Xa(X,$-oe(W),oe,V);ae>=0&&(re=X.trim(),X=X.slice(0,ae).trimEnd()+Wa)}let G=B.append("tspan").attr("x",0).attr("dy",`${y}em`).text("\u200B");W&&G.append("tspan").attr("font-weight","bold").text(W),X&&G.append(()=>l.createTextNode(X)),Q&&G.append("tspan").text(" \u25A0").attr("fill",le).attr("fill-opacity",L).style("user-select","none"),re&&G.append("title").text(re)}function ye(){let{width:B,height:W}=o.facet??o;Z.selectChildren().each(function(X){let{x:le,width:L,height:Q}=this.getBBox();L=Math.round(L),Q=Math.round(Q);let re=p;if(re===void 0){let G=U(X)+F,ae=D(X)+H,xe=G+L+g+w*20,Pt=ae+Q+g+w*20;re=xe&&Ge?Pt&&qt?a.preferredAnchor:qt?"bottom":"top":Pt&&qt?xe?"left":"right":(xe||Ge)&&(Pt||qt)?`${qt?"bottom":"top"}-${xe?"left":"right"}`:a.preferredAnchor}let $=this.firstChild,ke=this.lastChild;if($.setAttribute("d",ZF(re,g,w,L,Q)),le)for(let G of ke.childNodes)G.setAttribute("x",-le);ke.setAttribute("y",`${+WF(re,ke.childNodes.length,y).toFixed(6)}em`),ke.setAttribute("transform",`translate(${XF(re,g,w,L,Q)})`)}),Z.attr("visibility",null)}return t.length&&(Z.attr("visibility","hidden"),m.isConnected?Promise.resolve().then(ye):typeof requestAnimationFrame<"u"&&requestAnimationFrame(ye)),Z.node()}};function R8(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=ii(t,r)),new Eb(e,{...n,x:t,y:r})}function WF(e,t,r){return/^top(?:-|$)/.test(e)?.94-r:-.29-t*r}function XF(e,t,r,n,o){switch(e){case"middle":return[-n/2,o/2];case"top-left":return[r,t+r];case"top":return[-n/2,t/2+r];case"top-right":return[-n-r,t+r];case"right":return[-t/2-n-r,o/2];case"bottom-left":return[r,-t-r];case"bottom":return[-n/2,-t/2-r];case"bottom-right":return[-n-r,-t-r];case"left":return[r+t/2,o/2]}}function ZF(e,t,r,n,o){let i=n+r*2,a=o+r*2;switch(e){case"middle":return`M${-i/2},${-a/2}h${i}v${a}h${-i}z`;case"top-left":return`M0,0l${t},${t}h${i-t}v${a}h${-i}z`;case"top":return`M0,0l${t/2},${t/2}h${(i-t)/2}v${a}h${-i}v${-a}h${(i-t)/2}z`;case"top-right":return`M0,0l${-t},${t}h${t-i}v${a}h${i}z`;case"right":return`M0,0l${-t/2},${-t/2}v${t/2-a/2}h${-i}v${a}h${i}v${t/2-a/2}z`;case"bottom-left":return`M0,0l${t},${-t}h${i-t}v${-a}h${-i}z`;case"bottom":return`M0,0l${t/2},${-t/2}h${(i-t)/2}v${-a}h${-i}v${a}h${(i-t)/2}z`;case"bottom-right":return`M0,0l${-t},${-t}h${t-i}v${-a}h${i}z`;case"left":return`M0,0l${t/2},${-t/2}v${t/2-a/2}h${i}v${a}h${-i}v${t/2-a/2}z`}}function v8(e,t){let r={},n=this.format;n=T8(n,e,"x"),n=T8(n,e,"y"),this.format=n;for(let o in n){let i=n[o];if(!(i===null||i===!1))if(o==="fx"||o==="fy")r[o]=!0;else{let a=Vg(e,o);a&&(r[o]=a)}}for(let o in e){if(o in r||o in n||YF.has(o)||(o==="x"||o==="y")&&e.geometry)continue;let i=Vg(e,o);if(i){if(i.scale==null&&i.defaultScale==="color")continue;r[o]=i}}this.facet&&(t.fx&&!("fx"in n)&&(r.fx=!0),t.fy&&!("fy"in n)&&(r.fy=!0));for(let o in r){let i=this.format[o];if(typeof i=="string"){let a=r[o]?.value??t[o]?.domain()??[];this.format[o]=(Dt(a)?ho:sn)(i)}else if(i===void 0||i===!0){let a=t[o];this.format[o]=a?.bandwidth?Du(a,a.domain()):Io}}return r}function T8(e,t,r){if(!(r in e))return e;let n=`${r}1`,o=`${r}2`;if((n in e||!(n in t))&&(o in e||!(o in t)))return e;let i=Object.entries(e),a=e[r];return i.splice(i.findIndex(([s])=>s===r)+1,0,[n,a],[o,a]),Object.fromEntries(i)}function QF(e,t,{title:r}){return this.format.title(r.value[e],e)}function*JF(e,t,r,n,o){for(let i in r){if(i==="fx"||i==="fy"){yield{label:Wd(n,r,i),value:this.format[i](t[i],e)};continue}if(i==="x1"&&"x2"in r||i==="y1"&&"y2"in r)continue;let a=r[i];if(i==="x2"&&"x1"in r)yield{label:O8(n,r,"x"),value:M8(this.format.x2,r.x1,a,e)};else if(i==="y2"&&"y1"in r)yield{label:O8(n,r,"y"),value:M8(this.format.y2,r.y1,a,e)};else{let s=a.value[e],f=a.scale;if(!mn(s)&&f==null)continue;yield{label:Wd(n,r,i),value:this.format[i](s,e),color:f==="color"?o[i][e]:null,opacity:f==="opacity"?o[i][e]:null}}}}function M8(e,t,r,n){return r.hint?.length?`${e(r.value[n]-t.value[n],n)}`:`${e(t.value[n],n)}\u2013${e(r.value[n],n)}`}function O8(e,t,r){let n=Wd(e,t,`${r}1`,r),o=Wd(e,t,`${r}2`,r);return n===o?n:`${n}\u2013${o}`}function Wd(e,t,r,n=r){let o=t[r],i=e[o?.scale??r];return String(i?.label??o?.label??n)}function vo(e={}){let{facet:t,style:r,title:n,subtitle:o,caption:i,ariaLabel:a,ariaDescription:s}=e,f=Tf(e.className),u=e.marks===void 0?[]:A8(e.marks);u.push(...iE(u));let c=nE(t,e),m=new Map;for(let V of u){let K=P8(V,c,e);K&&m.set(V,K)}let l=new Map;c&&Uu(l,[c],e),Uu(l,m,e);let p=A8(aE(u,l,e));for(let V of p){let K=P8(V,c,e);K&&m.set(V,K)}u.unshift(...p);let d=jT(l,e);if(d!==void 0){let V=c?Nd(d,c):void 0;for(let Y of u){if(Y.facet===null||Y.facet==="super")continue;let Z=m.get(Y);Z!==void 0&&(Z.facetsIndex=Y.fx!=null||Y.fy!=null?Nd(d,Z):V)}let K=new Set;for(let{facetsIndex:Y}of m.values())Y?.forEach((Z,J)=>{Z?.length>0&&K.add(J)});d.forEach(0Y.empty=!K.has(Z):Y=>Y.empty=!1);for(let Y of u)if(Y.facet==="exclude"){let Z=m.get(Y);Z!==void 0&&(Z.facetsIndex=zT(Z.facetsIndex))}}for(let V of Be.keys())mf(e[V])&&V!=="fx"&&V!=="fy"&&l.set(V,[]);let y=new Map;for(let V of u){if(y.has(V))throw new Error("duplicate mark; each mark must be unique");let{facetsIndex:K,channels:Y}=m.get(V)??{},{data:Z,facets:J,channels:ye}=V.initialize(K,Y,e);Db(ye,e),y.set(V,{data:Z,facets:J,channels:ye})}let x=Nu(Uu(l,y,e),e),w=sM(x,u,e);ET(x,w);let g=Wg(x),{fx:S,fy:b}=g,T=S||b?Xg(x,w):w,I=S||b?mE(g,w):w,v=vf(e),O=v.document,C=Go("svg").call(O.documentElement),E=C;v.ownerSVGElement=C,v.className=f,v.projection=HT(e,T),v.path=function(){return Ks(this.projection??JT(g))},v.filterFacets=(V,K)=>Nd(d,{channels:K,groups:Pd(V,K)}),v.getMarkState=V=>{let K=y.get(V),Y=m.get(V);return{...K,channels:{...K.channels,...Y?.channels}}},v.dispatchValue=V=>{E.value!==V&&(E.value=V,E.dispatchEvent(new v.document.defaultView.Event("input",{bubbles:!0})))};let A=new Set;for(let[V,K]of y)if(V.initializer!=null){let Y=V.facet==="super"?I:T,Z=V.initializer(K.data,K.facets,K.channels,g,Y,v);if(Z.data!==void 0&&(K.data=Z.data),Z.facets!==void 0&&(K.facets=Z.facets),Z.channels!==void 0){let{fx:J,fy:ye,...B}=Z.channels;rE(B),Object.assign(K.channels,B);for(let W of Object.values(B)){let{scale:X}=W;X!=null&&!E6(Be.get(X))&&(F8(W,e),A.add(X))}(J!=null||ye!=null)&&m.set(V,!0)}}if(A.size){let V=new Map;Uu(V,y,e,J=>A.has(J)),Uu(l,y,e,J=>A.has(J));let K=pE(Nu(V,e),x),{scales:Y,...Z}=Wg(K);Object.assign(x,K),Object.assign(g,Z),Object.assign(g.scales,Y)}let F,H;d!==void 0&&(F={x:S?.domain(),y:b?.domain()},d=BT(d,F),H=GT(S,b,w));for(let[V,K]of y)K.values=V.scale(K.channels,g,v);let{width:j,height:M}=w;nn(C).attr("class",f).attr("fill","currentColor").attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("text-anchor","middle").attr("width",j).attr("height",M).attr("viewBox",`0 0 ${j} ${M}`).attr("aria-label",a).attr("aria-description",s).call(V=>V.append("style").text(`:where(.${f}) { +${y}`)).style("margin-left",u?`${+u}px`:null).style("width",l===void 0?null:`${+l}px`).style("font-variant",_t(i,"normal")).call(Zc,m).node()}var S1=new Map([["symbol",mO],["color",bO],["opacity",V9]]);function hO(e,t,r={}){return(n,o)=>{if(!S1.has(n))throw new Error(`unknown legend type: ${n}`);if(n in e)return S1.get(n)(e[n],yO(t,r[n],o),i=>e[i])}}function yO({className:e,...t},{label:r,ticks:n,tickFormat:o}={},i){return DT(i,{className:e,...t},{label:r,ticks:n,tickFormat:o})}function bO(e,{legend:t=!0,...r}){if(t===!0&&(t=e.type==="ordinal"?"swatches":"ramp"),e.domain!==void 0)switch(`${t}`.toLowerCase()){case"swatches":return pO(e,r);case"ramp":return bM(e,r);default:throw new Error(`unknown legend type: ${t}`)}}function V9({type:e,interpolate:t,...r},{legend:n=!0,color:o=yn(0,0,0),...i}){if(!t)throw new Error(`${e} opacity scales are not supported`);if(n===!0&&(n="ramp"),`${n}`.toLowerCase()!=="ramp")throw new Error(`${n} opacity legends are not supported`);return bO({type:e,...r,interpolate:j9(o)},{legend:n,...i})}function j9(e){let{r:t,g:r,b:n}=yn(e)||yn(0,0,0);return o=>`rgba(${t},${r},${n},${o})`}function gO(e,t,r){let n=[];for(let[o,i]of S1){let a=r[o];if(a?.legend&&o in e){let s=i(e[o],yO(t,e[o],a),c=>e[c]);s!=null&&n.push(s)}}return n}function xO(e={},t="y"){return Sx(e)?e:{...e,[t]:St}}function wO(e,t){if(t.length===1)return{data:e,facets:t};let r=pa(e),n=new Uint8Array(r),o=0;for(let s of t)for(let c of s)n[c]&&++o,n[c]=1;if(o===0)return{data:e,facets:t};e=ua(e);let i=e[dx]=new Uint32Array(r+o);t=t.map(s=>ua(s,Uint32Array));let a=r;n.fill(0);for(let s of t)for(let c=0,u=s.length;c{({data:y,facets:b}=wO(y,b));let g=e==null?void 0:f(OT(qt(y,e),w?.[r])),_=qt(y,t,Float64Array),x=qt(y,c),I=i&&i(y,g,_,x),S=pa(y),v=l(new Float64Array(S)),T=h(new Float64Array(S)),O=[];for(let R of b){let C=g?Array.from(ii(R,k=>g[k]).values()):[R];if(I)for(let k of C)k.sort(I);for(let k of C){let z=0,j=0;a&&k.reverse();for(let M of k){let U=_[M];U<0?z=T[M]=(v[M]=z)+U:U>0?j=T[M]=(v[M]=j)+U:T[M]=v[M]=j}}O.push(C)}return o&&o(O,v,T,x),{data:y,facets:b}}),u,m,p]}function G9(e){if(e!=null){if(typeof e=="function")return e;switch(`${e}`.toLowerCase()){case"expand":case"normalize":return K9;case"center":case"silhouette":return q9;case"wiggle":return PO}throw new Error(`unknown offset: ${e}`)}}function vO(e,t){let r=0,n=0;for(let o of e){let i=t[o];in&&(n=i)}return[r,n]}function K9(e,t,r){for(let n of e)for(let o of n){let[i,a]=vO(o,r);for(let s of o){let c=1/(a-i||1);t[s]=c*(t[s]-i),r[s]=c*(r[s]-i)}}}function q9(e,t,r){for(let n of e){for(let o of n){let[i,a]=vO(o,r);for(let s of o){let c=(a+i)/2;t[s]-=c,r[s]-=c}}TO(n,t,r)}MO(e,t,r)}function PO(e,t,r,n){for(let o of e){let i=new Sr,a=0;for(let s of o){let c=-1,u=s.map(p=>Math.abs(r[p]-t[p])),f=s.map(p=>{c=n?n[p]:++c;let h=r[p]-t[p],y=i.has(c)?h-i.get(c):0;return i.set(c,h),y}),m=[0,...fp(f)];for(let p of s)t[p]+=a,r[p]+=a;let l=dn(u);l&&(a-=dn(u,(p,h)=>(f[h]/2+m[h])*p)/l)}TO(o,t,r)}MO(e,t,r)}function TO(e,t,r){let n=Ir(e,o=>Ir(o,i=>t[i]));for(let o of e)for(let i of o)t[i]-=n,r[i]-=n}function MO(e,t,r){let n=e.length;if(n===1)return;let o=e.map(s=>s.flat()),i=o.map(s=>(Ir(s,c=>t[c])+jt(s,c=>r[c]))/2),a=Ir(i);for(let s=0;s(o,i)=>e(n[o],n[i])}function W9(e){return(t,r,n,o)=>(i,a)=>e(o[i],o[a])}function X9(e){return Mh(e,(t,r,n,o)=>Qs(Dr(t),i=>dn(i,a=>n[a]),i=>o[i]))}function Z9(e){return Mh(e,(t,r,n,o)=>Qs(Dr(t),i=>r[Bf(i,a=>n[a])],i=>o[i]))}function SO(e){return Mh(e,(t,r,n,o)=>{let i=Dr(t),a=Qs(i,m=>r[Bf(m,l=>n[l])],m=>o[m]),s=ho(i,m=>dn(m,l=>n[l]),m=>o[m]),c=[],u=[],f=0;for(let m of a)f<0?(f+=s.get(m),c.push(m)):(f-=s.get(m),u.push(m));return u.reverse().concat(c)})}function IO(e){return t=>{let r=qt(t,e);return(n,o)=>$r(r[n],r[o])}}function Q9(e){return t=>Xn(t)?(r,n)=>e(t[r],t[n]):(r,n)=>e(t.get(r),t.get(n))}function J9(e){return Mh($r,()=>e)}function Mh(e,t){return(r,n,o,i)=>{if(!i)throw new Error("missing channel: z");let a=new Sr(t(r,n,o,i).map((s,c)=>[s,c]));return(s,c)=>e(a.get(i[s]),a.get(i[c]))}}var e$={ariaLabel:"rect"},kh=class extends lt{constructor(t,r={}){let{x1:n,y1:o,x2:i,y2:a}=r;super(t,{x1:{value:n,scale:"x",type:n!=null&&i==null?"band":void 0,optional:!0},y1:{value:o,scale:"y",type:o!=null&&a==null?"band":void 0,optional:!0},x2:{value:i,scale:"x",optional:!0},y2:{value:a,scale:"y",optional:!0}},r,e$),I1(this,r),_1(this,r)}render(t,r,n,o,i){let{x:a,y:s}=r,{x1:c,y1:u,x2:f,y2:m}=n,{marginTop:l,marginRight:p,marginBottom:h,marginLeft:y,width:b,height:w}=o,{projection:g}=i,{insetTop:_,insetRight:x,insetBottom:I,insetLeft:S}=this,{rx:v,ry:T,rx1y1:O,rx1y2:R,rx2y1:C,rx2y2:k}=this;(c||f)&&!g&&ba(a)&&(c=f=null),(u||m)&&!g&&ba(s)&&(u=m=null);let z=a?.bandwidth?a.bandwidth():0,j=s?.bandwidth?s.bandwidth():0;return ze("svg:g",i).call(ir,this,o,i).call(ar,this,{},0,0).call(M=>M.selectAll().data(t).enter().call(O||R||C||k?U=>U.append("path").call(Wt,this).call(v1,c&&f?L=>c[L]+(f[L]c[L]+S:y+S,u&&m?L=>u[L]+(m[L]u[L]+_:l+_,c&&f?L=>f[L]-(f[L]c[L]+z-x:b-p-x,u&&m?L=>m[L]-(m[L]u[L]+j-I:w-h-I,this).call(Vr,this,n):U=>U.append("rect").call(Wt,this).attr("x",c?f?L=>Math.min(c[L],f[L])+S:L=>c[L]+S:y+S).attr("y",u?m?L=>Math.min(u[L],m[L])+_:L=>u[L]+_:l+_).attr("width",c?f?L=>Math.max(0,Math.abs(f[L]-c[L])+z-S-x):z-S-x:b-p-y-x-S).attr("height",u?m?L=>Math.max(0,Math.abs(u[L]-m[L])+j-_-I):j-_-I:w-l-h-_-I).call(de,"rx",v).call(de,"ry",T).call(Vr,this,n))).node()}};function I1(e,{inset:t=0,insetTop:r=t,insetRight:n=t,insetBottom:o=t,insetLeft:i=t}={}){e.insetTop=Ot(r),e.insetRight=Ot(n),e.insetBottom=Ot(o),e.insetLeft=Ot(i)}function _1(e,{r:t,rx:r,ry:n,rx1:o=t,ry1:i=t,rx2:a=t,ry2:s=t,rx1y1:c=o!==void 0?+o:i!==void 0?+i:0,rx1y2:u=o!==void 0?+o:s!==void 0?+s:0,rx2y1:f=a!==void 0?+a:i!==void 0?+i:0,rx2y2:m=a!==void 0?+a:s!==void 0?+s:0}={}){c||u||f||m?(e.rx1y1=c,e.rx1y2=u,e.rx2y1=f,e.rx2y2=m):(e.rx=_t(r,"auto"),e.ry=_t(n,"auto"))}function v1(e,t,r,n,o,i){let{rx1y1:a,rx1y2:s,rx2y1:c,rx2y2:u}=i;typeof t!="function"&&(t=en(t)),typeof r!="function"&&(r=en(r)),typeof n!="function"&&(n=en(n)),typeof o!="function"&&(o=en(o));let f=Math.max(Math.abs(a+c),Math.abs(s+u)),m=Math.max(Math.abs(a+s),Math.abs(c+u));e.attr("d",l=>{let p=t(l),h=r(l),y=n(l),b=o(l),w=p>y,g=h>b,_=w?y:p,x=w?p:y,I=g?b:h,S=g?h:b,v=Math.min(1,(x-_)/f,(S-I)/m),T=v*(w?g?u:c:g?s:a),O=v*(w?g?s:a:g?u:c),R=v*(w?g?a:s:g?c:u),C=v*(w?g?c:u:g?a:s);return`M${_},${I+Ch(T,C)}A${T},${T} 0 0 ${T<0?0:1} ${_+Oh(T,C)},${I}H${x-Oh(O,R)}A${O},${O} 0 0 ${O<0?0:1} ${x},${I+Ch(O,R)}V${S-Ch(R,O)}A${R},${R} 0 0 ${R<0?0:1} ${x-Oh(R,O)},${S}H${_+Oh(C,T)}A${C},${C} 0 0 ${C<0?0:1} ${_},${S-Ch(C,T)}Z`})}function Oh(e,t){return t<0?e:Math.abs(e)}function Ch(e,t){return t<0?Math.abs(e):e}function Ri(e,t={}){return _T(t)||(t={...t,x:sl,y2:St,interval:1}),new kh(e,_O(TM(xO(t))))}var t$={ariaLabel:"frame",fill:"none",stroke:"currentColor",clip:!1},r$={ariaLabel:"frame",fill:null,stroke:"currentColor",strokeLinecap:"square",clip:!1},P1=class extends lt{constructor(t={}){let{anchor:r=null}=t;super(Dc,void 0,t,r==null?t$:r$),this.anchor=wx(r,"anchor",["top","right","bottom","left"]),I1(this,t),r||_1(this,t)}render(t,r,n,o,i){let{marginTop:a,marginRight:s,marginBottom:c,marginLeft:u,width:f,height:m}=o,{anchor:l,insetTop:p,insetRight:h,insetBottom:y,insetLeft:b}=this,{rx:w,ry:g,rx1y1:_,rx1y2:x,rx2y1:I,rx2y2:S}=this,v=u+b,T=f-s-h,O=a+p,R=m-c-y;return ze(l?"svg:line":_||x||I||S?"svg:path":"svg:rect",i).datum(0).call(ir,this,o,i).call(Wt,this).call(Vr,this,n).call(ar,this,{}).call(l==="left"?C=>C.attr("x1",v).attr("x2",v).attr("y1",O).attr("y2",R):l==="right"?C=>C.attr("x1",T).attr("x2",T).attr("y1",O).attr("y2",R):l==="top"?C=>C.attr("x1",v).attr("x2",T).attr("y1",O).attr("y2",O):l==="bottom"?C=>C.attr("x1",v).attr("x2",T).attr("y1",R).attr("y2",R):_||x||I||S?C=>C.call(v1,v,O,T,R,this):C=>C.attr("x",v).attr("y",O).attr("width",T-v).attr("height",R-O).attr("rx",w).attr("ry",g)).node()}};function T1(e){return new P1(e)}var M1={ariaLabel:"tip",fill:"var(--plot-background)",stroke:"currentColor"},n$=new Set(["geometry","href","src","ariaLabel","scales"]),O1=class extends lt{constructor(t,r={}){r.tip&&(r={...r,tip:!1}),r.title===void 0&&Tn(t)&&nh(t)&&(r={...r,title:St});let{x:n,y:o,x1:i,x2:a,y1:s,y2:c,anchor:u,preferredAnchor:f="bottom",monospace:m,fontFamily:l=m?"ui-monospace, monospace":void 0,fontSize:p,fontStyle:h,fontVariant:y,fontWeight:b,lineHeight:w=1,lineWidth:g=20,frameAnchor:_,format:x,textAnchor:I="start",textOverflow:S,textPadding:v=8,title:T,pointerSize:O=12,pathFilter:R="drop-shadow(0 3px 4px rgba(0,0,0,0.2))"}=r;super(t,{x:{value:i!=null&&a!=null?null:n,scale:"x",optional:!0},y:{value:s!=null&&c!=null?null:o,scale:"y",optional:!0},x1:{value:i,scale:"x",optional:a==null},y1:{value:s,scale:"y",optional:c==null},x2:{value:a,scale:"x",optional:i==null},y2:{value:c,scale:"y",optional:s==null},title:{value:T,optional:!0}},r,M1),this.anchor=ih(u,"anchor"),this.preferredAnchor=ih(f,"preferredAnchor"),this.frameAnchor=ya(_),this.textAnchor=_t(I,"middle"),this.textPadding=+v,this.pointerSize=+O,this.pathFilter=Mt(R),this.lineHeight=+w,this.lineWidth=+g,this.textOverflow=p1(S),this.monospace=!!m,this.fontFamily=Mt(l),this.fontSize=Ot(p),this.fontStyle=Mt(h),this.fontVariant=Mt(y),this.fontWeight=Mt(b);for(let C in M1)C in this.channels&&(this[C]=M1[C]);this.splitLines=y1(this),this.clipLine=b1(this),this.format=typeof x=="string"||typeof x=="function"?{title:x}:{...x}}render(t,r,n,o,i){let a=this,{x:s,y:c,fx:u,fy:f}=r,{ownerSVGElement:m,document:l}=i,{anchor:p,monospace:h,lineHeight:y,lineWidth:b}=this,{textPadding:w,pointerSize:g,pathFilter:_}=this,{marginTop:x,marginLeft:I}=o,{x1:S,y1:v,x2:T,y2:O,x:R=S??T,y:C=v??O}=n,k=u?u(t.fx)-I:0,z=f?f(t.fy)-x:0,[j,M]=Vo(this,o),U=r1(n,j),L=n1(n,M),re=h?_h:Ih,V=re(xs),q,H;"title"in n?(q=OO.call(this,{title:n.channels.title},r),H=s$):(q=OO.call(this,n.channels,r),H=c$);let W=ze("svg:g",i).call(ir,this,o,i).call(h1,this).call(ar,this,{x:R&&s,y:C&&c}).call(K=>K.selectAll().data(t).enter().append("g").attr("transform",Z=>`translate(${Math.round(U(Z))},${Math.round(L(Z))})`).call(Wt,this).call(Z=>Z.append("path").attr("filter",_)).call(Z=>Z.append("text").each(function(Y){let ee=hn(this);this.setAttribute("fill","currentColor"),this.setAttribute("fill-opacity",1),this.setAttribute("stroke","none");let A=H.call(a,Y,t,q,r,n);if(typeof A=="string")for(let B of a.splitLines(A))te(ee,{value:a.clipLine(B)});else{let B=new Set;for(let Q of A){let{label:E=""}=Q;E&&B.has(E)||(B.add(E),te(ee,Q))}}})));function te(K,{label:Z,value:Y,color:ee,opacity:A}){Z??="",Y??="";let B=ee!=null||A!=null,Q,E=b*100,[me]=ws(Z,E,re,V);if(me>=0)Z=Z.slice(0,me).trimEnd()+xs,Q=Y.trim(),Y="";else{(Z||!Y&&!B)&&(Y=" "+Y);let[oe]=ws(Y,E-re(Z),re,V);oe>=0&&(Q=Y.trim(),Y=Y.slice(0,oe).trimEnd()+xs)}let G=K.append("tspan").attr("x",0).attr("dy",`${y}em`).text("\u200B");Z&&G.append("tspan").attr("font-weight","bold").text(Z),Y&&G.append(()=>l.createTextNode(Y)),B&&G.append("tspan").text(" \u25A0").attr("fill",ee).attr("fill-opacity",A).style("user-select","none"),Q&&G.append("title").text(Q)}function be(){let{width:K,height:Z}=o.facet??o;W.selectChildren().each(function(Y){let{x:ee,width:A,height:B}=this.getBBox();A=Math.round(A),B=Math.round(B);let Q=p;if(Q===void 0){let G=U(Y)+k,oe=L(Y)+z,ue=G+A+g+w*20,Ge=oe+B+g+w*20;Q=ue&&Ce?Ge&&bt?a.preferredAnchor:bt?"bottom":"top":Ge&&bt?ue?"left":"right":(ue||Ce)&&(Ge||bt)?`${bt?"bottom":"top"}-${ue?"left":"right"}`:a.preferredAnchor}let E=this.firstChild,me=this.lastChild;if(E.setAttribute("d",a$(Q,g,w,A,B)),ee)for(let G of me.childNodes)G.setAttribute("x",-ee);me.setAttribute("y",`${+o$(Q,me.childNodes.length,y).toFixed(6)}em`),me.setAttribute("transform",`translate(${i$(Q,g,w,A,B)})`)}),W.attr("visibility",null)}return t.length&&(W.attr("visibility","hidden"),m.isConnected?Promise.resolve().then(be):typeof requestAnimationFrame<"u"&&requestAnimationFrame(be)),W.node()}};function NO(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=Pi(t,r)),new O1(e,{...n,x:t,y:r})}function o$(e,t,r){return/^top(?:-|$)/.test(e)?.94-r:-.29-t*r}function i$(e,t,r,n,o){switch(e){case"middle":return[-n/2,o/2];case"top-left":return[r,t+r];case"top":return[-n/2,t/2+r];case"top-right":return[-n-r,t+r];case"right":return[-t/2-n-r,o/2];case"bottom-left":return[r,-t-r];case"bottom":return[-n/2,-t/2-r];case"bottom-right":return[-n-r,-t-r];case"left":return[r+t/2,o/2]}}function a$(e,t,r,n,o){let i=n+r*2,a=o+r*2;switch(e){case"middle":return`M${-i/2},${-a/2}h${i}v${a}h${-i}z`;case"top-left":return`M0,0l${t},${t}h${i-t}v${a}h${-i}z`;case"top":return`M0,0l${t/2},${t/2}h${(i-t)/2}v${a}h${-i}v${-a}h${(i-t)/2}z`;case"top-right":return`M0,0l${-t},${t}h${t-i}v${a}h${i}z`;case"right":return`M0,0l${-t/2},${-t/2}v${t/2-a/2}h${-i}v${a}h${i}v${t/2-a/2}z`;case"bottom-left":return`M0,0l${t},${-t}h${i-t}v${-a}h${-i}z`;case"bottom":return`M0,0l${t/2},${-t/2}h${(i-t)/2}v${-a}h${-i}v${a}h${(i-t)/2}z`;case"bottom-right":return`M0,0l${-t},${-t}h${t-i}v${-a}h${i}z`;case"left":return`M0,0l${t/2},${-t/2}v${t/2-a/2}h${i}v${a}h${-i}v${t/2-a/2}z`}}function OO(e,t){let r={},n=this.format;n=CO(n,e,"x"),n=CO(n,e,"y"),this.format=n;for(let o in n){let i=n[o];if(!(i===null||i===!1))if(o==="fx"||o==="fy")r[o]=!0;else{let a=Nx(e,o);a&&(r[o]=a)}}for(let o in e){if(o in r||o in n||n$.has(o)||(o==="x"||o==="y")&&e.geometry)continue;let i=Nx(e,o);if(i){if(i.scale==null&&i.defaultScale==="color")continue;r[o]=i}}this.facet&&(t.fx&&!("fx"in n)&&(r.fx=!0),t.fy&&!("fy"in n)&&(r.fy=!0));for(let o in r){let i=this.format[o];if(typeof i=="string"){let a=r[o]?.value??t[o]?.domain()??[];this.format[o]=(Kt(a)?Ro:gn)(i)}else if(i===void 0||i===!0){let a=t[o];this.format[o]=a?.bandwidth?bl(a,a.domain()):Lo}}return r}function CO(e,t,r){if(!(r in e))return e;let n=`${r}1`,o=`${r}2`;if((n in e||!(n in t))&&(o in e||!(o in t)))return e;let i=Object.entries(e),a=e[r];return i.splice(i.findIndex(([s])=>s===r)+1,0,[n,a],[o,a]),Object.fromEntries(i)}function s$(e,t,{title:r}){return this.format.title(r.value[e],e)}function*c$(e,t,r,n,o){for(let i in r){if(i==="fx"||i==="fy"){yield{label:Rh(n,r,i),value:this.format[i](t[i],e)};continue}if(i==="x1"&&"x2"in r||i==="y1"&&"y2"in r)continue;let a=r[i];if(i==="x2"&&"x1"in r)yield{label:RO(n,r,"x"),value:kO(this.format.x2,r.x1,a,e)};else if(i==="y2"&&"y1"in r)yield{label:RO(n,r,"y"),value:kO(this.format.y2,r.y1,a,e)};else{let s=a.value[e],c=a.scale;if(!vn(s)&&c==null)continue;yield{label:Rh(n,r,i),value:this.format[i](s,e),color:c==="color"?o[i][e]:null,opacity:c==="opacity"?o[i][e]:null}}}}function kO(e,t,r,n){return r.hint?.length?`${e(r.value[n]-t.value[n],n)}`:`${e(t.value[n],n)}\u2013${e(r.value[n],n)}`}function RO(e,t,r){let n=Rh(e,t,`${r}1`,r),o=Rh(e,t,`${r}2`,r);return n===o?n:`${n}\u2013${o}`}function Rh(e,t,r,n=r){let o=t[r],i=e[o?.scale??r];return String(i?.label??o?.label??n)}function jo(e={}){let{facet:t,style:r,title:n,subtitle:o,caption:i,ariaLabel:a,ariaDescription:s}=e,c=Xc(e.className),u=e.marks===void 0?[]:EO(e.marks);u.push(...d$(u));let f=p$(t,e),m=new Map;for(let V of u){let q=FO(V,f,e);q&&m.set(V,q)}let l=new Map;f&&gl(l,[f],e),gl(l,m,e);let p=EO(h$(u,l,e));for(let V of p){let q=FO(V,f,e);q&&m.set(V,q)}u.unshift(...p);let h=H6(l,e);if(h!==void 0){let V=f?dh(h,f):void 0;for(let H of u){if(H.facet===null||H.facet==="super")continue;let W=m.get(H);W!==void 0&&(W.facetsIndex=H.fx!=null||H.fy!=null?dh(h,W):V)}let q=new Set;for(let{facetsIndex:H}of m.values())H?.forEach((W,te)=>{W?.length>0&&q.add(te)});h.forEach(0H.empty=!q.has(W):H=>H.empty=!1);for(let H of u)if(H.facet==="exclude"){let W=m.get(H);W!==void 0&&(W.facetsIndex=X6(W.facetsIndex))}}for(let V of He.keys())Lc(e[V])&&V!=="fx"&&V!=="fy"&&l.set(V,[]);let y=new Map;for(let V of u){if(y.has(V))throw new Error("duplicate mark; each mark must be unique");let{facetsIndex:q,channels:H}=m.get(V)??{},{data:W,facets:te,channels:be}=V.initialize(q,H,e);R1(be,e),y.set(V,{data:W,facets:te,channels:be})}let b=pl(gl(l,y,e),e),w=mM(b,u,e);U6(b,w);let g=Bx(b),{fx:_,fy:x}=g,I=_||x?zx(b,w):w,S=_||x?I$(g,w):w,v=Wc(e),T=v.document,O=fi("svg").call(T.documentElement),R=O;v.ownerSVGElement=O,v.className=c,v.projection=J6(e,I),v.path=function(){return bc(this.projection??iM(g))},v.filterFacets=(V,q)=>dh(h,{channels:q,groups:ph(V,q)}),v.getMarkState=V=>{let q=y.get(V),H=m.get(V);return{...q,channels:{...q.channels,...H?.channels}}},v.dispatchValue=V=>{R.value!==V&&(R.value=V,R.dispatchEvent(new v.document.defaultView.Event("input",{bubbles:!0})))};let C=new Set;for(let[V,q]of y)if(V.initializer!=null){let H=V.facet==="super"?S:I,W=V.initializer(q.data,q.facets,q.channels,g,H,v);if(W.data!==void 0&&(q.data=W.data),W.facets!==void 0&&(q.facets=W.facets),W.channels!==void 0){let{fx:te,fy:be,...K}=W.channels;l$(K),Object.assign(q.channels,K);for(let Z of Object.values(K)){let{scale:Y}=Z;Y!=null&&!UT(He.get(Y))&&(LO(Z,e),C.add(Y))}(te!=null||be!=null)&&m.set(V,!0)}}if(C.size){let V=new Map;gl(V,y,e,te=>C.has(te)),gl(l,y,e,te=>C.has(te));let q=S$(pl(V,e),b),{scales:H,...W}=Bx(q);Object.assign(b,q),Object.assign(g,W),Object.assign(g.scales,H)}let k,z;h!==void 0&&(k={x:_?.domain(),y:x?.domain()},h=Y6(h,k),z=W6(_,x,w));for(let[V,q]of y)q.values=V.scale(q.channels,g,v);let{width:j,height:M}=w;hn(O).attr("class",c).attr("fill","currentColor").attr("font-family","system-ui, sans-serif").attr("font-size",10).attr("text-anchor","middle").attr("width",j).attr("height",M).attr("viewBox",`0 0 ${j} ${M}`).attr("aria-label",a).attr("aria-description",s).call(V=>V.append("style").text(`:where(.${c}) { --plot-background: white; display: block; height: auto; height: intrinsic; max-width: 100%; } -:where(.${f} text), -:where(.${f} tspan) { +:where(.${c} text), +:where(.${c} tspan) { white-space: pre; -}`)).call(Mf,r);for(let V of u){let{channels:K,values:Y,facets:Z}=y.get(V);if(d===void 0||V.facet==="super"){let J=null;if(Z&&(J=Z[0],J=V.filter(J,K,Y),J.length===0))continue;let ye=V.render(J,g,Y,I,v);if(ye==null)continue;C.appendChild(ye)}else{let J;for(let ye of d){if(!(V.facetAnchor?.(d,F,ye)??!ye.empty))continue;let B=null;if(Z){let X=m.has(V);if(B=Z[X?ye.i:0],B=V.filter(B,K,Y),B.length===0)continue;!X&&B===Z[0]&&(B=b6(B)),B.fx=ye.x,B.fy=ye.y,B.fi=ye.i}let W=V.render(B,g,Y,T,v);if(W!=null){(J??=nn(C).append("g")).append(()=>W).datum(ye);for(let X of["aria-label","aria-description","aria-hidden","transform"])W.hasAttribute(X)&&(J.attr(X,W.getAttribute(X)),W.removeAttribute(X))}}J?.selectChildren().each(H)}}let U=d8(x,v,e),{figure:D=n!=null||o!=null||i!=null||U.length>0}=e;D&&(E=O.createElement("figure"),E.className=`${f}-figure`,E.style.maxWidth="initial",n!=null&&E.append(C8(O,n,"h2")),o!=null&&E.append(C8(O,o,"h3")),E.append(...U,C),i!=null&&E.append(eE(O,i)),"value"in C&&(E.value=C.value,delete C.value)),E.scale=VT(g.scales),E.legend=l8(x,v,e);let oe=yT();return oe>0&&nn(C).append("text").attr("x",j).attr("y",20).attr("dy","-1em").attr("text-anchor","end").attr("font-family","initial").text("\u26A0\uFE0F").append("title").text(`${oe.toLocaleString("en-US")} warning${oe===1?"":"s"}. Please check the console.`),E}function C8(e,t,r){if(t.ownerDocument)return t;let n=e.createElement(r);return n.append(t),n}function eE(e,t){let r=e.createElement("figcaption");return r.append(t),r}function A8(e){return e.flat(1/0).filter(t=>t!=null).map(tE)}function tE(e){return typeof e.render=="function"?e:new Lb(e)}var Lb=class extends ot{constructor(t){if(typeof t!="function")throw new TypeError("invalid mark; missing render function");super(),this.render=t}render(){}};function Db(e,t){for(let r in e)F8(e[r],t);return e}function F8(e,t){let{scale:r,transform:n=!0}=e;if(r==null||!n)return;let{type:o,percent:i,interval:a,transform:s=i?f=>f==null?NaN:f*100:Cg(a,o)}=t[r]??{};s!=null&&(e.value=We(e.value,s),e.transform=!1)}function rE(e){for(let t in e)Dg(t,e[t])}function Uu(e,t,r,n=p6){for(let{channels:o}of t.values())for(let i in o){let a=o[i],{scale:s}=a;if(s!=null&&n(s))if(s==="projection"){if(!XT(r)){let f=r.x?.domain===void 0,u=r.y?.domain===void 0;if(f||u){let[c,m]=QT(a);f&&$b(e,"x",c),u&&$b(e,"y",m)}}}else $b(e,s,a)}return e}function $b(e,t,r){let n=e.get(t);n!==void 0?n.push(r):e.set(t,[r])}function nE(e,t){if(e==null)return;let{x:r,y:n}=e;if(r==null&&n==null)return;let o=oi(e.data);if(o==null)throw new Error("missing facet data");let i={};r!=null&&(i.fx=gf(o,{value:r,scale:"fx"})),n!=null&&(i.fy=gf(o,{value:n,scale:"fy"})),Db(i,t);let a=Pd(o,i);return{channels:i,groups:a,data:e.data}}function P8(e,t,r){if(e.facet===null||e.facet==="super")return;let{fx:n,fy:o}=e;if(n!=null||o!=null){let f=oi(e.data??n??o);if(f===void 0)throw new Error(`missing facet data in ${e.ariaLabel}`);if(f===null)return;let u={};return n!=null&&(u.fx=gf(f,{value:n,scale:"fx"})),o!=null&&(u.fy=gf(f,{value:o,scale:"fy"})),Db(u,r),{channels:u,groups:Pd(f,u)}}if(t===void 0)return;let{channels:i,groups:a,data:s}=t;if(e.facet!=="auto"||e.data===s)return{channels:i,groups:a};s.length>0&&(a.size>1||a.size===1&&i.fx&&i.fy&&[...a][0][1].size>1)&&zi(oi(e.data))===zi(s)&&Cr(`Warning: the ${e.ariaLabel} mark appears to use faceted data, but isn\u2019t faceted. The mark data has the same length as the facet data and the mark facet option is "auto", but the mark data and facet data are distinct. If this mark should be faceted, set the mark facet option to true; otherwise, suppress this warning by setting the mark facet option to false.`)}function oE(e,t={}){return ai({...t,x:null,y:null},(r,n,o,i,a,s)=>s.getMarkState(e))}function iE(e){let t=[];for(let r of e){let n=r.tip;if(n){n===!0?n={}:typeof n=="string"&&(n={pointer:n});let{pointer:o,preferredAnchor:i}=n;o=/^x$/i.test(o)?uM:/^y$/i.test(o)?fb:cM,n=o(oE(r,n)),n.title=null,i===void 0&&(n.preferredAnchor=o===fb?"left":"bottom");let a=R8(r.data,n);a.facet=r.facet,a.facetAnchor=r.facetAnchor,t.push(a)}}return t}function aE(e,t,r){let{projection:n,x:o={},y:i={},fx:a={},fy:s={},axis:f,grid:u,facet:c={},facet:{axis:m=f,grid:l}=c,x:{axis:p=f,grid:d=p===null?null:u}=o,y:{axis:y=f,grid:x=y===null?null:u}=i,fx:{axis:w=m,grid:g=w===null?null:l}=a,fy:{axis:S=m,grid:b=S===null?null:l}=s}=r;(n||!mf(o)&&!k8("x",e))&&(p=d=null),(n||!mf(i)&&!k8("y",e))&&(y=x=null),t.has("fx")||(w=g=null),t.has("fy")||(S=b=null),p===void 0&&(p=!Qd(e,"x")),y===void 0&&(y=!Qd(e,"y")),w===void 0&&(w=!Qd(e,"fx")),S===void 0&&(S=!Qd(e,"fy")),p===!0&&(p="bottom"),y===!0&&(y="left"),w===!0&&(w=p==="top"||p===null?"bottom":"top"),S===!0&&(S=y==="right"||y===null?"left":"right");let T=[];return Zd(T,b,WM,s),Xd(T,S,zM,"right","left",c,s),Zd(T,g,ZM,a),Xd(T,w,KM,"top","bottom",c,a),Zd(T,x,YM,i),Xd(T,y,Mb,"left","right",r,i),Zd(T,d,XM,o),Xd(T,p,Ob,"bottom","top",r,o),T}function Xd(e,t,r,n,o,i,a){if(!t)return;let s=sE(t);a=fE(s?n:t,i,a);let{line:f}=a;(r===Mb||r===Ob)&&f&&!Ka(f)&&e.push(Nb(cE(a))),e.push(r(a)),s&&e.push(r({...a,anchor:o,label:null}))}function Zd(e,t,r,n){!t||Ka(t)||e.push(r(uE(t,n)))}function sE(e){return/^\s*both\s*$/i.test(e)}function fE(e,t,{line:r=t.line,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:f,fontVariant:u,ariaLabel:c,ariaDescription:m,label:l=t.label,labelAnchor:p,labelArrow:d=t.labelArrow,labelOffset:y}){return{anchor:e,line:r,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:f,fontVariant:u,ariaLabel:c,ariaDescription:m,label:l,labelAnchor:p,labelArrow:d,labelOffset:y}}function cE(e){let{anchor:t,line:r}=e;return{anchor:t,facetAnchor:t+"-empty",stroke:r===!0?void 0:r}}function uE(e,{stroke:t=hf(e)?e:void 0,ticks:r=lE(e)?e:void 0,tickSpacing:n,ariaLabel:o,ariaDescription:i}){return{stroke:t,ticks:r,tickSpacing:n,ariaLabel:o,ariaDescription:i}}function lE(e){switch(typeof e){case"number":return!0;case"string":return!hf(e)}return hn(e)||typeof e?.range=="function"}function Qd(e,t){let r=`${t}-axis `;return e.some(n=>n.ariaLabel?.startsWith(r))}function k8(e,t){for(let r of t)for(let n in r.channels){let{scale:o}=r.channels[n];if(o===e||o==="projection")return!0}return!1}function pE(e,t){for(let r in e){let n=e[r],o=t[r];n.label===void 0&&o&&(n.label=o.label)}return e}function mE({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:f}=Cd(r),u=e&&N8(e),c=t&&N8(t);return{marginTop:t?c[0]:n,marginRight:e?s-u[1]:o,marginBottom:t?f-c[1]:i,marginLeft:e?u[0]:a,inset:{marginTop:r.marginTop,marginRight:r.marginRight,marginBottom:r.marginBottom,marginLeft:r.marginLeft},width:s,height:f}}function N8(e){let t=e.domain();if(t.length===0)return[0,e.bandwidth()];let r=e(t[0]),n=e(t[t.length-1]);return nb.selectAll().data(t).enter().append(g?"circle":"path").call(Bt,this).call(g?T=>{T.attr("cx",f?I=>f[I]:x).attr("cy",u?I=>u[I]:w).attr("r",c?I=>c[I]:p)}:T=>{T.attr("transform",Of`translate(${f?I=>f[I]:x},${u?I=>u[I]:w})${m?I=>` rotate(${m[I]})`:d?` rotate(${d})`:""}`).attr("d",c&&l?I=>{let v=En();return l[I].draw(v,c[I]*c[I]*Math.PI),v}:c?I=>{let v=En();return y.draw(v,c[I]*c[I]*Math.PI),v}:l?I=>{let v=En();return l[I].draw(v,S),v}:(()=>{let I=En();return y.draw(I,S),I})())}).call(Ar,this,n)).node()}};function Za(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=ii(t,r)),new Jd(e,{...n,x:t,y:r})}var gE={ariaLabel:"line",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:1},eh=class extends ot{constructor(t,r={}){let{x:n,y:o,z:i,curve:a,tension:s}=r;super(t,{x:{value:n,scale:"x"},y:{value:o,scale:"y"},z:{value:bd(r),optional:!0}},r,gE),this.z=i,this.curve=E8(a,s),$u(this,r)}filter(t){return t}project(t,r,n){this.curve!==ju&&super.project(t,r,n)}render(t,r,n,o,i){let{x:a,y:s}=n,{curve:f}=this;return Ve("svg:g",i).call(Qt,this,o,i).call(Jt,this,r).call(u=>u.selectAll().data(oM(t,[a,s],this,n)).enter().append("path").call(Bt,this).call(nM,this,n).call(dM,this,n,i).attr("d",f===ju&&i.projection?bE(i.path(),a,s):Ux().curve(f).defined(c=>c>=0).x(c=>a[c]).y(c=>s[c]))).node()}};function bE(e,t,r){return t=za(t),r=za(r),n=>{let o=[],i=[o];for(let a of n)a===-1?(o=[],i.push(o)):o.push([t[a],r[a]]);return e({type:"MultiLineString",coordinates:i})}}function Ct(e,{x:t,y:r,...n}={}){return[t,r]=ii(t,r),new eh(e,{...n,x:t,y:r})}ot.prototype.plot=function({marks:e=[],...t}={}){return vo({...t,marks:[...e,this]})};var wE=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],$8={background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"};function SE(e,t){let r=[...t?[e.model]:[],`Predicted: ${e.predicted.toFixed(3)}`,`Observed: ${e.observed.toFixed(3)}`];return e.method==="discrete"&&e.events!==void 0&&e.total!==void 0&&(r[r.length-1]+=` ( ${e.events} / ${e.total} )`),r.join(` -`)}function IE(e){let r=[...new Set(e.data.map(p=>p.model))].length>1,n=r?wE:["#000000"],o=e.data.map(p=>({...p,tooltip:SE(p,r)})),i=[];e.references?.some(p=>p.type==="identity")&&i.push(Ct([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2,strokeDasharray:"4,4"})),i.push(Ct(o,{x:"predicted",y:"observed",stroke:"model",strokeWidth:2,title:"tooltip",tip:!0}));let a=o.filter(p=>p.method==="discrete");a.length>0&&i.push(Za(a,{x:"predicted",y:"observed",fill:"model",stroke:"white",strokeWidth:1.5,r:5,title:"tooltip",tip:!0}));let s=(e.distribution?.length??0)>0,f=vo({width:600,height:s?480:600,marginLeft:64,marginBottom:s?16:56,style:$8,x:{label:s?null:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6,axis:s?null:"bottom"},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:r,range:n},marks:i});if(!s||!e.distribution)return f;let u=e.distribution.map(p=>({...p,tooltip:`${r?`${p.model} -`:""}${p.count} observations in [${(p.midpoint-p.binWidth/2).toFixed(3)}, ${(p.midpoint+p.binWidth/2).toFixed(3)}]`})),c=new Set(e.distribution.map(p=>p.model)).size,m=vo({width:600,height:120,marginLeft:64,marginTop:0,marginBottom:48,style:$8,x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:null,grid:!1,ticks:3},color:{legend:!1,range:n},marks:[Vu(u,{x1:p=>p.midpoint-p.binWidth/2,x2:p=>p.midpoint+p.binWidth/2,y:"count",fill:"model",fillOpacity:1/Math.max(c,1),title:"tooltip",tip:!0})]}),l=document.createElement("div");return l.style.width="600px",l.style.maxWidth="100%",l.append(f,m),l}var L8=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],xr={width:600,height:500,margins:{top:28,right:28,bottom:58,left:66},background:"#ffffff",frame:{color:"#444444",width:1},typography:{fontFamily:"Arial, Helvetica, sans-serif",fontSize:12,axisTitleSize:14,axisTitleWeight:400,legendSize:12},axis:{color:"#444444",tickSize:5,tickPadding:7,ticks:6,numberFormat:".1f"},colors:L8,line:{width:2,dash:null},marker:{radius:2.5,fill:null,stroke:"#ffffff",strokeWidth:.5},reference:{color:"#BEBEBE",width:1.5,dash:"2,3"},legend:{position:"top",swatchWidth:12,columns:null},tip:{digits:3}};function _E(e){let t=e.theme??{};return{...xr,width:e.width??xr.width,height:e.height??xr.height,background:t.background??xr.background,colors:e.colors??xr.colors,margins:{...xr.margins,...t.margins},frame:{...xr.frame,...t.frame},typography:{...xr.typography,...t.typography},axis:{...xr.axis,...t.axis},line:{...xr.line,...t.line},marker:{...xr.marker,...t.marker},reference:{...xr.reference,...t.reference},legend:{...xr.legend,...t.legend},tip:{...xr.tip,...t.tip}}}function To(e,t={}){let r=t.allGroups??(typeof e=="number"?Array.from({length:e},(s,f)=>`group-${f+1}`):[...e]),n=_E(t);if(!Number.isFinite(n.width)||n.width<=0||!Number.isFinite(n.height)||n.height<=0)throw new Error("Renderer width and height must be positive finite numbers");if(!Number.isInteger(n.tip.digits)||n.tip.digits<0||n.tip.digits>20)throw new Error("Renderer tip digits must be an integer between 0 and 20");let o=r.length<=1?["#000000"]:[...n.colors];if(o.length1;return{theme:{...n,colors:i},groups:r,colors:i,colorByGroup:new Map(r.map((s,f)=>[s,i[f]])),showLegend:a}}function D8(e){if(!e.operatingPoint)return[];let t=e.operatingPoint.dimension,r=t==="probability_threshold"?e.type==="decision_curve"||e.type==="interventions_avoided"?"threshold":"cutoff":"ppcr";if(t==="probability_threshold"){let n=e.series.map(i=>i.id);if(n.length===0)return[];let o=null;for(let i of n){let s=e.data.filter(u=>u.seriesId===i).map(u=>u[r]).filter(u=>typeof u=="number"&&Number.isFinite(u)),f=new Set(s);if(o===null)o=f;else{let u=o;o=new Set(Array.from(u).filter(c=>f.has(c)))}}return Array.from(o??[]).sort((i,a)=>i-a)}else{let n=e.data.map(i=>i[r]).filter(i=>typeof i=="number"&&Number.isFinite(i));return[...new Set(n)].sort((i,a)=>i-a)}}function vE(e,t){let r=e.series.filter(o=>t.has(o.display.group)),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId))}}function Af(e,t,r,n,o){let i=Gu(e),a=n;if(i.length<=1)return r(e,t,a,g=>{a=g,o&&o(g)});let s={...t,allGroups:i,showLegend:!1},f=To(i,s),{theme:u,colorByGroup:c}=f,m=new Map(e.series.map(g=>[g.display.group,g.display.label])),l=new Set(i),p=document.createElement("div");p.className="rtichoke-legend-chart",p.style.maxWidth=`${u.width}px`;let d=document.createElement("div");d.className="rtichoke-legend",d.style.paddingLeft=`${u.margins.left}px`,d.setAttribute("aria-label","Chart legend");let y=new Map;i.forEach(g=>{let S=document.createElement("button");S.type="button",S.className="rtichoke-legend-item",S.setAttribute("aria-pressed","true");let b=m.get(g)??g;S.setAttribute("aria-label",`Toggle series ${b}`);let T=document.createElement("span");T.className="rtichoke-legend-swatch";let I=document.createElement("span");I.className="rtichoke-legend-line",I.style.backgroundColor=c.get(g)??"#000000",T.append(I);let v=document.createElement("span");v.className="rtichoke-legend-label",v.textContent=b,S.append(T,v),d.append(S),y.set(g,S)});let x=document.createElement("div");x.className="rtichoke-legend-content";let w=()=>{let g=vE(e,l),S=r(g,s,a,b=>{a=b,o&&o(b)});x.replaceChildren(S)};return i.forEach(g=>{let S=y.get(g);S.addEventListener("click",()=>{if(l.has(g)){if(l.size<=1)return;l.delete(g),S.setAttribute("aria-pressed","false")}else l.add(g),S.setAttribute("aria-pressed","true");w()})}),p.append(d,x),w(),p}function Qa(e,t,r,n,o){if(!e.operatingPoint)return r(e,void 0);let i=D8(e);if(i.length===0)return r(e,void 0);let a=To(Gu(e),t),{theme:s}=a,f=document.createElement("div");f.className="rtichoke-operating-point-chart",f.style.maxWidth=`${s.width}px`;let u=document.createElement("div");u.className="rtichoke-operating-point-control",u.style.marginLeft=`${s.margins.left}px`,u.style.marginRight=`${s.margins.right}px`;let c=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"Predicted positives condition rate (PPCR)",m=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"PPCR",l=document.createElement("label");l.className="rtichoke-operating-point-label";let p=document.createElement("span");p.textContent=`${m}: `;let d=document.createElement("span");d.className="rtichoke-operating-point-value";let y=document.createElement("input");y.type="range",y.className="rtichoke-operating-point-slider",y.min="0",y.max=String(i.length-1),y.step="1",y.setAttribute("aria-label",c);let x=0;if(n!==void 0){let T=i.indexOf(n);T!==-1&&(x=T)}let w=i[x];y.value=String(x);let g=w.toFixed(s.tip.digits);d.textContent=g,y.setAttribute("aria-valuetext",g),o&&o(w),l.append(p,d),u.append(l,y);let S=document.createElement("div");S.className="rtichoke-operating-point-content";let b=T=>{S.replaceChildren(r(e,T))};return y.addEventListener("input",()=>{let T=Number(y.value),I=i[T],v=I.toFixed(s.tip.digits);d.textContent=v,y.setAttribute("aria-valuetext",v),o&&o(I),b(I)}),f.append(S,u),b(w),f}function TE(e){return new Map(e.series.map(t=>[t.id,t.display]))}function Gu(e){return[...new Set(e.series.map(t=>t.display.group))]}function th(e,t){let r=TE(e);return t.map(n=>({...n,group:r.get(n.seriesId).group,label:r.get(n.seriesId).label}))}function Ji(e,t){return t.filter(([,r])=>r!==void 0).map(([r,n])=>`${r}: ${typeof n=="number"?n.toFixed(e):String(n)}`).join(` -`)}function rh(e,t){let{theme:r}=e,n=new Map(t.series.map(o=>[o.display.group,o.display.label]));return{width:r.width,height:r.height,marginTop:r.margins.top,marginRight:r.margins.right,marginBottom:r.margins.bottom,marginLeft:r.margins.left,style:{background:r.background,color:r.axis.color,fontFamily:r.typography.fontFamily,fontSize:`${r.typography.fontSize}px`},color:{legend:e.showLegend,domain:e.groups,range:e.colors,tickFormat:o=>n.get(o)??o}}}function Qi(e,t,r){return{label:t,domain:r,grid:!1,line:!0,ticks:e.axis.ticks,tickSize:e.axis.tickSize,tickPadding:e.axis.tickPadding,tickFormat:e.axis.numberFormat}}function Vb(e,t){let r={stroke:t.reference.color,strokeWidth:t.reference.width,strokeDasharray:t.reference.dash},n=[];for(let o of e.references??[])o.type==="identity"?n.push(Ct([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",...r,title:o.label})):o.type==="horizontal"&&o.value!==void 0?n.push(li([o.value],{...r,title:o.label})):o.type==="path"&&o.points&&n.push(Ct(o.points,{x:"x",y:"y",...r,title:o.label}));return n}function nh(e,t){return e}function ME(e,t,r=40){let n=new Map;for(let i of e){let a=t(i),s=n.get(a);s||(s=[],n.set(a,s)),s.push(i)}let o=[];for(let i of n.values()){let a=i.length;if(a<=r)o.push(...i);else{let s=new Set;for(let f=0;fc.seriesId,40),a=n.theme,s=o?.marker?.radius??a.marker.radius,f=o?.marker?.stroke??a.marker.stroke,u=o?.marker?.strokeWidth??a.marker.strokeWidth;return Za(i,{ariaLabel:"ordinary-point",x:t,y:r,fill:"group",stroke:f,strokeWidth:u,r:s,title:c=>c.title,tip:!0})}function kf(e,t,r,n,o){let i=n.groups.length>1,a=o?.marker?.fill??(i?"group":"#f6e3be"),s=o?.marker?.stroke??"#1a1a1a",f=o?.marker?.strokeWidth??2.5,u=o?.marker?.radius??7.5;return Za(e,{className:"rtichoke-selected-operating-point",x:t,y:r,fill:a,stroke:s,strokeWidth:f,r:u,title:c=>c.title,tip:!0})}function ea(e,t){let r=vo(e);for(let n of r.querySelectorAll('[aria-label$="axis label"] text'))n.style.fontSize=`${t.typography.axisTitleSize}px`,n.style.fontWeight=String(t.typography.axisTitleWeight);for(let n of r.querySelectorAll('[aria-label="frame"]'))n.setAttribute("stroke",t.frame.color);if(r instanceof HTMLElement){r.style.fontSize=`${t.typography.legendSize}px`;for(let n of r.querySelectorAll('svg[width="15"], div[class*="-swatches"] svg'))n.setAttribute("width",String(t.legend.swatchWidth)),n.setAttribute("height","10")}return r}function OE(e,t={},r){Lo(e);let n=To(Gu(e),t),{theme:o}=n,i=e.operatingPoint?.dimension,a=th(e,e.data).map(f=>{let u=1-f.specificity,c=[["Series",f.label]];return i==="ppcr"?(f.ppcr!==void 0&&c.push(["PPCR",f.ppcr]),c.push(["Cutoff",f.cutoff])):(c.push(["Cutoff",f.cutoff]),f.ppcr!==void 0&&c.push(["PPCR",f.ppcr])),c.push(["Sensitivity",f.sensitivity],["Specificity",f.specificity],["False Positive Rate",u]),{...f,false_positive_rate:u,title:Ji(o.tip.digits,c)}}),s=Vb(e,o);if(s.push(Ct(a,{x:"false_positive_rate",y:"sensitivity",z:"seriesId",stroke:"group",strokeWidth:o.line.width,strokeDasharray:o.line.dash??void 0,title:f=>f.title,tip:!0}),Pf(a,"false_positive_rate","sensitivity",n,t.theme)),r!==void 0&&e.operatingPoint){let f=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr",u=a.filter(c=>c[f]===r);u.length>0&&s.push(kf(u,"false_positive_rate","sensitivity",n,t.theme))}return ea({...rh(n,e),x:Qi(o,e.xAxis.label,e.xAxis.domain),y:Qi(o,e.yAxis.label,e.yAxis.domain),marks:nh(s,o)},o)}function Ub(e,t={}){return Af(e,t,(r,n,o,i)=>Nf(r,(a,s,f)=>Qa(a,n,(u,c)=>OE(u,n,c),s,f),o,i))}function jb(e,t={}){Lo(e);let r=To(Gu(e),t),{theme:n}=r,o=th(e,e.data).map(y=>({...y,title:Ji(n.tip.digits,[["Series",y.label],["Predicted",y.predicted],["Observed",y.observed],["Events",y.events],["Total",y.total]])})),i=Vb(e,n);i.push(Ct(o,{x:"predicted",y:"observed",z:"seriesId",stroke:"group",strokeWidth:n.line.width,strokeDasharray:n.line.dash??void 0,title:y=>y.title,tip:!0}));let a=o.filter(y=>y.method==="discrete");a.length>0&&i.push(Za(a,{x:"predicted",y:"observed",fill:n.marker.fill??"group",stroke:n.marker.stroke,strokeWidth:n.marker.strokeWidth,r:n.marker.radius,title:y=>y.title,tip:!0}));let s=(e.distribution?.length??0)>0,f=s?Math.round(n.height*.8):n.height,u=o.map(y=>y.observed).filter(Number.isFinite),c=e.yAxis.domain??[Math.min(0,...u),Math.max(1,...u)],m=ea({...rh(r,e),height:f,marginBottom:s?8:n.margins.bottom,x:s?{...Qi(n,e.xAxis.label,e.xAxis.domain),axis:null,label:null}:Qi(n,e.xAxis.label,e.xAxis.domain),y:Qi(n,e.yAxis.label,c),marks:nh(i,n)},n);if(!s||!e.distribution)return m;let l=th(e,e.distribution).map(y=>({...y,title:Ji(n.tip.digits,[["Series",y.label],["Midpoint",y.midpoint],["Count",y.count]])})),p=ea({...rh(r,e),height:n.height-f,marginTop:0,marginBottom:n.margins.bottom,x:Qi(n,e.xAxis.label,e.xAxis.domain),y:{label:null,grid:!1,ticks:3,tickSize:n.axis.tickSize,tickPadding:n.axis.tickPadding},color:{legend:!1,domain:r.groups,range:r.colors},marks:nh([Vu(l,{x1:y=>y.midpoint-y.binWidth/2,x2:y=>y.midpoint+y.binWidth/2,y:"count",fill:"group",fillOpacity:1/Math.max(r.groups.length,1),title:y=>y.title,tip:!0})],n)},n),d=document.createElement("div");return d.className="rtichoke-calibration",d.style.width=`${n.width}px`,d.style.maxWidth="100%",d.append(m,p),d}function RE(e,t,r,n,o){Lo(e);let i=To(Gu(e),t),{theme:a}=i,s=e.operatingPoint?.dimension,f=th(e,e.data).map(c=>{let m=c,l=[["Series",c.label]];return e.type==="precision_recall"?(s==="ppcr"?(m.ppcr!==void 0&&l.push(["PPCR",m.ppcr]),l.push(["Cutoff",m.cutoff])):(l.push(["Cutoff",m.cutoff]),m.ppcr!==void 0&&l.push(["PPCR",m.ppcr])),l.push(["Sensitivity",m.sensitivity],["PPV",m.ppv])):e.type==="gains"?(s==="probability_threshold"?(l.push(["Cutoff",m.cutoff]),l.push(["PPCR",m.ppcr])):(l.push(["PPCR",m.ppcr]),l.push(["Cutoff",m.cutoff])),l.push(["Sensitivity",m.sensitivity])):e.type==="lift"&&(s==="probability_threshold"?(l.push(["Cutoff",m.cutoff]),l.push(["PPCR",m.ppcr])):(l.push(["PPCR",m.ppcr]),l.push(["Cutoff",m.cutoff])),l.push(["Lift",m.lift])),{...c,title:Ji(a.tip.digits,l)}}),u=Vb(e,a);if(u.push(Ct(f,{x:r,y:n,z:"seriesId",stroke:"group",strokeWidth:a.line.width,strokeDasharray:a.line.dash??void 0,title:c=>c.title,tip:!0}),Pf(f,r,n,i,t.theme)),o!==void 0&&e.operatingPoint){let m=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr",l=f.filter(p=>p[m]===o);l.length>0&&u.push(kf(l,r,n,i,t.theme))}return ea({...rh(i,e),x:Qi(a,e.xAxis.label,e.xAxis.domain),y:Qi(a,e.yAxis.label,e.yAxis.domain),marks:nh(u,a)},a)}function CE(e){return[...new Set(e.series.map(t=>t.horizon).filter(t=>t!==void 0))]}function AE(e,t){let r=e.series.filter(o=>o.horizon===void 0||o.horizon===t),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId)),references:e.references?.filter(o=>o.scope!=="population_horizon"||o.horizon===t)}}function Nf(e,t,r,n){let o=CE(e);if(o.length<=1)return t(e,r,n);let i=r,a=document.createElement("div");a.className="rtichoke-horizon-chart";let s=document.createElement("label");s.className="rtichoke-horizon-control",s.textContent="Fixed Time Horizon: ";let f=document.createElement("select");f.className="rtichoke-horizon-select",f.setAttribute("aria-label","Fixed Time Horizon");for(let m of o){let l=document.createElement("option");l.value=String(m),l.textContent=String(m),f.append(l)}s.append(f);let u=document.createElement("div"),c=m=>{u.replaceChildren(t(AE(e,m),i,l=>{i=l,n&&n(l)}))};return f.addEventListener("change",()=>c(Number(f.value))),a.append(s,u),c(o[0]),a}function Bb(e,t,r,n){return Af(e,t,(o,i,a,s)=>Nf(o,(f,u,c)=>Qa(f,i,(m,l)=>RE(m,i,r,n,l),u,c),a,s))}function Gb(e,t={}){return Bb(e,t,"sensitivity","ppv")}function zb(e,t={}){return Bb(e,t,"ppcr","sensitivity")}function Kb(e,t={}){return Bb(e,t,"ppcr","lift")}function qb(e,t={}){return Lo(e),Af(e,t,(r,n,o,i)=>Nf(r,(a,s,f)=>Qa(a,n,(u,c)=>PE(u,n,c),s,f),o,i))}function PE(e,t,r){let n=[...new Set(e.series.map(p=>p.display.group))],o=To(n,{...t,showLegend:!1}),{theme:i}=o,a=new Map(e.series.map(p=>[p.id,p.display])),s=new Map(e.series.map(p=>[p.display.group,p.display.label])),f=e.data.map(p=>({...p,group:a.get(p.seriesId).group,label:a.get(p.seriesId).label,title:Ji(i.tip.digits,[["Series",a.get(p.seriesId).label],["Threshold",p.threshold],["Net Benefit",p.netBenefit]])})),u={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},c={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:"4,3"},m=[];for(let p of e.references)p.benchmark==="treat_none"?m.push(li([0],{...u,title:()=>p.label??"Treat None"})):m.push(Ct(p.points,{x:"x",y:"y",...c,title:()=>p.label??`Treat All \u2014 ${p.population}`}));if(m.push(Ct(f,{x:"threshold",y:"netBenefit",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),Pf(f,"threshold","netBenefit",o,t.theme)),r!==void 0&&e.operatingPoint){let p=f.filter(d=>d.threshold===r);p.length>0&&m.push(kf(p,"threshold","netBenefit",o,t.theme))}let l=(p,d)=>({label:p,domain:d,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat});return ea({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:p=>s.get(p)??p},x:l(e.xAxis.label,e.xAxis.domain),y:l(e.yAxis.label,e.yAxis.domain),marks:m},i)}function Hb(e,t={}){return Lo(e),Af(e,t,(r,n,o,i)=>Nf(r,(a,s,f)=>Qa(a,n,(u,c)=>kE(u,n,c),s,f),o,i))}function kE(e,t,r){let n=[...new Set(e.series.map(p=>p.display.group))],o=To(n,{...t,showLegend:!1}),{theme:i}=o,a=new Map(e.series.map(p=>[p.id,p.display])),s=new Map(e.series.map(p=>[p.display.group,p.display.label])),f=e.data.map(p=>({...p,group:a.get(p.seriesId).group,label:a.get(p.seriesId).label,title:Ji(i.tip.digits,[["Series",a.get(p.seriesId).label],["Threshold",p.threshold],["Interventions Avoided",p.interventionsAvoided]])})),u={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},c={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:"4,3"},m=[];for(let p of e.references)p.benchmark==="treat_all"?m.push(li([0],{...u,title:()=>p.label??"Treat All"})):m.push(Ct(p.points,{x:"x",y:"y",...c,title:()=>p.label??`Treat None \u2014 ${p.population}`}));if(m.push(Ct(f,{x:"threshold",y:"interventionsAvoided",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),Pf(f,"threshold","interventionsAvoided",o,t.theme)),r!==void 0&&e.operatingPoint){let p=f.filter(d=>d.threshold===r);p.length>0&&m.push(kf(p,"threshold","interventionsAvoided",o,t.theme))}let l=(p,d)=>({label:p,domain:d,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat});return ea({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:p=>s.get(p)??p},x:l(e.xAxis.label,e.xAxis.domain),y:l(e.yAxis.label,e.yAxis.domain),marks:m},i)}var Pr="\u2014",NE=[{id:"sensitivity",defaultLabel:"Sensitivity"},{id:"specificity",defaultLabel:"Specificity"},{id:"ppv",defaultLabel:"PPV"},{id:"npv",defaultLabel:"NPV"},{id:"lift",defaultLabel:"Lift"},{id:"net_benefit",defaultLabel:"Net Benefit"}];function Un(e,t,r){let n=e.createElement("td"),o=e.createElement("span");return o.className="rtichoke-performance-table__cell-text",o.textContent=t,n.append(o),r&&(n.className=r),n}function ut(e,t,r){let n=e.createElement("th");return n.scope=r?.scope??"col",r?.colSpan&&(n.colSpan=r.colSpan),r?.rowSpan&&(n.rowSpan=r.rowSpan),n.textContent=t,r?.className&&(n.className=r.className),r?.ariaLabel&&n.setAttribute("aria-label",r.ariaLabel),n}function FE(e){let t=new Map(e.map(a=>[a.metricId,a.estimate])),r=t.get("true_positives"),n=t.get("true_negatives"),o=t.get("false_positives"),i=t.get("false_negatives");return r==null||isNaN(r)||n===void 0||n===null||isNaN(n)||o===void 0||o===null||isNaN(o)||i===void 0||i===null||isNaN(i)?null:{tp:r,tn:n,fp:o,fn:i}}function ta(e,t,r,n){let o=e.createElement("td");o.className=n;let i=e.createElement("span");i.className="rtichoke-performance-table__confusion-val",i.textContent=oh(t);let a=e.createElement("span");if(a.className="rtichoke-performance-table__confusion-pct",r>0&&!isNaN(t)&&!isNaN(r)){let s=t/r*100;a.textContent=`${s.toFixed(2)}%`}else a.textContent=Pr;return o.append(i,a),o}var EE=0;function V8(e){return e.split("_").map((t,r)=>r===0?t.charAt(0).toUpperCase()+t.slice(1):t).join(" ")}function oh(e){return Number.isInteger(e)?e.toString():new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(e)}function $E(e){return e.toFixed(2)}function LE(e){if(e.length<=1)return 2;let t=2;for(;t<=6;){let r=e.map(o=>o.toFixed(t));if(new Set(r).size===new Set(e).size)return t;t++}return t}function DE(e,t){if(!e||e.estimate===null||e.estimate===void 0||isNaN(e.estimate))return Pr;let r=t(e.estimate);if(e.lower===void 0&&e.upper===void 0)return r;let n=e.lower===void 0||e.lower===null||isNaN(e.lower)?Pr:t(e.lower),o=e.upper===void 0||e.upper===null||isNaN(e.upper)?Pr:t(e.upper);return`${r} [${n}, ${o}]`}function zu(e,t,r,n=!1,o=!1,i="positive"){if(isNaN(r)||!isFinite(r))return;let a=t.createElement("div");a.className="rtichoke-performance-table__bar";let s=t.createElement("div");if(s.className="rtichoke-performance-table__bar-fill",n){let f=Math.min(Math.max(r,0),50);s.style.width=`${f}%`,o?(s.classList.add("rtichoke-performance-table__bar-fill--negative"),s.style.right="50%",s.style.left="auto"):(s.classList.add("rtichoke-performance-table__bar-fill--positive"),s.style.left="50%",s.style.right="auto")}else{let f=Math.min(Math.max(r,0),100);s.style.width=`${f}%`,i==="neutral"?s.classList.add("rtichoke-performance-table__bar-fill--neutral"):s.classList.add("rtichoke-performance-table__bar-fill--positive")}a.append(s),e.append(a)}function Yb(e,t=globalThis.document){A0(e);let r=t.createElement("div");if(r.className="rtichoke-performance-table",e.title){let B=t.createElement("div");B.className="rtichoke-performance-table__title",B.textContent=e.title,r.append(B)}let n=t.createElement("div");n.className="rtichoke-performance-table__scroll";let o=t.createElement("table");o.className="rtichoke-performance-table__table";let i=new Map(e.evaluations.map(B=>[B.id,B])),a=new Set(e.evaluations.map(B=>B.model).filter(Boolean)),s=new Set(e.evaluations.map(B=>B.population).filter(Boolean)),f=a.size>1,u=s.size>1,c=f,m=u||!f&&a.size===0&&s.size>1,l=e.evaluations.some(B=>B.label?!!(f&&B.label!==B.model||u&&B.label!==B.population||!f&&!u&&B.label!==B.model&&B.label!==B.population):!1),p=e.rows.some(B=>B.horizon!==void 0),d=e.rows.some(B=>B.context?.censoringHeuristic!==void 0),y=e.rows.some(B=>B.context?.competingEventHeuristic!==void 0),x=new Set(e.rows.map(B=>B.operatingPoint.type)),w=x.size===1&&x.has("probability_threshold"),g=x.size===1&&x.has("ppcr"),S=new Set(e.metrics.map(B=>B.id)),b=S.has("predicted_positives"),T=S.has("ppcr"),I=b&&(T||g),v=w||!g&&x.has("probability_threshold"),O=I,C=g&&!I,E=!w&&!g&&!I,A=e.rows.filter(B=>B.operatingPoint.type==="probability_threshold").map(B=>B.operatingPoint.value),F=LE(A),H=NE.map(B=>{let W=e.metrics.find(X=>X.id===B.id);return W?{id:W.id,label:W.label||B.defaultLabel}:null}).filter(B=>B!==null),j=new Set,M=H.filter(B=>j.has(B.label)?!1:(j.add(B.label),!0)),U=0,D=0;for(let B of e.rows)for(let W of B.values)if(W.metricId==="lift"&&W.estimate!==null&&W.estimate!==void 0&&isFinite(W.estimate)&&W.estimate>U&&(U=W.estimate),W.metricId==="net_benefit"&&W.estimate!==null&&W.estimate!==void 0&&isFinite(W.estimate)){let X=Math.abs(W.estimate);X>D&&(D=X)}let oe=++EE,V=t.createElement("thead");V.className="rtichoke-performance-table__header";let K=t.createElement("tr"),Y=t.createElement("tr"),Z=1;if(Y.append(ut(t,"",{ariaLabel:"Row details",className:"rtichoke-performance-table__toggle-header"})),c&&(Z++,Y.append(ut(t,"Model"))),m&&(Z++,Y.append(ut(t,"Population"))),l&&(Z++,Y.append(ut(t,"Evaluation"))),v&&(Z++,Y.append(ut(t,"Probability Threshold"))),O&&(Z++,Y.append(ut(t,"Predicted Positives"))),C&&(Z++,Y.append(ut(t,"PPCR"))),E&&(Z++,Y.append(ut(t,"Operating Point"))),p&&(Z++,Y.append(ut(t,"Time Horizon"))),d&&(Z++,Y.append(ut(t,"Censoring"))),y&&(Z++,Y.append(ut(t,"Competing Event"))),M.length>0){let B=ut(t,"",{colSpan:Z,className:"rtichoke-performance-table__spanner--empty"});K.append(B)}if(M.length>0){let B=ut(t,"Performance Metrics",{colSpan:M.length,className:"rtichoke-performance-table__spanner"});K.append(B);for(let W of M)Y.append(ut(t,W.label,{className:"rtichoke-performance-table__metric-header"}))}V.append(K),V.append(Y),o.append(V);let J=Z+M.length,ye=t.createElement("tbody");for(let B=0;B0?"100.00%":Pr,Th.append(Mh,Oh),Uf.append(Th),Wu.append(Uf),qt.append(Wu),xe.append(qt),ae.append(xe),$.append(ae),G.addEventListener("click",()=>{if(!$)return;let di=G.getAttribute("aria-expanded")==="true";G.setAttribute("aria-expanded",di?"false":"true"),G.setAttribute("aria-label",di?"Show confusion matrix detail":"Hide confusion matrix detail"),G.textContent=di?"\u25B8":"\u25BE",$.hidden=di})}le.append(re),c&&le.append(Un(t,X?.model??Pr,"rtichoke-performance-table__model")),m&&le.append(Un(t,X?.population??Pr,"rtichoke-performance-table__population")),l&&le.append(Un(t,X?.label??X?.id??Pr,"rtichoke-performance-table__evaluation"));let ke=new Map(W.values.map(G=>[G.metricId,G]));if(v){let G=W.operatingPoint.type==="probability_threshold"?W.operatingPoint.value:void 0,ae=G!==void 0?G.toFixed(F):Pr;le.append(Un(t,ae,"rtichoke-performance-table__op"))}if(O){let G=ke.get("predicted_positives")?.estimate,ae=ke.get("ppcr")?.estimate??(W.operatingPoint.type==="ppcr"?W.operatingPoint.value:void 0),xe=Pr,Ge=NaN;if(G!=null&&ae!==void 0&&ae!==null){let qt=oh(G),ts=(ae*100).toFixed(2);xe=`${qt} (${ts}%)`,Ge=ae*100}else ae!=null&&(xe=`${(ae*100).toFixed(2)}%`,Ge=ae*100);let Pt=Un(t,xe,"rtichoke-performance-table__op");isNaN(Ge)||zu(Pt,t,Ge,!1,!1,"neutral"),le.append(Pt)}if(C){let G=W.operatingPoint.type==="ppcr"?W.operatingPoint.value:ke.get("ppcr")?.estimate,ae=G!=null?`PPCR ${G.toFixed(2)}`:Pr,xe=Un(t,ae,"rtichoke-performance-table__op");G!=null&&zu(xe,t,G*100,!1,!1,"neutral"),le.append(xe)}if(E){let G=W.operatingPoint.type==="ppcr"?`PPCR ${W.operatingPoint.value.toFixed(2)}`:`Threshold ${W.operatingPoint.value.toFixed(F)}`;le.append(Un(t,G,"rtichoke-performance-table__op"))}if(p&&le.append(Un(t,W.horizon!==void 0?oh(W.horizon):Pr,"rtichoke-performance-table__horizon")),d){let G=W.context?.censoringHeuristic;le.append(Un(t,G?V8(G):Pr,"rtichoke-performance-table__context"))}if(y){let G=W.context?.competingEventHeuristic;le.append(Un(t,G?V8(G):Pr,"rtichoke-performance-table__context"))}for(let G of M){let ae=ke.get(G.id),xe=DE(ae,$E),Ge=Un(t,xe,"rtichoke-performance-table__metric");if(Ge.dataset.metricId=G.id,ae&&ae.estimate!==null&&ae.estimate!==void 0&&isFinite(ae.estimate)){let Pt=ae.estimate;if(["sensitivity","specificity","ppv","npv"].includes(G.id))zu(Ge,t,Pt*100);else if(G.id==="lift"){let qt=U>0?Pt/U*100:0;zu(Ge,t,qt)}else if(G.id==="net_benefit"&&D>0){let qt=Pt<0,ts=Math.abs(Pt)/D*50;zu(Ge,t,ts,!0,qt)}}le.append(Ge)}ye.append(le),$&&ye.append($)}return o.append(ye),n.append(o),r.append(n),r}var VE="\u2014";function Wb(e,t,r){let n=e.createElement("td");return n.textContent=t,r&&(n.className=r),n}function UE(e,t){let r=e.createElement("th");return r.scope="col",r.textContent=t,r}function jE(e){return e===null?VE:e.toFixed(2)}function Xb(e,t=globalThis.document){P0(e);let r=t.createElement("div");if(r.className="rtichoke-summary-metrics",e.title){let p=t.createElement("div");p.className="rtichoke-summary-metrics__title",p.textContent=e.title,r.append(p)}let n=[];for(let p of e.metrics)"horizon"in p&&p.horizon!==void 0&&(n.includes(p.horizon)||n.push(p.horizon));let o=n.length>0?n[0]:void 0,i=[];if(n.length>1){let p=t.createElement("label");p.className="rtichoke-horizon-control",p.textContent="Fixed Time Horizon: ";let d=t.createElement("select");d.className="rtichoke-horizon-select",d.setAttribute("aria-label","Fixed Time Horizon");for(let y of n){let x=t.createElement("option");x.value=String(y),x.textContent=String(y),d.append(x)}d.value=String(o),d.addEventListener("change",()=>{o=Number(d.value),l()}),p.append(d),r.append(p)}let a=t.createElement("table");a.className="rtichoke-summary-metrics__table";let s=t.createElement("thead"),f=t.createElement("tr");for(let p of["Owner","Metric","Estimate"])f.append(UE(t,p));s.append(f),a.append(s);let u=new Map(e.evaluations.map(p=>[p.id,p])),c=new Map(e.populations.map(p=>[p.id,p])),m=t.createElement("tbody");for(let p of e.metrics){let d=t.createElement("tr"),y="",x="",w;if(p.metric==="auroc"){let S=u.get(p.owner.evaluationId);y=S.label??S.model??S.population??S.id,x="AUROC",d.dataset.metric="auroc",d.dataset.evaluationId=p.owner.evaluationId}else p.metric==="prevalence"?(y=c.get(p.owner.populationId).label,x="Prevalence",d.dataset.metric="prevalence",d.dataset.populationId=p.owner.populationId):p.metric==="event_risk"&&(y=c.get(p.owner.populationId).label,x="Event Risk",w=p.horizon,d.dataset.metric="event_risk",d.dataset.populationId=p.owner.populationId,d.dataset.horizon=String(p.horizon));d.append(Wb(t,y,"rtichoke-summary-metrics__owner"),Wb(t,x,"rtichoke-summary-metrics__metric"));let g=Wb(t,jE(p.estimate),"rtichoke-summary-metrics__estimate");p.estimate===null?g.dataset.unavailable="true":g.dataset.estimate=String(p.estimate),d.append(g),i.push({element:d,horizon:w}),m.append(d)}a.append(m),r.append(a);function l(){for(let{element:p,horizon:d}of i)d===void 0||d===o?p.style.display="":p.style.display="none"}return l(),r}function BE(e){switch(e.errorType){case R.ArrayContains:return"Expected array to contain at least one matching value";case R.ArrayMaxContains:return`Expected array to contain no more than ${e.schema.maxContains} matching values`;case R.ArrayMinContains:return`Expected array to contain at least ${e.schema.minContains} matching values`;case R.ArrayMaxItems:return`Expected array length to be less or equal to ${e.schema.maxItems}`;case R.ArrayMinItems:return`Expected array length to be greater or equal to ${e.schema.minItems}`;case R.ArrayUniqueItems:return"Expected array elements to be unique";case R.Array:return"Expected array";case R.AsyncIterator:return"Expected AsyncIterator";case R.BigIntExclusiveMaximum:return`Expected bigint to be less than ${e.schema.exclusiveMaximum}`;case R.BigIntExclusiveMinimum:return`Expected bigint to be greater than ${e.schema.exclusiveMinimum}`;case R.BigIntMaximum:return`Expected bigint to be less or equal to ${e.schema.maximum}`;case R.BigIntMinimum:return`Expected bigint to be greater or equal to ${e.schema.minimum}`;case R.BigIntMultipleOf:return`Expected bigint to be a multiple of ${e.schema.multipleOf}`;case R.BigInt:return"Expected bigint";case R.Boolean:return"Expected boolean";case R.DateExclusiveMinimumTimestamp:return`Expected Date timestamp to be greater than ${e.schema.exclusiveMinimumTimestamp}`;case R.DateExclusiveMaximumTimestamp:return`Expected Date timestamp to be less than ${e.schema.exclusiveMaximumTimestamp}`;case R.DateMinimumTimestamp:return`Expected Date timestamp to be greater or equal to ${e.schema.minimumTimestamp}`;case R.DateMaximumTimestamp:return`Expected Date timestamp to be less or equal to ${e.schema.maximumTimestamp}`;case R.DateMultipleOfTimestamp:return`Expected Date timestamp to be a multiple of ${e.schema.multipleOfTimestamp}`;case R.Date:return"Expected Date";case R.Function:return"Expected function";case R.IntegerExclusiveMaximum:return`Expected integer to be less than ${e.schema.exclusiveMaximum}`;case R.IntegerExclusiveMinimum:return`Expected integer to be greater than ${e.schema.exclusiveMinimum}`;case R.IntegerMaximum:return`Expected integer to be less or equal to ${e.schema.maximum}`;case R.IntegerMinimum:return`Expected integer to be greater or equal to ${e.schema.minimum}`;case R.IntegerMultipleOf:return`Expected integer to be a multiple of ${e.schema.multipleOf}`;case R.Integer:return"Expected integer";case R.IntersectUnevaluatedProperties:return"Unexpected property";case R.Intersect:return"Expected all values to match";case R.Iterator:return"Expected Iterator";case R.Literal:return`Expected ${typeof e.schema.const=="string"?`'${e.schema.const}'`:e.schema.const}`;case R.Never:return"Never";case R.Not:return"Value should not match";case R.Null:return"Expected null";case R.NumberExclusiveMaximum:return`Expected number to be less than ${e.schema.exclusiveMaximum}`;case R.NumberExclusiveMinimum:return`Expected number to be greater than ${e.schema.exclusiveMinimum}`;case R.NumberMaximum:return`Expected number to be less or equal to ${e.schema.maximum}`;case R.NumberMinimum:return`Expected number to be greater or equal to ${e.schema.minimum}`;case R.NumberMultipleOf:return`Expected number to be a multiple of ${e.schema.multipleOf}`;case R.Number:return"Expected number";case R.Object:return"Expected object";case R.ObjectAdditionalProperties:return"Unexpected property";case R.ObjectMaxProperties:return`Expected object to have no more than ${e.schema.maxProperties} properties`;case R.ObjectMinProperties:return`Expected object to have at least ${e.schema.minProperties} properties`;case R.ObjectRequiredProperty:return"Expected required property";case R.Promise:return"Expected Promise";case R.RegExp:return"Expected string to match regular expression";case R.StringFormatUnknown:return`Unknown format '${e.schema.format}'`;case R.StringFormat:return`Expected string to match '${e.schema.format}' format`;case R.StringMaxLength:return`Expected string length less or equal to ${e.schema.maxLength}`;case R.StringMinLength:return`Expected string length greater or equal to ${e.schema.minLength}`;case R.StringPattern:return`Expected string to match '${e.schema.pattern}'`;case R.String:return"Expected string";case R.Symbol:return"Expected symbol";case R.TupleLength:return`Expected tuple to have ${e.schema.maxItems||0} elements`;case R.Tuple:return"Expected tuple";case R.Uint8ArrayMaxByteLength:return`Expected byte length less or equal to ${e.schema.maxByteLength}`;case R.Uint8ArrayMinByteLength:return`Expected byte length greater or equal to ${e.schema.minByteLength}`;case R.Uint8Array:return"Expected Uint8Array";case R.Undefined:return"Expected undefined";case R.Union:return"Expected union value";case R.Void:return"Expected void";case R.Kind:return`Expected kind '${e.schema[k]}'`;default:return"Unknown error type"}}var GE=BE;function U8(){return GE}var Zb=class extends ce{constructor(t){super(`Unable to dereference schema with $id '${t.$ref}'`),this.schema=t}};function zE(e,t){let r=t.find(n=>n.$id===e.$ref);if(r===void 0)throw new Zb(e);return Pe(r,t)}function Gt(e,t){return!Ee(e.$id)||t.some(r=>r.$id===e.$id)||t.push(e),t}function Pe(e,t){return e[k]==="This"||e[k]==="Ref"?zE(e,t):e}var Qb=class extends ce{constructor(t){super("Unable to hash value"),this.value=t}},Kr;(function(e){e[e.Undefined=0]="Undefined",e[e.Null=1]="Null",e[e.Boolean=2]="Boolean",e[e.Number=3]="Number",e[e.String=4]="String",e[e.Object=5]="Object",e[e.Array=6]="Array",e[e.Date=7]="Date",e[e.Uint8Array=8]="Uint8Array",e[e.Symbol=9]="Symbol",e[e.BigInt=10]="BigInt"})(Kr||(Kr={}));var Ff=BigInt("14695981039346656037"),[KE,qE]=[BigInt("1099511628211"),BigInt("18446744073709551616")],HE=Array.from({length:256}).map((e,t)=>BigInt(t)),j8=new Float64Array(1),B8=new DataView(j8.buffer),G8=new Uint8Array(j8.buffer);function*YE(e){let t=e===0?1:Math.ceil(Math.floor(Math.log2(e)+1)/8);for(let r=0;r>8*(t-1-r)&255}function WE(e){cr(Kr.Array);for(let t of e)Ef(t)}function XE(e){cr(Kr.Boolean),cr(e?1:0)}function ZE(e){cr(Kr.BigInt),B8.setBigInt64(0,e);for(let t of G8)cr(t)}function QE(e){cr(Kr.Date),Ef(e.getTime())}function JE(e){cr(Kr.Null)}function e$(e){cr(Kr.Number),B8.setFloat64(0,e);for(let t of G8)cr(t)}function t$(e){cr(Kr.Object);for(let t of globalThis.Object.getOwnPropertyNames(e).sort())Ef(t),Ef(e[t])}function r$(e){cr(Kr.String);for(let t=0;t=e.minItems)||we(e.maxItems)&&!(r.length<=e.maxItems))return!1;for(let i of r)if(!zt(e.items,t,i))return!1;if(e.uniqueItems===!0&&!(function(){let i=new Set;for(let a of r){let s=$f(a);if(i.has(s))return!1;i.add(s)}return!0})())return!1;if(!(we(e.contains)||Qe(e.minContains)||Qe(e.maxContains)))return!0;let n=we(e.contains)?e.contains:ge(),o=r.reduce((i,a)=>zt(n,t,a)?i+1:i,0);return!(o===0||Qe(e.minContains)&&oe.maxContains)}function u$(e,t,r){return Qu(r)}function l$(e,t,r){return!(!xn(r)||we(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||we(e.maximum)&&!(r<=e.maximum)||we(e.minimum)&&!(r>=e.minimum)||we(e.multipleOf)&&r%e.multipleOf!==BigInt(0))}function p$(e,t,r){return Yn(r)}function m$(e,t,r){return zt(e.returns,t,r.prototype)}function d$(e,t,r){return!(!ur(r)||we(e.exclusiveMaximumTimestamp)&&!(r.getTime()e.exclusiveMinimumTimestamp)||we(e.maximumTimestamp)&&!(r.getTime()<=e.maximumTimestamp)||we(e.minimumTimestamp)&&!(r.getTime()>=e.minimumTimestamp)||we(e.multipleOfTimestamp)&&r.getTime()%e.multipleOfTimestamp!==0)}function h$(e,t,r){return hi(r)}function y$(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return zt(o,[...t,...n],r)}function x$(e,t,r){return!(!tl(r)||we(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||we(e.maximum)&&!(r<=e.maximum)||we(e.minimum)&&!(r>=e.minimum)||we(e.multipleOf)&&r%e.multipleOf!==0)}function g$(e,t,r){let n=e.allOf.every(o=>zt(o,t,r));if(e.unevaluatedProperties===!1){let o=new RegExp(ys(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a));return n&&i}else if(rt(e.unevaluatedProperties)){let o=new RegExp(ys(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a)||zt(e.unevaluatedProperties,t,r[a]));return n&&i}else return n}function b$(e,t,r){return Ju(r)}function w$(e,t,r){return r===e.const}function S$(e,t,r){return!1}function I$(e,t,r){return!zt(e.not,t,r)}function _$(e,t,r){return Co(r)}function v$(e,t,r){return!(!It.IsNumberLike(r)||we(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||we(e.minimum)&&!(r>=e.minimum)||we(e.maximum)&&!(r<=e.maximum)||we(e.multipleOf)&&r%e.multipleOf!==0)}function T$(e,t,r){if(!It.IsObjectLike(r)||we(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||we(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let n=Object.getOwnPropertyNames(e.properties);for(let o of n){let i=e.properties[o];if(e.required&&e.required.includes(o)){if(!zt(i,t,r[o])||(ma(i)||a$(i))&&!(o in r))return!1}else if(It.IsExactOptionalProperty(r,o)&&!zt(i,t,r[o]))return!1}if(e.additionalProperties===!1){let o=Object.getOwnPropertyNames(r);return e.required&&e.required.length===n.length&&o.length===n.length?!0:o.every(i=>n.includes(i))}else return typeof e.additionalProperties=="object"?Object.getOwnPropertyNames(r).every(i=>n.includes(i)||zt(e.additionalProperties,t,r[i])):!0}function M$(e,t,r){return el(r)}function O$(e,t,r){if(!It.IsRecordLike(r)||we(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||we(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let[n,o]=Object.entries(e.patternProperties)[0],i=new RegExp(n),a=Object.entries(r).every(([u,c])=>i.test(u)?zt(o,t,c):!0),s=typeof e.additionalProperties=="object"?Object.entries(r).every(([u,c])=>i.test(u)?!0:zt(e.additionalProperties,t,c)):!0,f=e.additionalProperties===!1?Object.getOwnPropertyNames(r).every(u=>i.test(u)):!0;return a&&s&&f}function R$(e,t,r){return zt(Pe(e,t),t,r)}function C$(e,t,r){let n=new RegExp(e.source,e.flags);return we(e.minLength)&&!(r.length>=e.minLength)||we(e.maxLength)&&!(r.length<=e.maxLength)?!1:n.test(r)}function A$(e,t,r){return!Ee(r)||we(e.minLength)&&!(r.length>=e.minLength)||we(e.maxLength)&&!(r.length<=e.maxLength)||we(e.pattern)&&!new RegExp(e.pattern).test(r)?!1:we(e.format)?wi.Has(e.format)?wi.Get(e.format)(r):!1:!0}function P$(e,t,r){return Ao(r)}function k$(e,t,r){return Ee(r)&&new RegExp(e.pattern).test(r)}function N$(e,t,r){return zt(Pe(e,t),t,r)}function F$(e,t,r){if(!fe(r)||e.items===void 0&&r.length!==0||r.length!==e.maxItems)return!1;if(!e.items)return!0;for(let n=0;nzt(n,t,r))}function L$(e,t,r){return!(!ns(r)||we(e.maxByteLength)&&!(r.length<=e.maxByteLength)||we(e.minByteLength)&&!(r.length>=e.minByteLength))}function D$(e,t,r){return!0}function V$(e,t,r){return It.IsVoidLike(r)}function U$(e,t,r){return Tn.Has(e[k])?Tn.Get(e[k])(e,r):!1}function zt(e,t,r){let n=we(e.$id)?Gt(e,t):t,o=e;switch(o[k]){case"Any":return s$(o,n,r);case"Argument":return f$(o,n,r);case"Array":return c$(o,n,r);case"AsyncIterator":return u$(o,n,r);case"BigInt":return l$(o,n,r);case"Boolean":return p$(o,n,r);case"Constructor":return m$(o,n,r);case"Date":return d$(o,n,r);case"Function":return h$(o,n,r);case"Import":return y$(o,n,r);case"Integer":return x$(o,n,r);case"Intersect":return g$(o,n,r);case"Iterator":return b$(o,n,r);case"Literal":return w$(o,n,r);case"Never":return S$(o,n,r);case"Not":return I$(o,n,r);case"Null":return _$(o,n,r);case"Number":return v$(o,n,r);case"Object":return T$(o,n,r);case"Promise":return M$(o,n,r);case"Record":return O$(o,n,r);case"Ref":return R$(o,n,r);case"RegExp":return C$(o,n,r);case"String":return A$(o,n,r);case"Symbol":return P$(o,n,r);case"TemplateLiteral":return k$(o,n,r);case"This":return N$(o,n,r);case"Tuple":return F$(o,n,r);case"Undefined":return E$(o,n,r);case"Union":return $$(o,n,r);case"Uint8Array":return L$(o,n,r);case"Unknown":return D$(o,n,r);case"Void":return V$(o,n,r);default:if(!Tn.Has(o[k]))throw new Jb(o);return U$(o,n,r)}}function he(...e){return e.length===3?zt(e[0],e[1],e[2]):zt(e[0],[],e[1])}var R;(function(e){e[e.ArrayContains=0]="ArrayContains",e[e.ArrayMaxContains=1]="ArrayMaxContains",e[e.ArrayMaxItems=2]="ArrayMaxItems",e[e.ArrayMinContains=3]="ArrayMinContains",e[e.ArrayMinItems=4]="ArrayMinItems",e[e.ArrayUniqueItems=5]="ArrayUniqueItems",e[e.Array=6]="Array",e[e.AsyncIterator=7]="AsyncIterator",e[e.BigIntExclusiveMaximum=8]="BigIntExclusiveMaximum",e[e.BigIntExclusiveMinimum=9]="BigIntExclusiveMinimum",e[e.BigIntMaximum=10]="BigIntMaximum",e[e.BigIntMinimum=11]="BigIntMinimum",e[e.BigIntMultipleOf=12]="BigIntMultipleOf",e[e.BigInt=13]="BigInt",e[e.Boolean=14]="Boolean",e[e.DateExclusiveMaximumTimestamp=15]="DateExclusiveMaximumTimestamp",e[e.DateExclusiveMinimumTimestamp=16]="DateExclusiveMinimumTimestamp",e[e.DateMaximumTimestamp=17]="DateMaximumTimestamp",e[e.DateMinimumTimestamp=18]="DateMinimumTimestamp",e[e.DateMultipleOfTimestamp=19]="DateMultipleOfTimestamp",e[e.Date=20]="Date",e[e.Function=21]="Function",e[e.IntegerExclusiveMaximum=22]="IntegerExclusiveMaximum",e[e.IntegerExclusiveMinimum=23]="IntegerExclusiveMinimum",e[e.IntegerMaximum=24]="IntegerMaximum",e[e.IntegerMinimum=25]="IntegerMinimum",e[e.IntegerMultipleOf=26]="IntegerMultipleOf",e[e.Integer=27]="Integer",e[e.IntersectUnevaluatedProperties=28]="IntersectUnevaluatedProperties",e[e.Intersect=29]="Intersect",e[e.Iterator=30]="Iterator",e[e.Kind=31]="Kind",e[e.Literal=32]="Literal",e[e.Never=33]="Never",e[e.Not=34]="Not",e[e.Null=35]="Null",e[e.NumberExclusiveMaximum=36]="NumberExclusiveMaximum",e[e.NumberExclusiveMinimum=37]="NumberExclusiveMinimum",e[e.NumberMaximum=38]="NumberMaximum",e[e.NumberMinimum=39]="NumberMinimum",e[e.NumberMultipleOf=40]="NumberMultipleOf",e[e.Number=41]="Number",e[e.ObjectAdditionalProperties=42]="ObjectAdditionalProperties",e[e.ObjectMaxProperties=43]="ObjectMaxProperties",e[e.ObjectMinProperties=44]="ObjectMinProperties",e[e.ObjectRequiredProperty=45]="ObjectRequiredProperty",e[e.Object=46]="Object",e[e.Promise=47]="Promise",e[e.RegExp=48]="RegExp",e[e.StringFormatUnknown=49]="StringFormatUnknown",e[e.StringFormat=50]="StringFormat",e[e.StringMaxLength=51]="StringMaxLength",e[e.StringMinLength=52]="StringMinLength",e[e.StringPattern=53]="StringPattern",e[e.String=54]="String",e[e.Symbol=55]="Symbol",e[e.TupleLength=56]="TupleLength",e[e.Tuple=57]="Tuple",e[e.Uint8ArrayMaxByteLength=58]="Uint8ArrayMaxByteLength",e[e.Uint8ArrayMinByteLength=59]="Uint8ArrayMinByteLength",e[e.Uint8Array=60]="Uint8Array",e[e.Undefined=61]="Undefined",e[e.Union=62]="Union",e[e.Void=63]="Void"})(R||(R={}));var e1=class extends ce{constructor(t){super("Unknown type"),this.schema=t}};function pi(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Se(e){return e!==void 0}var ra=class{constructor(t){this.iterator=t}[Symbol.iterator](){return this.iterator}First(){let t=this.iterator.next();return t.done?void 0:t.value}};function q(e,t,r,n,o=[]){return{type:e,schema:t,path:r,value:n,message:U8()({errorType:e,path:r,schema:t,value:n,errors:o}),errors:o}}function*j$(e,t,r,n){}function*B$(e,t,r,n){}function*G$(e,t,r,n){if(!fe(n))return yield q(R.Array,e,r,n);Se(e.minItems)&&!(n.length>=e.minItems)&&(yield q(R.ArrayMinItems,e,r,n)),Se(e.maxItems)&&!(n.length<=e.maxItems)&&(yield q(R.ArrayMaxItems,e,r,n));for(let a=0;aKt(o,t,`${r}${f}`,s).next().done===!0?a+1:a,0);i===0&&(yield q(R.ArrayContains,e,r,n)),Qe(e.minContains)&&ie.maxContains&&(yield q(R.ArrayMaxContains,e,r,n))}function*z$(e,t,r,n){Qu(n)||(yield q(R.AsyncIterator,e,r,n))}function*K$(e,t,r,n){if(!xn(n))return yield q(R.BigInt,e,r,n);Se(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield q(R.BigIntExclusiveMinimum,e,r,n)),Se(e.maximum)&&!(n<=e.maximum)&&(yield q(R.BigIntMaximum,e,r,n)),Se(e.minimum)&&!(n>=e.minimum)&&(yield q(R.BigIntMinimum,e,r,n)),Se(e.multipleOf)&&n%e.multipleOf!==BigInt(0)&&(yield q(R.BigIntMultipleOf,e,r,n))}function*q$(e,t,r,n){Yn(n)||(yield q(R.Boolean,e,r,n))}function*H$(e,t,r,n){yield*Kt(e.returns,t,r,n.prototype)}function*Y$(e,t,r,n){if(!ur(n))return yield q(R.Date,e,r,n);Se(e.exclusiveMaximumTimestamp)&&!(n.getTime()e.exclusiveMinimumTimestamp)&&(yield q(R.DateExclusiveMinimumTimestamp,e,r,n)),Se(e.maximumTimestamp)&&!(n.getTime()<=e.maximumTimestamp)&&(yield q(R.DateMaximumTimestamp,e,r,n)),Se(e.minimumTimestamp)&&!(n.getTime()>=e.minimumTimestamp)&&(yield q(R.DateMinimumTimestamp,e,r,n)),Se(e.multipleOfTimestamp)&&n.getTime()%e.multipleOfTimestamp!==0&&(yield q(R.DateMultipleOfTimestamp,e,r,n))}function*W$(e,t,r,n){hi(n)||(yield q(R.Function,e,r,n))}function*X$(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref];yield*Kt(i,[...t,...o],r,n)}function*Z$(e,t,r,n){if(!tl(n))return yield q(R.Integer,e,r,n);Se(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield q(R.IntegerExclusiveMinimum,e,r,n)),Se(e.maximum)&&!(n<=e.maximum)&&(yield q(R.IntegerMaximum,e,r,n)),Se(e.minimum)&&!(n>=e.minimum)&&(yield q(R.IntegerMinimum,e,r,n)),Se(e.multipleOf)&&n%e.multipleOf!==0&&(yield q(R.IntegerMultipleOf,e,r,n))}function*Q$(e,t,r,n){let o=!1;for(let i of e.allOf)for(let a of Kt(i,t,r,n))o=!0,yield a;if(o)return yield q(R.Intersect,e,r,n);if(e.unevaluatedProperties===!1){let i=new RegExp(ys(e));for(let a of Object.getOwnPropertyNames(n))i.test(a)||(yield q(R.IntersectUnevaluatedProperties,e,`${r}/${a}`,n))}if(typeof e.unevaluatedProperties=="object"){let i=new RegExp(ys(e));for(let a of Object.getOwnPropertyNames(n))if(!i.test(a)){let s=Kt(e.unevaluatedProperties,t,`${r}/${a}`,n[a]).next();s.done||(yield s.value)}}}function*J$(e,t,r,n){Ju(n)||(yield q(R.Iterator,e,r,n))}function*eL(e,t,r,n){n!==e.const&&(yield q(R.Literal,e,r,n))}function*tL(e,t,r,n){yield q(R.Never,e,r,n)}function*rL(e,t,r,n){Kt(e.not,t,r,n).next().done===!0&&(yield q(R.Not,e,r,n))}function*nL(e,t,r,n){Co(n)||(yield q(R.Null,e,r,n))}function*oL(e,t,r,n){if(!It.IsNumberLike(n))return yield q(R.Number,e,r,n);Se(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield q(R.NumberExclusiveMinimum,e,r,n)),Se(e.maximum)&&!(n<=e.maximum)&&(yield q(R.NumberMaximum,e,r,n)),Se(e.minimum)&&!(n>=e.minimum)&&(yield q(R.NumberMinimum,e,r,n)),Se(e.multipleOf)&&n%e.multipleOf!==0&&(yield q(R.NumberMultipleOf,e,r,n))}function*iL(e,t,r,n){if(!It.IsObjectLike(n))return yield q(R.Object,e,r,n);Se(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield q(R.ObjectMinProperties,e,r,n)),Se(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield q(R.ObjectMaxProperties,e,r,n));let o=Array.isArray(e.required)?e.required:[],i=Object.getOwnPropertyNames(e.properties),a=Object.getOwnPropertyNames(n);for(let s of o)a.includes(s)||(yield q(R.ObjectRequiredProperty,e.properties[s],`${r}/${pi(s)}`,void 0));if(e.additionalProperties===!1)for(let s of a)i.includes(s)||(yield q(R.ObjectAdditionalProperties,e,`${r}/${pi(s)}`,n[s]));if(typeof e.additionalProperties=="object")for(let s of a)i.includes(s)||(yield*Kt(e.additionalProperties,t,`${r}/${pi(s)}`,n[s]));for(let s of i){let f=e.properties[s];e.required&&e.required.includes(s)?(yield*Kt(f,t,`${r}/${pi(s)}`,n[s]),ma(e)&&!(s in n)&&(yield q(R.ObjectRequiredProperty,f,`${r}/${pi(s)}`,void 0))):It.IsExactOptionalProperty(n,s)&&(yield*Kt(f,t,`${r}/${pi(s)}`,n[s]))}}function*aL(e,t,r,n){el(n)||(yield q(R.Promise,e,r,n))}function*sL(e,t,r,n){if(!It.IsRecordLike(n))return yield q(R.Object,e,r,n);Se(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield q(R.ObjectMinProperties,e,r,n)),Se(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield q(R.ObjectMaxProperties,e,r,n));let[o,i]=Object.entries(e.patternProperties)[0],a=new RegExp(o);for(let[s,f]of Object.entries(n))a.test(s)&&(yield*Kt(i,t,`${r}/${pi(s)}`,f));if(typeof e.additionalProperties=="object")for(let[s,f]of Object.entries(n))a.test(s)||(yield*Kt(e.additionalProperties,t,`${r}/${pi(s)}`,f));if(e.additionalProperties===!1){for(let[s,f]of Object.entries(n))if(!a.test(s))return yield q(R.ObjectAdditionalProperties,e,`${r}/${pi(s)}`,f)}}function*fL(e,t,r,n){yield*Kt(Pe(e,t),t,r,n)}function*cL(e,t,r,n){if(!Ee(n))return yield q(R.String,e,r,n);if(Se(e.minLength)&&!(n.length>=e.minLength)&&(yield q(R.StringMinLength,e,r,n)),Se(e.maxLength)&&!(n.length<=e.maxLength)&&(yield q(R.StringMaxLength,e,r,n)),!new RegExp(e.source,e.flags).test(n))return yield q(R.RegExp,e,r,n)}function*uL(e,t,r,n){if(!Ee(n))return yield q(R.String,e,r,n);Se(e.minLength)&&!(n.length>=e.minLength)&&(yield q(R.StringMinLength,e,r,n)),Se(e.maxLength)&&!(n.length<=e.maxLength)&&(yield q(R.StringMaxLength,e,r,n)),Ee(e.pattern)&&(new RegExp(e.pattern).test(n)||(yield q(R.StringPattern,e,r,n))),Ee(e.format)&&(wi.Has(e.format)?wi.Get(e.format)(n)||(yield q(R.StringFormat,e,r,n)):yield q(R.StringFormatUnknown,e,r,n))}function*lL(e,t,r,n){Ao(n)||(yield q(R.Symbol,e,r,n))}function*pL(e,t,r,n){if(!Ee(n))return yield q(R.String,e,r,n);new RegExp(e.pattern).test(n)||(yield q(R.StringPattern,e,r,n))}function*mL(e,t,r,n){yield*Kt(Pe(e,t),t,r,n)}function*dL(e,t,r,n){if(!fe(n))return yield q(R.Tuple,e,r,n);if(e.items===void 0&&n.length!==0)return yield q(R.TupleLength,e,r,n);if(n.length!==e.maxItems)return yield q(R.TupleLength,e,r,n);if(e.items)for(let o=0;onew ra(Kt(i,t,r,n)));yield q(R.Union,e,r,n,o)}function*xL(e,t,r,n){if(!ns(n))return yield q(R.Uint8Array,e,r,n);Se(e.maxByteLength)&&!(n.length<=e.maxByteLength)&&(yield q(R.Uint8ArrayMaxByteLength,e,r,n)),Se(e.minByteLength)&&!(n.length>=e.minByteLength)&&(yield q(R.Uint8ArrayMinByteLength,e,r,n))}function*gL(e,t,r,n){}function*bL(e,t,r,n){It.IsVoidLike(n)||(yield q(R.Void,e,r,n))}function*wL(e,t,r,n){Tn.Get(e[k])(e,n)||(yield q(R.Kind,e,r,n))}function*Kt(e,t,r,n){let o=Se(e.$id)?[...t,e]:t,i=e;switch(i[k]){case"Any":return yield*j$(i,o,r,n);case"Argument":return yield*B$(i,o,r,n);case"Array":return yield*G$(i,o,r,n);case"AsyncIterator":return yield*z$(i,o,r,n);case"BigInt":return yield*K$(i,o,r,n);case"Boolean":return yield*q$(i,o,r,n);case"Constructor":return yield*H$(i,o,r,n);case"Date":return yield*Y$(i,o,r,n);case"Function":return yield*W$(i,o,r,n);case"Import":return yield*X$(i,o,r,n);case"Integer":return yield*Z$(i,o,r,n);case"Intersect":return yield*Q$(i,o,r,n);case"Iterator":return yield*J$(i,o,r,n);case"Literal":return yield*eL(i,o,r,n);case"Never":return yield*tL(i,o,r,n);case"Not":return yield*rL(i,o,r,n);case"Null":return yield*nL(i,o,r,n);case"Number":return yield*oL(i,o,r,n);case"Object":return yield*iL(i,o,r,n);case"Promise":return yield*aL(i,o,r,n);case"Record":return yield*sL(i,o,r,n);case"Ref":return yield*fL(i,o,r,n);case"RegExp":return yield*cL(i,o,r,n);case"String":return yield*uL(i,o,r,n);case"Symbol":return yield*lL(i,o,r,n);case"TemplateLiteral":return yield*pL(i,o,r,n);case"This":return yield*mL(i,o,r,n);case"Tuple":return yield*dL(i,o,r,n);case"Undefined":return yield*hL(i,o,r,n);case"Union":return yield*yL(i,o,r,n);case"Uint8Array":return yield*xL(i,o,r,n);case"Unknown":return yield*gL(i,o,r,n);case"Void":return yield*bL(i,o,r,n);default:if(!Tn.Has(i[k]))throw new e1(e);return yield*wL(i,o,r,n)}}function na(...e){let t=e.length===3?Kt(e[0],e[1],"",e[2]):Kt(e[0],[],"",e[1]);return new ra(t)}var SL=function(e,t,r,n,o){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?o.call(e,r):o?o.value=r:t.set(e,r),r},K8=function(e,t,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(e):n?n.value:t.get(e)},t1,ih,q8,r1=class extends ce{constructor(t){let r=t.First();super(r===void 0?"Invalid Value":r.message),t1.add(this),ih.set(this,void 0),SL(this,ih,t,"f"),this.error=r}Errors(){return new ra(K8(this,t1,"m",q8).call(this))}};ih=new WeakMap,t1=new WeakSet,q8=function*(){this.error&&(yield this.error),yield*K8(this,ih,"f")};function z8(e,t,r){if(!he(e,t,r))throw new r1(na(e,t,r))}function ah(...e){return e.length===3?z8(e[0],e[1],e[2]):z8(e[0],[],e[1])}function IL(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Me(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Me(e[r]);return t}function _L(e){return e.map(t=>Me(t))}function vL(e){return e.slice()}function TL(e){return new Map(Me([...e.entries()]))}function ML(e){return new Set(Me([...e.entries()]))}function OL(e){return new Date(e.toISOString())}function Me(e){if(fe(e))return _L(e);if(ur(e))return OL(e);if(Yr(e))return vL(e);if(p1(e))return TL(e);if(m1(e))return ML(e);if(me(e))return IL(e);if(Fr(e))return e;throw new Error("ValueClone: Unable to clone value")}var qr=class extends ce{constructor(t,r){super(r),this.schema=t}};function Oe(e){return hi(e)?e():Me(e)}function RL(e,t){return se(e,"default")?Oe(e.default):{}}function CL(e,t){return{}}function AL(e,t){if(e.uniqueItems===!0&&!se(e,"default"))throw new qr(e,"Array with the uniqueItems constraint requires a default value");if("contains"in e&&!se(e,"default"))throw new qr(e,"Array with the contains constraint requires a default value");return"default"in e?Oe(e.default):e.minItems!==void 0?Array.from({length:e.minItems}).map(r=>Hr(e.items,t)):[]}function PL(e,t){return se(e,"default")?Oe(e.default):(async function*(){})()}function kL(e,t){return se(e,"default")?Oe(e.default):BigInt(0)}function NL(e,t){return se(e,"default")?Oe(e.default):!1}function FL(e,t){if(se(e,"default"))return Oe(e.default);{let r=Hr(e.returns,t);return typeof r=="object"&&!Array.isArray(r)?class{constructor(){for(let[n,o]of Object.entries(r)){let i=this;i[n]=o}}}:class{}}}function EL(e,t){return se(e,"default")?Oe(e.default):e.minimumTimestamp!==void 0?new Date(e.minimumTimestamp):new Date}function $L(e,t){return se(e,"default")?Oe(e.default):()=>Hr(e.returns,t)}function LL(e,t){let r=globalThis.Object.values(e.$defs),n=e.$defs[e.$ref];return Hr(n,[...t,...r])}function DL(e,t){return se(e,"default")?Oe(e.default):e.minimum!==void 0?e.minimum:0}function VL(e,t){if(se(e,"default"))return Oe(e.default);{let r=e.allOf.reduce((n,o)=>{let i=Hr(o,t);return typeof i=="object"?{...n,...i}:i},{});if(!he(e,t,r))throw new qr(e,"Intersect produced invalid value. Consider using a default value.");return r}}function UL(e,t){return se(e,"default")?Oe(e.default):(function*(){})()}function jL(e,t){return se(e,"default")?Oe(e.default):e.const}function BL(e,t){if(se(e,"default"))return Oe(e.default);throw new qr(e,"Never types cannot be created. Consider using a default value.")}function GL(e,t){if(se(e,"default"))return Oe(e.default);throw new qr(e,"Not types must have a default value")}function zL(e,t){return se(e,"default")?Oe(e.default):null}function KL(e,t){return se(e,"default")?Oe(e.default):e.minimum!==void 0?e.minimum:0}function qL(e,t){if(se(e,"default"))return Oe(e.default);{let r=new Set(e.required),n={};for(let[o,i]of Object.entries(e.properties))r.has(o)&&(n[o]=Hr(i,t));return n}}function HL(e,t){return se(e,"default")?Oe(e.default):Promise.resolve(Hr(e.item,t))}function YL(e,t){return se(e,"default")?Oe(e.default):{}}function WL(e,t){return se(e,"default")?Oe(e.default):Hr(Pe(e,t),t)}function XL(e,t){if(se(e,"default"))return Oe(e.default);throw new qr(e,"RegExp types cannot be created. Consider using a default value.")}function ZL(e,t){if(e.pattern!==void 0){if(se(e,"default"))return Oe(e.default);throw new qr(e,"String types with patterns must specify a default value")}else if(e.format!==void 0){if(se(e,"default"))return Oe(e.default);throw new qr(e,"String types with formats must specify a default value")}else return se(e,"default")?Oe(e.default):e.minLength!==void 0?Array.from({length:e.minLength}).map(()=>" ").join(""):""}function QL(e,t){return se(e,"default")?Oe(e.default):"value"in e?Symbol.for(e.value):Symbol()}function JL(e,t){if(se(e,"default"))return Oe(e.default);if(!il(e))throw new qr(e,"Can only create template literals that produce a finite variants. Consider using a default value.");return ps(e)[0]}function eD(e,t){if(H8++>fD)throw new qr(e,"Cannot create recursive type as it appears possibly infinite. Consider using a default.");return se(e,"default")?Oe(e.default):Hr(Pe(e,t),t)}function tD(e,t){return se(e,"default")?Oe(e.default):e.items===void 0?[]:Array.from({length:e.minItems}).map((r,n)=>Hr(e.items[n],t))}function rD(e,t){if(se(e,"default"))return Oe(e.default)}function nD(e,t){if(se(e,"default"))return Oe(e.default);if(e.anyOf.length===0)throw new Error("ValueCreate.Union: Cannot create Union with zero variants");return Hr(e.anyOf[0],t)}function oD(e,t){return se(e,"default")?Oe(e.default):e.minByteLength!==void 0?new Uint8Array(e.minByteLength):new Uint8Array(0)}function iD(e,t){return se(e,"default")?Oe(e.default):{}}function aD(e,t){if(se(e,"default"))return Oe(e.default)}function sD(e,t){if(se(e,"default"))return Oe(e.default);throw new Error("User defined types must specify a default value")}function Hr(e,t){let r=Gt(e,t),n=e;switch(n[k]){case"Any":return RL(n,r);case"Argument":return CL(n,r);case"Array":return AL(n,r);case"AsyncIterator":return PL(n,r);case"BigInt":return kL(n,r);case"Boolean":return NL(n,r);case"Constructor":return FL(n,r);case"Date":return EL(n,r);case"Function":return $L(n,r);case"Import":return LL(n,r);case"Integer":return DL(n,r);case"Intersect":return VL(n,r);case"Iterator":return UL(n,r);case"Literal":return jL(n,r);case"Never":return BL(n,r);case"Not":return GL(n,r);case"Null":return zL(n,r);case"Number":return KL(n,r);case"Object":return qL(n,r);case"Promise":return HL(n,r);case"Record":return YL(n,r);case"Ref":return WL(n,r);case"RegExp":return XL(n,r);case"String":return ZL(n,r);case"Symbol":return QL(n,r);case"TemplateLiteral":return JL(n,r);case"This":return eD(n,r);case"Tuple":return tD(n,r);case"Undefined":return rD(n,r);case"Union":return nD(n,r);case"Uint8Array":return oD(n,r);case"Unknown":return iD(n,r);case"Void":return aD(n,r);default:if(!Tn.Has(n[k]))throw new qr(n,"Unknown type");return sD(n,r)}}var fD=512,H8=0;function jn(...e){return H8=0,e.length===2?Hr(e[0],e[1]):Hr(e[0],[])}var sh=class extends ce{constructor(t,r){super(r),this.schema=t}};function Y8(e,t,r){if(e[k]==="Object"&&typeof r=="object"&&!Co(r)){let n=e,o=Object.getOwnPropertyNames(r);return Object.entries(n.properties).reduce((a,[s,f])=>{let u=f[k]==="Literal"&&f.const===r[s]?100:0,c=he(f,t,r[s])?10:0,m=o.includes(s)?1:0;return a+(u+c+m)},0)}else if(e[k]==="Union"){let o=e.anyOf.map(i=>Pe(i,t)).map(i=>Y8(i,t,r));return Math.max(...o)}else return he(e,t,r)?1:0}function cD(e,t,r){let n=e.anyOf.map(a=>Pe(a,t)),[o,i]=[n[0],0];for(let a of n){let s=Y8(a,t,r);s>i&&(o=a,i=s)}return o}function uD(e,t,r){if("default"in e)return typeof r=="function"?e.default:Me(e.default);{let n=cD(e,t,r);return Ku(n,t,r)}}function lD(e,t,r){return he(e,t,r)?Me(r):jn(e,t)}function pD(e,t,r){return he(e,t,r)?r:jn(e,t)}function mD(e,t,r){if(he(e,t,r))return Me(r);let n=fe(r)?Me(r):jn(e,t),o=Qe(e.minItems)&&n.lengthnull)]:n,a=(Qe(e.maxItems)&&o.length>e.maxItems?o.slice(0,e.maxItems):o).map(f=>Bn(e.items,t,f));if(e.uniqueItems!==!0)return a;let s=[...new Set(a)];if(!he(e,t,s))throw new sh(e,"Array cast produced invalid data due to uniqueItems constraint");return s}function dD(e,t,r){if(he(e,t,r))return jn(e,t);let n=new Set(e.returns.required||[]),o=function(){};for(let[i,a]of Object.entries(e.returns.properties))!n.has(i)&&r.prototype[i]===void 0||(o.prototype[i]=Bn(a,t,r.prototype[i]));return o}function hD(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return Bn(o,[...t,...n],r)}function W8(e,t){return me(e)&&!me(t)||!me(e)&&me(t)?e:!me(e)||!me(t)?t:globalThis.Object.getOwnPropertyNames(e).reduce((r,n)=>{let o=n in t?W8(e[n],t[n]):e[n];return{...r,[n]:o}},{})}function yD(e,t,r){if(he(e,t,r))return r;let n=jn(e,t),o=W8(n,r);return he(e,t,o)?o:n}function xD(e,t,r){throw new sh(e,"Never types cannot be cast")}function gD(e,t,r){if(he(e,t,r))return r;if(r===null||typeof r!="object")return jn(e,t);let n=new Set(e.required||[]),o={};for(let[i,a]of Object.entries(e.properties))!n.has(i)&&r[i]===void 0||(o[i]=Bn(a,t,r[i]));if(typeof e.additionalProperties=="object"){let i=Object.getOwnPropertyNames(e.properties);for(let a of Object.getOwnPropertyNames(r))i.includes(a)||(o[a]=Bn(e.additionalProperties,t,r[a]))}return o}function bD(e,t,r){if(he(e,t,r))return Me(r);if(r===null||typeof r!="object"||Array.isArray(r)||r instanceof Date)return jn(e,t);let n=Object.getOwnPropertyNames(e.patternProperties)[0],o=e.patternProperties[n],i={};for(let[a,s]of Object.entries(r))i[a]=Bn(o,t,s);return i}function wD(e,t,r){return Bn(Pe(e,t),t,r)}function SD(e,t,r){return Bn(Pe(e,t),t,r)}function ID(e,t,r){return he(e,t,r)?Me(r):fe(r)?e.items===void 0?[]:e.items.map((n,o)=>Bn(n,t,r[o])):jn(e,t)}function _D(e,t,r){return he(e,t,r)?Me(r):uD(e,t,r)}function Bn(e,t,r){let n=Ee(e.$id)?Gt(e,t):t,o=e;switch(e[k]){case"Array":return mD(o,n,r);case"Constructor":return dD(o,n,r);case"Import":return hD(o,n,r);case"Intersect":return yD(o,n,r);case"Never":return xD(o,n,r);case"Object":return gD(o,n,r);case"Record":return bD(o,n,r);case"Ref":return wD(o,n,r);case"This":return SD(o,n,r);case"Tuple":return ID(o,n,r);case"Union":return _D(o,n,r);case"Date":case"Symbol":case"Uint8Array":return lD(e,t,r);default:return pD(o,n,r)}}function Ku(...e){return e.length===3?Bn(e[0],e[1],e[2]):Bn(e[0],[],e[1])}function vD(e){return xi(e)&&e[k]!=="Unsafe"}function TD(e,t,r){return fe(r)?r.map(n=>kr(e.items,t,n)):r}function MD(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return kr(o,[...t,...n],r)}function OD(e,t,r){let n=e.unevaluatedProperties,i=e.allOf.map(s=>kr(s,t,Me(r))).reduce((s,f)=>me(f)?{...s,...f}:f,{});if(!me(r)||!me(i)||!xi(n))return i;let a=Ir(e);for(let s of Object.getOwnPropertyNames(r))a.includes(s)||he(n,t,r[s])&&(i[s]=kr(n,t,r[s]));return i}function RD(e,t,r){if(!me(r)||fe(r))return r;let n=e.additionalProperties;for(let o of Object.getOwnPropertyNames(r)){if(se(e.properties,o)){r[o]=kr(e.properties[o],t,r[o]);continue}if(xi(n)&&he(n,t,r[o])){r[o]=kr(n,t,r[o]);continue}delete r[o]}return r}function CD(e,t,r){if(!me(r))return r;let n=e.additionalProperties,o=Object.getOwnPropertyNames(r),[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let f of o){if(s.test(f)){r[f]=kr(a,t,r[f]);continue}if(xi(n)&&he(n,t,r[f])){r[f]=kr(n,t,r[f]);continue}delete r[f]}return r}function AD(e,t,r){return kr(Pe(e,t),t,r)}function PD(e,t,r){return kr(Pe(e,t),t,r)}function kD(e,t,r){if(!fe(r))return r;if(Ze(e.items))return[];let n=Math.min(r.length,e.items.length);for(let o=0;on?r.slice(0,n):r}function ND(e,t,r){for(let n of e.anyOf)if(vD(n)&&he(n,t,r))return kr(n,t,r);return r}function kr(e,t,r){let n=Ee(e.$id)?Gt(e,t):t,o=e;switch(o[k]){case"Array":return TD(o,n,r);case"Import":return MD(o,n,r);case"Intersect":return OD(o,n,r);case"Object":return RD(o,n,r);case"Record":return CD(o,n,r);case"Ref":return AD(o,n,r);case"This":return PD(o,n,r);case"Tuple":return kD(o,n,r);case"Union":return ND(o,n,r);default:return r}}function fh(...e){return e.length===3?kr(e[0],e[1],e[2]):kr(e[0],[],e[1])}function ch(e){return Ee(e)&&!isNaN(e)&&!isNaN(parseFloat(e))}function FD(e){return xn(e)||Yn(e)||Qe(e)}function qu(e){return e===!0||Qe(e)&&e===1||xn(e)&&e===BigInt("1")||Ee(e)&&(e.toLowerCase()==="true"||e==="1")}function Hu(e){return e===!1||Qe(e)&&(e===0||Object.is(e,-0))||xn(e)&&e===BigInt("0")||Ee(e)&&(e.toLowerCase()==="false"||e==="0"||e==="-0")}function ED(e){return Ee(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function $D(e){return Ee(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function LD(e){return Ee(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function DD(e){return Ee(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function VD(e){return Ee(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(e)}function UD(e,t){let r=Z8(e);return r===t?r:e}function jD(e,t){let r=Q8(e);return r===t?r:e}function BD(e,t){let r=X8(e);return r===t?r:e}function GD(e,t){return Ee(e.const)?UD(t,e.const):Qe(e.const)?jD(t,e.const):Yn(e.const)?BD(t,e.const):t}function X8(e){return qu(e)?!0:Hu(e)?!1:e}function zD(e){let t=r=>r.split(".")[0];return ch(e)?BigInt(t(e)):Qe(e)?BigInt(Math.trunc(e)):Hu(e)?BigInt(0):qu(e)?BigInt(1):e}function Z8(e){return Ao(e)&&e.description!==void 0?e.description.toString():FD(e)?e.toString():e}function Q8(e){return ch(e)?parseFloat(e):qu(e)?1:Hu(e)?0:e}function KD(e){return ch(e)?parseInt(e):Qe(e)?Math.trunc(e):qu(e)?1:Hu(e)?0:e}function qD(e){return Ee(e)&&e.toLowerCase()==="null"?null:e}function HD(e){return Ee(e)&&e==="undefined"?void 0:e}function YD(e){return ur(e)?e:Qe(e)?new Date(e):qu(e)?new Date(1):Hu(e)?new Date(0):ch(e)?new Date(parseInt(e)):$D(e)?new Date(`1970-01-01T${e}.000Z`):ED(e)?new Date(`1970-01-01T${e}`):DD(e)?new Date(`${e}.000Z`):LD(e)?new Date(e):VD(e)?new Date(`${e}T00:00:00.000Z`):e}function WD(e,t,r){return(fe(r)?r:[r]).map(o=>Gn(e.items,t,o))}function XD(e,t,r){return zD(r)}function ZD(e,t,r){return X8(r)}function QD(e,t,r){return YD(r)}function JD(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return Gn(o,[...t,...n],r)}function eV(e,t,r){return KD(r)}function tV(e,t,r){return e.allOf.reduce((n,o)=>Gn(o,t,n),r)}function rV(e,t,r){return GD(e,r)}function nV(e,t,r){return qD(r)}function oV(e,t,r){return Q8(r)}function iV(e,t,r){if(!me(r)||fe(r))return r;for(let n of Object.getOwnPropertyNames(e.properties))se(r,n)&&(r[n]=Gn(e.properties[n],t,r[n]));return r}function aV(e,t,r){if(!(me(r)&&!fe(r)))return r;let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=e.patternProperties[o];for(let[a,s]of Object.entries(r))r[a]=Gn(i,t,s);return r}function sV(e,t,r){return Gn(Pe(e,t),t,r)}function fV(e,t,r){return Z8(r)}function cV(e,t,r){return Ee(r)||Qe(r)?Symbol(r):r}function uV(e,t,r){return Gn(Pe(e,t),t,r)}function lV(e,t,r){return fe(r)&&!Ze(e.items)?r.map((o,i)=>izn(e.items,t,`${r}/${i}`,o))):at(e,r,n)}function hV(e,t,r,n){if(!me(n)||Fr(n))return at(e,r,n);let o=ul(e),i=o.map(c=>c[0]),a={...n};for(let[c,m]of o)c in a&&(a[c]=zn(m,t,`${r}/${c}`,a[c]));if(!Re(e.unevaluatedProperties))return at(e,r,a);let s=Object.getOwnPropertyNames(a),f=e.unevaluatedProperties,u={...a};for(let c of s)i.includes(c)||(u[c]=at(f,`${r}/${c}`,u[c]));return at(e,r,u)}function yV(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=zn(i,[...t,...o],r,n);return at(e,r,a)}function xV(e,t,r,n){return at(e,r,zn(e.not,t,r,n))}function gV(e,t,r,n){if(!me(n))return at(e,r,n);let o=Ir(e),i={...n};for(let u of o)se(i,u)&&(Ze(i[u])&&(!No(e.properties[u])||It.IsExactOptionalProperty(i,u))||(i[u]=zn(e.properties[u],t,`${r}/${u}`,i[u])));if(!rt(e.additionalProperties))return at(e,r,i);let a=Object.getOwnPropertyNames(i),s=e.additionalProperties,f={...i};for(let u of a)o.includes(u)||(f[u]=at(s,`${r}/${u}`,f[u]));return at(e,r,f)}function bV(e,t,r,n){if(!me(n))return at(e,r,n);let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=new RegExp(o),a={...n};for(let c of Object.getOwnPropertyNames(n))i.test(c)&&(a[c]=zn(e.patternProperties[o],t,`${r}/${c}`,a[c]));if(!rt(e.additionalProperties))return at(e,r,a);let s=Object.getOwnPropertyNames(a),f=e.additionalProperties,u={...a};for(let c of s)i.test(c)||(u[c]=at(f,`${r}/${c}`,u[c]));return at(e,r,u)}function wV(e,t,r,n){let o=Pe(e,t);return at(e,r,zn(o,t,r,n))}function SV(e,t,r,n){let o=Pe(e,t);return at(e,r,zn(o,t,r,n))}function IV(e,t,r,n){return fe(n)&&fe(e.items)?at(e,r,e.items.map((o,i)=>zn(o,t,`${r}/${i}`,n[i]))):at(e,r,n)}function _V(e,t,r,n){for(let o of e.anyOf){if(!he(o,t,n))continue;let i=zn(o,t,r,n);return at(e,r,i)}return at(e,r,n)}function zn(e,t,r,n){let o=Gt(e,t),i=e;switch(e[k]){case"Array":return dV(i,o,r,n);case"Import":return yV(i,o,r,n);case"Intersect":return hV(i,o,r,n);case"Not":return xV(i,o,r,n);case"Object":return gV(i,o,r,n);case"Record":return bV(i,o,r,n);case"Ref":return wV(i,o,r,n);case"Symbol":return at(i,r,n);case"This":return SV(i,o,r,n);case"Tuple":return IV(i,o,r,n);case"Union":return _V(i,o,r,n);default:return at(i,r,n)}}function ph(e,t,r){return zn(e,t,"",r)}var mh=class extends ce{constructor(t,r,n){super("The encoded value does not match the expected schema"),this.schema=t,this.value=r,this.error=n}},o1=class extends ce{constructor(t,r,n,o){super(`${o instanceof Error?o.message:"Unknown error"}`),this.schema=t,this.path=r,this.value=n,this.error=o}};function er(e,t,r){try{return Re(e)?e[tt].Encode(r):r}catch(n){throw new o1(e,t,r,n)}}function vV(e,t,r,n){let o=er(e,r,n);return fe(o)?o.map((i,a)=>Kn(e.items,t,`${r}/${a}`,i)):o}function TV(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=er(e,r,n);return Kn(i,[...t,...o],r,a)}function MV(e,t,r,n){let o=er(e,r,n);if(!me(n)||Fr(n))return o;let i=ul(e),a=i.map(m=>m[0]),s={...o};for(let[m,l]of i)m in s&&(s[m]=Kn(l,t,`${r}/${m}`,s[m]));if(!Re(e.unevaluatedProperties))return s;let f=Object.getOwnPropertyNames(s),u=e.unevaluatedProperties,c={...s};for(let m of f)a.includes(m)||(c[m]=er(u,`${r}/${m}`,c[m]));return c}function OV(e,t,r,n){return er(e.not,r,er(e,r,n))}function RV(e,t,r,n){let o=er(e,r,n);if(!me(o))return o;let i=Ir(e),a={...o};for(let c of i)se(a,c)&&(Ze(a[c])&&(!No(e.properties[c])||It.IsExactOptionalProperty(a,c))||(a[c]=Kn(e.properties[c],t,`${r}/${c}`,a[c])));if(!rt(e.additionalProperties))return a;let s=Object.getOwnPropertyNames(a),f=e.additionalProperties,u={...a};for(let c of s)i.includes(c)||(u[c]=er(f,`${r}/${c}`,u[c]));return u}function CV(e,t,r,n){let o=er(e,r,n);if(!me(n))return o;let i=Object.getOwnPropertyNames(e.patternProperties)[0],a=new RegExp(i),s={...o};for(let m of Object.getOwnPropertyNames(n))a.test(m)&&(s[m]=Kn(e.patternProperties[i],t,`${r}/${m}`,s[m]));if(!rt(e.additionalProperties))return s;let f=Object.getOwnPropertyNames(s),u=e.additionalProperties,c={...s};for(let m of f)a.test(m)||(c[m]=er(u,`${r}/${m}`,c[m]));return c}function AV(e,t,r,n){let o=Pe(e,t),i=Kn(o,t,r,n);return er(e,r,i)}function PV(e,t,r,n){let o=Pe(e,t),i=Kn(o,t,r,n);return er(e,r,i)}function kV(e,t,r,n){let o=er(e,r,n);return fe(e.items)?e.items.map((i,a)=>Kn(i,t,`${r}/${a}`,o[a])):[]}function NV(e,t,r,n){for(let o of e.anyOf){if(!he(o,t,n))continue;let i=Kn(o,t,r,n);return er(e,r,i)}for(let o of e.anyOf){let i=Kn(o,t,r,n);if(he(e,t,i))return er(e,r,i)}return er(e,r,n)}function Kn(e,t,r,n){let o=Gt(e,t),i=e;switch(e[k]){case"Array":return vV(i,o,r,n);case"Import":return TV(i,o,r,n);case"Intersect":return MV(i,o,r,n);case"Not":return OV(i,o,r,n);case"Object":return RV(i,o,r,n);case"Record":return CV(i,o,r,n);case"Ref":return AV(i,o,r,n);case"This":return PV(i,o,r,n);case"Tuple":return kV(i,o,r,n);case"Union":return NV(i,o,r,n);default:return er(i,r,n)}}function dh(e,t,r){return Kn(e,t,"",r)}function FV(e,t){return Re(e)||At(e.items,t)}function EV(e,t){return Re(e)||At(e.items,t)}function $V(e,t){return Re(e)||At(e.returns,t)||e.parameters.some(r=>At(r,t))}function LV(e,t){return Re(e)||At(e.returns,t)||e.parameters.some(r=>At(r,t))}function DV(e,t){return Re(e)||Re(e.unevaluatedProperties)||e.allOf.some(r=>At(r,t))}function VV(e,t){let r=globalThis.Object.getOwnPropertyNames(e.$defs).reduce((o,i)=>[...o,e.$defs[i]],[]),n=e.$defs[e.$ref];return Re(e)||At(n,[...r,...t])}function UV(e,t){return Re(e)||At(e.items,t)}function jV(e,t){return Re(e)||At(e.not,t)}function BV(e,t){return Re(e)||Object.values(e.properties).some(r=>At(r,t))||rt(e.additionalProperties)&&At(e.additionalProperties,t)}function GV(e,t){return Re(e)||At(e.item,t)}function zV(e,t){let r=Object.getOwnPropertyNames(e.patternProperties)[0],n=e.patternProperties[r];return Re(e)||At(n,t)||rt(e.additionalProperties)&&Re(e.additionalProperties)}function KV(e,t){return Re(e)?!0:At(Pe(e,t),t)}function qV(e,t){return Re(e)?!0:At(Pe(e,t),t)}function HV(e,t){return Re(e)||!Ze(e.items)&&e.items.some(r=>At(r,t))}function YV(e,t){return Re(e)||e.anyOf.some(r=>At(r,t))}function At(e,t){let r=Gt(e,t),n=e;if(e.$id&&i1.has(e.$id))return!1;switch(e.$id&&i1.add(e.$id),e[k]){case"Array":return FV(n,r);case"AsyncIterator":return EV(n,r);case"Constructor":return $V(n,r);case"Function":return LV(n,r);case"Import":return VV(n,r);case"Intersect":return DV(n,r);case"Iterator":return UV(n,r);case"Not":return jV(n,r);case"Object":return BV(n,r);case"Promise":return GV(n,r);case"Record":return zV(n,r);case"Ref":return KV(n,r);case"This":return qV(n,r);case"Tuple":return HV(n,r);case"Union":return YV(n,r);default:return Re(e)}}var i1=new Set;function Ja(e,t){return i1.clear(),At(e,t)}function J8(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]];if(!he(t,r,n))throw new lh(t,n,na(t,r,n).First());return Ja(t,r)?ph(t,r,n):n}function mi(e,t){let r=se(e,"default")?e.default:void 0,n=hi(r)?r():Me(r);return Ze(t)?n:me(t)&&me(n)?Object.assign(n,t):t}function a1(e){return xi(e)&&"default"in e}function WV(e,t,r){if(fe(r)){for(let o=0;o{let a=gr(i,t,n);return me(a)?{...o,...a}:a},{})}function JV(e,t,r){let n=mi(e,r);if(!me(n))return n;let o=Object.getOwnPropertyNames(e.properties);for(let i of o){let a=gr(e.properties[i],t,n[i]);Ze(a)||(n[i]=gr(e.properties[i],t,n[i]))}if(!a1(e.additionalProperties))return n;for(let i of Object.getOwnPropertyNames(n))o.includes(i)||(n[i]=gr(e.additionalProperties,t,n[i]));return n}function eU(e,t,r){let n=mi(e,r);if(!me(n))return n;let o=e.additionalProperties,[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let f of Object.getOwnPropertyNames(n))s.test(f)&&a1(a)&&(n[f]=gr(a,t,n[f]));if(!a1(o))return n;for(let f of Object.getOwnPropertyNames(n))s.test(f)||(n[f]=gr(o,t,n[f]));return n}function tU(e,t,r){return gr(Pe(e,t),t,mi(e,r))}function rU(e,t,r){return gr(Pe(e,t),t,r)}function nU(e,t,r){let n=mi(e,r);if(!fe(n)||Ze(e.items))return n;let[o,i]=[e.items,Math.max(e.items.length,n.length)];for(let a=0;aaU,Format:()=>Yu,Get:()=>fU,Has:()=>sU,Set:()=>iU,ValuePointerRootDeleteError:()=>xh,ValuePointerRootSetError:()=>yh});var yh=class extends ce{constructor(t,r,n){super("Cannot set root value"),this.value=t,this.path=r,this.update=n}},xh=class extends ce{constructor(t,r){super("Cannot delete root value"),this.value=t,this.path=r}};function e3(e){return e.indexOf("~")===-1?e:e.replace(/~1/g,"/").replace(/~0/g,"~")}function*Yu(e){if(e==="")return;let[t,r]=[0,0];for(let n=0;nes(e[o],t[o]))}function uU(e,t){return ur(t)&&e.getTime()===t.getTime()}function lU(e,t){return!fe(t)||e.length!==t.length?!1:e.every((r,n)=>es(r,t[n]))}function pU(e,t){return!Yr(t)||e.length!==t.length||Object.getPrototypeOf(e).constructor.name!==Object.getPrototypeOf(t).constructor.name?!1:e.every((r,n)=>es(r,t[n]))}function mU(e,t){return e===t}function es(e,t){if(ur(e))return uU(e,t);if(Yr(e))return pU(e,t);if(fe(e))return lU(e,t);if(me(e))return cU(e,t);if(Fr(e))return mU(e,t);throw new Error("ValueEquals: Unable to compare value")}var dU=Ae({type:_e("insert"),path:lr(),value:Mn()}),hU=Ae({type:_e("update"),path:lr(),value:Mn()}),yU=Ae({type:_e("delete"),path:lr()}),r3=Ce([dU,hU,yU]),gh=class extends ce{constructor(t,r){super(r),this.value=t}};function bh(e,t){return{type:"update",path:e,value:t}}function n3(e,t){return{type:"insert",path:e,value:t}}function o3(e){return{type:"delete",path:e}}function t3(e){if(globalThis.Object.getOwnPropertySymbols(e).length>0)throw new gh(e,"Cannot diff objects with symbols")}function*xU(e,t,r){if(t3(t),t3(r),!Nh(r))return yield bh(e,r);let n=globalThis.Object.getOwnPropertyNames(t),o=globalThis.Object.getOwnPropertyNames(r);for(let i of o)se(t,i)||(yield n3(`${e}/${i}`,r[i]));for(let i of n)se(r,i)&&(es(t,r)||(yield*wh(`${e}/${i}`,t[i],r[i])));for(let i of n)se(r,i)||(yield o3(`${e}/${i}`))}function*gU(e,t,r){if(!fe(r))return yield bh(e,r);for(let n=0;n=0;n--)n0&&e[0].path===""&&e[0].type==="update"}function IU(e){return e.length===0}function a3(e,t){if(SU(t))return Me(t[0].value);if(IU(t))return Me(e);let r=Me(e);for(let n of t)switch(n.type){case"insert":{qn.Set(r,n.path,n.value);break}case"update":{qn.Set(r,n.path,n.value);break}case"delete":{qn.Delete(r,n.path);break}}return r}function s3(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]],o=Ja(t,r)?dh(t,r,n):n;if(!he(t,r,o))throw new mh(t,o,na(t,r,o).First());return o}function Sh(e){return me(e)&&!fe(e)}var Ih=class extends ce{constructor(t){super(t)}};function _U(e,t,r,n){if(!Sh(r))qn.Set(e,t,Me(n));else{let o=Object.getOwnPropertyNames(r),i=Object.getOwnPropertyNames(n);for(let a of o)i.includes(a)||delete r[a];for(let a of i)o.includes(a)||(r[a]=null);for(let a of i)s1(e,`${t}/${a}`,r[a],n[a])}}function vU(e,t,r,n){if(!fe(r))qn.Set(e,t,Me(n));else{for(let o=0;o(ah(i,a,s),s)],["Cast",(i,a,s)=>Ku(i,a,s)],["Clean",(i,a,s)=>fh(i,a,s)],["Clone",(i,a,s)=>Me(s)],["Convert",(i,a,s)=>uh(i,a,s)],["Decode",(i,a,s)=>Ja(i,a)?ph(i,a,s):s],["Default",(i,a,s)=>hh(i,a,s)],["Encode",(i,a,s)=>Ja(i,a)?dh(i,a,s):s]]);function r(i){t.delete(i)}e.Delete=r;function n(i,a){t.set(i,a)}e.Set=n;function o(i){return t.get(i)}e.Get=o})(f1||(f1={}));var u3=["Clone","Clean","Default","Convert","Assert","Decode"];function RU(e,t,r,n){return e.reduce((o,i)=>{let a=f1.Get(i);if(Ze(a))throw new _h(`Unable to find Parse operation '${i}'`);return a(t,r,o)},n)}function l3(...e){let[t,r,n,o]=e.length===4?[e[0],e[1],e[2],e[3]]:e.length===3?fe(e[0])?[e[0],e[1],[],e[2]]:[u3,e[0],e[1],e[2]]:e.length===2?[u3,e[0],[],e[1]]:(()=>{throw new _h("Invalid Arguments")})();return RU(t,r,n,o)}var Lf={};oa(Lf,{Assert:()=>ah,Cast:()=>Ku,Check:()=>he,Clean:()=>fh,Clone:()=>Me,Convert:()=>uh,Create:()=>jn,Decode:()=>J8,Default:()=>hh,Diff:()=>i3,Edit:()=>r3,Encode:()=>s3,Equal:()=>es,Errors:()=>na,Hash:()=>$f,Mutate:()=>c3,Parse:()=>l3,Patch:()=>a3,ValueErrorIterator:()=>ra});function vh(e){switch(e.type){case"summary_metrics":return Xb(e);case"performance_table":return Yb(e);case"roc":return Ub(e);case"calibration":return jb(e);case"precision_recall":return Gb(e);case"gains":return zb(e);case"lift":return Kb(e);case"decision_curve":return qb(e);case"interventions_avoided":return Hb(e)}}function Mo(e,t){let r=e.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"id";/^[a-z]/i.test(r)||(r=`id-${r}`);let n=r,o=1;for(;t.has(n);)n=`${r}-${o}`,o++;return t.add(n),n}function c1(e,t){let r=(n,o=!0)=>{e.forEach((i,a)=>{let s=a===n;i.setAttribute("aria-selected",s?"true":"false"),i.tabIndex=s?0:-1,t[a].hidden=!s}),o&&e[n].focus()};e.forEach((n,o)=>{n.addEventListener("click",()=>{r(o,!1)}),n.addEventListener("keydown",i=>{let a=null;i.key==="ArrowRight"?a=(o+1)%e.length:i.key==="ArrowLeft"?a=(o-1+e.length)%e.length:i.key==="Home"?a=0:i.key==="End"&&(a=e.length-1),a!==null&&(i.preventDefault(),r(a,!0))})})}function CU(e){if(!Lf.Check(vl,e))throw new Error("Invalid ReportSpec");Ml(e);let t=document.createElement("div");if(t.className="rtichoke-report",e.title){let r=document.createElement("h1");r.className="rtichoke-report__title",r.textContent=e.title,t.append(r)}for(let r of e.components){let n=document.createElement("section");if(n.className="rtichoke-report__component",n.dataset.componentId=r.id,r.title){let i=document.createElement("h2");i.className="rtichoke-report__component-title",i.textContent=r.title,n.append(i)}let o=document.createElement("div");o.className="rtichoke-report__component-content",o.append(vh(r.spec)),n.append(o),t.append(n)}return t}function AU(e,t){if(!Lf.Check(Tl,e))throw new Error("Invalid ReportSpec");Ml(e);let r=!!e.title,n=new Set,o=document.createElement("article");if(o.className="rtichoke-report",e.title){let p=document.createElement("header");p.className="rtichoke-report__header";let d=document.createElement("h1");d.className="rtichoke-report__title",d.textContent=e.title,p.append(d),o.append(p)}let i=[],a=0;for(let p of e.sections){let d=Mo(p.id,n);a++;let y=[];for(let x of p.items)if(x.type==="group"){let w=Mo(x.id,n);a++,y.push({rawId:x.id,title:x.title,domId:w})}i.push({rawId:p.id,title:p.title,domId:d,groups:y})}if(a>1){let p=document.createElement("nav");p.className="rtichoke-report__nav",p.setAttribute("aria-label","Report sections");let d=document.createElement("ul");d.className="rtichoke-report__nav-list";for(let y of i){let x=document.createElement("li");x.className="rtichoke-report__nav-item";let w=document.createElement("a");if(w.className="rtichoke-report__nav-link",w.href=`#${y.domId}`,w.textContent=y.title,x.append(w),y.groups.length>0){let g=document.createElement("ul");g.className="rtichoke-report__nav-sublist";for(let S of y.groups){let b=document.createElement("li");b.className="rtichoke-report__nav-subitem";let T=document.createElement("a");T.className="rtichoke-report__nav-link",T.href=`#${S.domId}`,T.textContent=S.title,b.append(T),g.append(b)}x.append(g)}d.append(x)}p.append(d),o.append(p)}let s=r?"h2":"h1",f=r?"h3":"h2",u=r?"h3":"h2",c=r?"h4":"h3",m=(p,d)=>{let y=document.createElement("section");if(y.className="rtichoke-report__component",y.dataset.componentId=p.id,p.title){let w=Mo(`heading-${p.id}`,n),g=document.createElement(d);g.className="rtichoke-report__component-title",g.id=w,g.textContent=p.title,y.setAttribute("aria-labelledby",w),y.append(g)}let x=document.createElement("div");return x.className="rtichoke-report__component-content",x.append(vh(p.spec)),y.append(x),y},l=(p,d,y)=>{let x=document.createElement("section");x.className="rtichoke-report__group",x.id=d.domId,x.dataset.groupId=p.id;let w=Mo(`heading-${p.id}`,n),g=document.createElement(f);if(g.className="rtichoke-report__group-title",y&&g.classList.add("rtichoke-report__group-title--tab-panel"),g.id=w,g.textContent=p.title,x.setAttribute("aria-labelledby",y??w),x.append(g),t.groupPresentation==="tabs"){let S=document.createElement("div");S.className="rtichoke-report__tablist",S.setAttribute("role","tablist"),S.setAttribute("aria-labelledby",w);let b=[],T=[];p.components.forEach((I,v)=>{let O=Mo(`tab-${p.id}-${I.id}`,n),C=Mo(`panel-${p.id}-${I.id}`,n),E=document.createElement("button");E.className="rtichoke-report__tab",E.type="button",E.id=O,E.setAttribute("role","tab"),E.setAttribute("aria-controls",C),E.setAttribute("aria-selected",v===0?"true":"false"),E.tabIndex=v===0?0:-1,E.textContent=I.title||I.id;let A=document.createElement("section");A.className="rtichoke-report__component rtichoke-report__tabpanel",A.id=C,A.setAttribute("role","tabpanel"),A.setAttribute("aria-labelledby",O),A.tabIndex=0,A.dataset.componentId=I.id,A.hidden=v!==0;let F=document.createElement("div");F.className="rtichoke-report__component-content",F.append(vh(I.spec)),A.append(F),b.push(E),T.push(A),S.append(E)}),c1(b,T),x.append(S,...T)}else for(let S of p.components)x.append(m(S,c));return x};for(let p=0;pO.type==="group"),b=t.sectionGroupPresentation==="tabs"&&S.length>1,T=0,I=!1,v=0;for(;v1){let F=document.createElement("div");F.className="rtichoke-report__tablist",F.setAttribute("role","tablist"),F.setAttribute("aria-labelledby",w);let H=[],j=[];E.forEach((M,U)=>{let D=Mo(`tab-${d.id}-${M.id}`,n),oe=Mo(`panel-${d.id}-${M.id}`,n),V=document.createElement("button");V.className="rtichoke-report__tab",V.type="button",V.id=D,V.setAttribute("role","tab"),V.setAttribute("aria-controls",oe),V.setAttribute("aria-selected",U===0?"true":"false"),V.tabIndex=U===0?0:-1,V.textContent=M.title||M.id;let K=document.createElement("section");K.className="rtichoke-report__component rtichoke-report__tabpanel",K.id=oe,K.setAttribute("role","tabpanel"),K.setAttribute("aria-labelledby",D),K.tabIndex=0,K.dataset.componentId=M.id,K.hidden=U!==0;let Y=document.createElement("div");Y.className="rtichoke-report__component-content",Y.append(vh(M.spec)),K.append(Y),H.push(V),j.push(K),F.append(V)}),c1(H,j),x.append(F,...j),v=C}else x.append(m(O,u)),v++}else if(O.type==="group"){if(b){if(!I){I=!0;let C=document.createElement("div");C.className="rtichoke-report__tablist rtichoke-report__section-group-tablist",C.setAttribute("role","tablist"),C.setAttribute("aria-labelledby",w);let E=[],A=[];S.forEach((F,H)=>{let j=y.groups[H],M=Mo(`section-group-tab-${d.id}-${F.id}`,n),U=document.createElement("button");U.className="rtichoke-report__tab",U.type="button",U.id=M,U.setAttribute("role","tab"),U.setAttribute("aria-controls",j.domId),U.setAttribute("aria-selected",H===0?"true":"false"),U.tabIndex=H===0?0:-1,U.textContent=F.title;let D=l(F,j,M);D.classList.add("rtichoke-report__tabpanel"),D.setAttribute("role","tabpanel"),D.setAttribute("aria-labelledby",M),D.tabIndex=0,D.hidden=H!==0,E.push(U),A.push(D),C.append(U)}),c1(E,A),x.append(C,...A)}}else x.append(l(O,y.groups[T++]));v++}}o.append(x)}return o}function PU(e,t){if(!e||typeof e!="object")throw new Error("Invalid ReportSpec");let r=t?.groupPresentation??"stacked",n=t?.sectionGroupPresentation??"stacked",o=t?.sectionComponentPresentation??"stacked";if(t!==void 0&&(typeof t!="object"||t===null||t.groupPresentation!==void 0&&t.groupPresentation!=="stacked"&&t.groupPresentation!=="tabs"))throw new Error("Invalid render options: groupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionGroupPresentation!==void 0&&t.sectionGroupPresentation!=="stacked"&&t.sectionGroupPresentation!=="tabs")throw new Error("Invalid render options: sectionGroupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionComponentPresentation!==void 0&&t.sectionComponentPresentation!=="stacked"&&t.sectionComponentPresentation!=="tabs")throw new Error("Invalid render options: sectionComponentPresentation must be 'stacked' or 'tabs'");if(e.schemaVersion==="1.0")return CU(e);if(e.schemaVersion==="1.1")return AU(e,{groupPresentation:r,sectionGroupPresentation:n,sectionComponentPresentation:o});throw new Error("Invalid ReportSpec")}var kU=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"];function NU(e){let t=e.data.map(n=>({...n,false_positive_rate:1-n.specificity})),r=[Ct(t,{x:"false_positive_rate",y:"sensitivity",stroke:"model",strokeWidth:2,tip:!0})];return e.references?.some(n=>n.type==="identity")&&r.unshift(Ct([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2})),vo({width:600,height:600,marginLeft:64,marginBottom:56,style:{background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"},x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:!0,range:kU},marks:r})}export{T0 as AUROCSummaryMetricSchema,l0 as CalibrationSpecSchema,Pw as CalibrationV2DatumSchema,d0 as CalibrationV2SpecSchema,Nw as DecisionCurveV2DatumSchema,Fw as DecisionCurveV2EvaluationSchema,Dw as DecisionCurveV2ReferenceSchema,Ew as DecisionCurveV2SeriesSchema,h0 as DecisionCurveV2SpecSchema,Cw as DiscreteCalibrationV2DatumSchema,Mw as DisplayGroupingSpecSchema,Tw as DisplayRoleSchema,An as EvaluationSpecSchema,y0 as GainsV2SpecSchema,Gw as InterventionsAvoidedTreatAllReferenceSchema,zw as InterventionsAvoidedTreatNoneReferenceSchema,Uw as InterventionsAvoidedV2DatumSchema,jw as InterventionsAvoidedV2EvaluationSchema,Kw as InterventionsAvoidedV2ReferenceSchema,Bw as InterventionsAvoidedV2SeriesSchema,x0 as InterventionsAvoidedV2SpecSchema,g0 as LiftV2SpecSchema,Rw as OperatingPointDimensionSchema,Yw as OperatingPointSchema,$o as OperatingPointSpecSchema,Ww as PerformanceEvaluationContextSchema,qw as PerformanceMetricDefinitionSchema,I0 as PerformanceMetricIdSchema,Hw as PerformanceMetricValueSchema,Xw as PerformanceTableRowSchema,_0 as PerformanceTableSpecSchema,v0 as PopulationSummaryOwnerSpecSchema,b0 as PrecisionRecallV2SpecSchema,M0 as PrevalenceSummaryMetricSchema,xr as RTICHOKE_BROWSER_THEME,L8 as RTICHOKE_COLORS,Ow as ReferenceLineV2SpecSchema,Qw as ReportComponentSchema,C0 as ReportComponentV1_1Schema,Jw as ReportGroupSchema,eS as ReportSectionSchema,vC as ReportSpecSchema,vl as ReportSpecV1_0Schema,Tl as ReportSpecV1_1Schema,p0 as RocSpecSchema,w0 as RocV2SpecSchema,cC as RtichokeChartSpecSchema,S0 as RtichokeChartSpecV2Schema,vs as SeriesSpecSchema,Aw as SmoothCalibrationV2DatumSchema,R0 as StandaloneCanonicalSpecSchema,SC as SummaryMetricSchema,O0 as SummaryMetricsSpecSchema,Lw as TreatAllReferenceSchema,$w as TreatNoneReferenceSchema,A0 as assertPerformanceTableReferentialIntegrity,Ml as assertReportReferentialIntegrity,P0 as assertSummaryMetricsReferentialIntegrity,Lo as assertV2ReferentialIntegrity,OC as calibrationSpecFromRtichokeRows,PC as calibrationV2SpecFromRtichokeRows,D8 as extractOperatingPointValues,IE as renderCalibration,jb as renderCalibrationV2,qb as renderDecisionCurveV2,zb as renderGainsV2,Hb as renderInterventionsAvoidedV2,Kb as renderLiftV2,Yb as renderPerformanceTable,Gb as renderPrecisionRecallV2,PU as renderReport,NU as renderRoc,Ub as renderRocV2,Xb as renderSummaryMetrics,Qa as renderWithOperatingPointSelection,To as resolveV2RenderOptions,MC as rocSpecFromRtichokePython,TC as rocSpecFromRtichokeR,AC as rocV2SpecFromRtichokePython,CC as rocV2SpecFromRtichokeR}; +}`)).call(Zc,r);for(let V of u){let{channels:q,values:H,facets:W}=y.get(V);if(h===void 0||V.facet==="super"){let te=null;if(W&&(te=W[0],te=V.filter(te,q,H),te.length===0))continue;let be=V.render(te,g,H,S,v);if(be==null)continue;O.appendChild(be)}else{let te;for(let be of h){if(!(V.facetAnchor?.(h,k,be)??!be.empty))continue;let K=null;if(W){let Y=m.has(V);if(K=W[Y?be.i:0],K=V.filter(K,q,H),K.length===0)continue;!Y&&K===W[0]&&(K=PT(K)),K.fx=be.x,K.fy=be.y,K.fi=be.i}let Z=V.render(K,g,H,I,v);if(Z!=null){(te??=hn(O).append("g")).append(()=>Z).datum(be);for(let Y of["aria-label","aria-description","aria-hidden","transform"])Z.hasAttribute(Y)&&(te.attr(Y,Z.getAttribute(Y)),Z.removeAttribute(Y))}}te?.selectChildren().each(z)}}let U=gO(b,v,e),{figure:L=n!=null||o!=null||i!=null||U.length>0}=e;L&&(R=T.createElement("figure"),R.className=`${c}-figure`,R.style.maxWidth="initial",n!=null&&R.append(AO(T,n,"h2")),o!=null&&R.append(AO(T,o,"h3")),R.append(...U,O),i!=null&&R.append(f$(T,i)),"value"in O&&(R.value=O.value,delete O.value)),R.scale=K6(g.scales),R.legend=hO(b,v,e);let re=I6();return re>0&&hn(O).append("text").attr("x",j).attr("y",20).attr("dy","-1em").attr("text-anchor","end").attr("font-family","initial").text("\u26A0\uFE0F").append("title").text(`${re.toLocaleString("en-US")} warning${re===1?"":"s"}. Please check the console.`),R}function AO(e,t,r){if(t.ownerDocument)return t;let n=e.createElement(r);return n.append(t),n}function f$(e,t){let r=e.createElement("figcaption");return r.append(t),r}function EO(e){return e.flat(1/0).filter(t=>t!=null).map(u$)}function u$(e){return typeof e.render=="function"?e:new k1(e)}var k1=class extends lt{constructor(t){if(typeof t!="function")throw new TypeError("invalid mark; missing render function");super(),this.render=t}render(){}};function R1(e,t){for(let r in e)LO(e[r],t);return e}function LO(e,t){let{scale:r,transform:n=!0}=e;if(r==null||!n)return;let{type:o,percent:i,interval:a,transform:s=i?c=>c==null?NaN:c*100:Ix(a,o)}=t[r]??{};s!=null&&(e.value=et(e.value,s),e.transform=!1)}function l$(e){for(let t in e)Rx(t,e[t])}function gl(e,t,r,n=gT){for(let{channels:o}of t.values())for(let i in o){let a=o[i],{scale:s}=a;if(s!=null&&n(s))if(s==="projection"){if(!rM(r)){let c=r.x?.domain===void 0,u=r.y?.domain===void 0;if(c||u){let[f,m]=oM(a);c&&C1(e,"x",f),u&&C1(e,"y",m)}}}else C1(e,s,a)}return e}function C1(e,t,r){let n=e.get(t);n!==void 0?n.push(r):e.set(t,[r])}function p$(e,t){if(e==null)return;let{x:r,y:n}=e;if(r==null&&n==null)return;let o=vi(e.data);if(o==null)throw new Error("missing facet data");let i={};r!=null&&(i.fx=zc(o,{value:r,scale:"fx"})),n!=null&&(i.fy=zc(o,{value:n,scale:"fy"})),R1(i,t);let a=ph(o,i);return{channels:i,groups:a,data:e.data}}function FO(e,t,r){if(e.facet===null||e.facet==="super")return;let{fx:n,fy:o}=e;if(n!=null||o!=null){let c=vi(e.data??n??o);if(c===void 0)throw new Error(`missing facet data in ${e.ariaLabel}`);if(c===null)return;let u={};return n!=null&&(u.fx=zc(c,{value:n,scale:"fx"})),o!=null&&(u.fy=zc(c,{value:o,scale:"fy"})),R1(u,r),{channels:u,groups:ph(c,u)}}if(t===void 0)return;let{channels:i,groups:a,data:s}=t;if(e.facet!=="auto"||e.data===s)return{channels:i,groups:a};s.length>0&&(a.size>1||a.size===1&&i.fx&&i.fy&&[...a][0][1].size>1)&&pa(vi(e.data))===pa(s)&&Lr(`Warning: the ${e.ariaLabel} mark appears to use faceted data, but isn\u2019t faceted. The mark data has the same length as the facet data and the mark facet option is "auto", but the mark data and facet data are distinct. If this mark should be faceted, set the mark facet option to true; otherwise, suppress this warning by setting the mark facet option to false.`)}function m$(e,t={}){return Ti({...t,x:null,y:null},(r,n,o,i,a,s)=>s.getMarkState(e))}function d$(e){let t=[];for(let r of e){let n=r.tip;if(n){n===!0?n={}:typeof n=="string"&&(n={pointer:n});let{pointer:o,preferredAnchor:i}=n;o=/^x$/i.test(o)?yM:/^y$/i.test(o)?t1:hM,n=o(m$(r,n)),n.title=null,i===void 0&&(n.preferredAnchor=o===t1?"left":"bottom");let a=NO(r.data,n);a.facet=r.facet,a.facetAnchor=r.facetAnchor,t.push(a)}}return t}function h$(e,t,r){let{projection:n,x:o={},y:i={},fx:a={},fy:s={},axis:c,grid:u,facet:f={},facet:{axis:m=c,grid:l}=f,x:{axis:p=c,grid:h=p===null?null:u}=o,y:{axis:y=c,grid:b=y===null?null:u}=i,fx:{axis:w=m,grid:g=w===null?null:l}=a,fy:{axis:_=m,grid:x=_===null?null:l}=s}=r;(n||!Lc(o)&&!$O("x",e))&&(p=h=null),(n||!Lc(i)&&!$O("y",e))&&(y=b=null),t.has("fx")||(w=g=null),t.has("fy")||(_=x=null),p===void 0&&(p=!Eh(e,"x")),y===void 0&&(y=!Eh(e,"y")),w===void 0&&(w=!Eh(e,"fx")),_===void 0&&(_=!Eh(e,"fy")),p===!0&&(p="bottom"),y===!0&&(y="left"),w===!0&&(w=p==="top"||p===null?"bottom":"top"),_===!0&&(_=y==="right"||y===null?"left":"right");let I=[];return Ah(I,x,JM,s),Nh(I,_,YM,"right","left",f,s),Ah(I,g,tO,a),Nh(I,w,WM,"top","bottom",f,a),Ah(I,b,QM,i),Nh(I,y,x1,"left","right",r,i),Ah(I,h,eO,o),Nh(I,p,w1,"bottom","top",r,o),I}function Nh(e,t,r,n,o,i,a){if(!t)return;let s=y$(t);a=b$(s?n:t,i,a);let{line:c}=a;(r===x1||r===w1)&&c&&!hs(c)&&e.push(T1(g$(a))),e.push(r(a)),s&&e.push(r({...a,anchor:o,label:null}))}function Ah(e,t,r,n){!t||hs(t)||e.push(r(x$(t,n)))}function y$(e){return/^\s*both\s*$/i.test(e)}function b$(e,t,{line:r=t.line,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:c,fontVariant:u,ariaLabel:f,ariaDescription:m,label:l=t.label,labelAnchor:p,labelArrow:h=t.labelArrow,labelOffset:y}){return{anchor:e,line:r,ticks:n,tickSize:o,tickSpacing:i,tickPadding:a,tickFormat:s,tickRotate:c,fontVariant:u,ariaLabel:f,ariaDescription:m,label:l,labelAnchor:p,labelArrow:h,labelOffset:y}}function g$(e){let{anchor:t,line:r}=e;return{anchor:t,facetAnchor:t+"-empty",stroke:r===!0?void 0:r}}function x$(e,{stroke:t=jc(e)?e:void 0,ticks:r=w$(e)?e:void 0,tickSpacing:n,ariaLabel:o,ariaDescription:i}){return{stroke:t,ticks:r,tickSpacing:n,ariaLabel:o,ariaDescription:i}}function w$(e){switch(typeof e){case"number":return!0;case"string":return!jc(e)}return Tn(e)||typeof e?.range=="function"}function Eh(e,t){let r=`${t}-axis `;return e.some(n=>n.ariaLabel?.startsWith(r))}function $O(e,t){for(let r of t)for(let n in r.channels){let{scale:o}=r.channels[n];if(o===e||o==="projection")return!0}return!1}function S$(e,t){for(let r in e){let n=e[r],o=t[r];n.label===void 0&&o&&(n.label=o.label)}return e}function I$({fx:e,fy:t},r){let{marginTop:n,marginRight:o,marginBottom:i,marginLeft:a,width:s,height:c}=uh(r),u=e&&DO(e),f=t&&DO(t);return{marginTop:t?f[0]:n,marginRight:e?s-u[1]:o,marginBottom:t?c-f[1]:i,marginLeft:e?u[0]:a,inset:{marginTop:r.marginTop,marginRight:r.marginRight,marginBottom:r.marginBottom,marginLeft:r.marginLeft},width:s,height:c}}function DO(e){let t=e.domain();if(t.length===0)return[0,e.bandwidth()];let r=e(t[0]),n=e(t[t.length-1]);return nx.selectAll().data(t).enter().append(g?"circle":"path").call(Wt,this).call(g?I=>{I.attr("cx",c?S=>c[S]:b).attr("cy",u?S=>u[S]:w).attr("r",f?S=>f[S]:p)}:I=>{I.attr("transform",Qc`translate(${c?S=>c[S]:b},${u?S=>u[S]:w})${m?S=>` rotate(${m[S]})`:h?` rotate(${h})`:""}`).attr("d",f&&l?S=>{let v=Hn();return l[S].draw(v,f[S]*f[S]*Math.PI),v}:f?S=>{let v=Hn();return y.draw(v,f[S]*f[S]*Math.PI),v}:l?S=>{let v=Hn();return l[S].draw(v,_),v}:(()=>{let S=Hn();return y.draw(S,_),S})())}).call(Vr,this,n)).node()}};function Ss(e,{x:t,y:r,...n}={}){return n.frameAnchor===void 0&&([t,r]=Pi(t,r)),new Fh(e,{...n,x:t,y:r})}var M$={ariaLabel:"line",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:1},$h=class extends lt{constructor(t,r={}){let{x:n,y:o,z:i,curve:a,tension:s}=r;super(t,{x:{value:n,scale:"x"},y:{value:o,scale:"y"},z:{value:eh(r),optional:!0}},r,M$),this.z=i,this.curve=VO(a,s),hl(this,r)}filter(t){return t}project(t,r,n){this.curve!==xl&&super.project(t,r,n)}render(t,r,n,o,i){let{x:a,y:s}=n,{curve:c}=this;return ze("svg:g",i).call(ir,this,o,i).call(ar,this,r).call(u=>u.selectAll().data(uM(t,[a,s],this,n)).enter().append("path").call(Wt,this).call(fM,this,n).call(wM,this,n,i).attr("d",c===xl&&i.projection?O$(i.path(),a,s):Ag().curve(c).defined(f=>f>=0).x(f=>a[f]).y(f=>s[f]))).node()}};function O$(e,t,r){return t=ds(t),r=ds(r),n=>{let o=[],i=[o];for(let a of n)a===-1?(o=[],i.push(o)):o.push([t[a],r[a]]);return e({type:"MultiLineString",coordinates:i})}}function Dt(e,{x:t,y:r,...n}={}){return[t,r]=Pi(t,r),new $h(e,{...n,x:t,y:r})}lt.prototype.plot=function({marks:e=[],...t}={}){return jo({...t,marks:[...e,this]})};var C$=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],jO={background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"};function k$(e,t){let r=[...t?[e.model]:[],`Predicted: ${e.predicted.toFixed(3)}`,`Observed: ${e.observed.toFixed(3)}`];return e.method==="discrete"&&e.events!==void 0&&e.total!==void 0&&(r[r.length-1]+=` ( ${e.events} / ${e.total} )`),r.join(` +`)}function R$(e){let r=[...new Set(e.data.map(p=>p.model))].length>1,n=r?C$:["#000000"],o=e.data.map(p=>({...p,tooltip:k$(p,r)})),i=[];e.references?.some(p=>p.type==="identity")&&i.push(Dt([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2,strokeDasharray:"4,4"})),i.push(Dt(o,{x:"predicted",y:"observed",stroke:"model",strokeWidth:2,title:"tooltip",tip:!0}));let a=o.filter(p=>p.method==="discrete");a.length>0&&i.push(Ss(a,{x:"predicted",y:"observed",fill:"model",stroke:"white",strokeWidth:1.5,r:5,title:"tooltip",tip:!0}));let s=(e.distribution?.length??0)>0,c=jo({width:600,height:s?480:600,marginLeft:64,marginBottom:s?16:56,style:jO,x:{label:s?null:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6,axis:s?null:"bottom"},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:r,range:n},marks:i});if(!s||!e.distribution)return c;let u=e.distribution.map(p=>({...p,tooltip:`${r?`${p.model} +`:""}${p.count} observations in [${(p.midpoint-p.binWidth/2).toFixed(3)}, ${(p.midpoint+p.binWidth/2).toFixed(3)}]`})),f=new Set(e.distribution.map(p=>p.model)).size,m=jo({width:600,height:120,marginLeft:64,marginTop:0,marginBottom:48,style:jO,x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:null,grid:!1,ticks:3},color:{legend:!1,range:n},marks:[Ri(u,{x1:p=>p.midpoint-p.binWidth/2,x2:p=>p.midpoint+p.binWidth/2,y:"count",fill:"model",fillOpacity:1/Math.max(f,1),title:"tooltip",tip:!0})]}),l=document.createElement("div");return l.style.width="600px",l.style.maxWidth="100%",l.append(c,m),l}var UO=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"],yr={width:600,height:500,margins:{top:28,right:28,bottom:58,left:66},background:"#ffffff",frame:{color:"#444444",width:1},typography:{fontFamily:"Arial, Helvetica, sans-serif",fontSize:12,axisTitleSize:14,axisTitleWeight:400,legendSize:12},axis:{color:"#444444",tickSize:5,tickPadding:7,ticks:6,numberFormat:".1f"},colors:UO,line:{width:2,dash:null},marker:{radius:2.5,fill:null,stroke:"#ffffff",strokeWidth:.5},reference:{color:"#BEBEBE",width:1.5,dash:"2,3"},legend:{position:"top",swatchWidth:12,columns:null},tip:{digits:3},predictionDistribution:{emphasizedTrue:"#009E73",nonEmphasizedTrue:"#F4FFF0",emphasizedFalse:"#FAC8CD",nonEmphasizedFalse:"#FFF7F8",observedPositive:"#4C5454",observedNegative:"#E0E0E0"}};function N$(e){let t=e.theme??{};return{...yr,width:e.width??yr.width,height:e.height??yr.height,background:t.background??yr.background,colors:e.colors??yr.colors,margins:{...yr.margins,...t.margins},frame:{...yr.frame,...t.frame},typography:{...yr.typography,...t.typography},axis:{...yr.axis,...t.axis},line:{...yr.line,...t.line},marker:{...yr.marker,...t.marker},reference:{...yr.reference,...t.reference},legend:{...yr.legend,...t.legend},tip:{...yr.tip,...t.tip},predictionDistribution:{...yr.predictionDistribution,...t.predictionDistribution}}}function On(e,t={}){let r=t.allGroups??(typeof e=="number"?Array.from({length:e},(s,c)=>`group-${c+1}`):[...e]),n=N$(t);if(!Number.isFinite(n.width)||n.width<=0||!Number.isFinite(n.height)||n.height<=0)throw new Error("Renderer width and height must be positive finite numbers");if(!Number.isInteger(n.tip.digits)||n.tip.digits<0||n.tip.digits>20)throw new Error("Renderer tip digits must be an integer between 0 and 20");let o=r.length<=1?["#000000"]:[...n.colors];if(o.length1;return{theme:{...n,colors:i},groups:r,colors:i,colorByGroup:new Map(r.map((s,c)=>[s,i[c]])),showLegend:a}}function BO(e){if(!e.operatingPoint)return[];let t=e.operatingPoint.dimension,r=t==="probability_threshold"?e.type==="decision_curve"||e.type==="interventions_avoided"?"threshold":"cutoff":"ppcr";if(t==="probability_threshold"){let n=e.series.map(i=>i.id);if(n.length===0)return[];let o=null;for(let i of n){let s=e.data.filter(u=>u.seriesId===i).map(u=>u[r]).filter(u=>typeof u=="number"&&Number.isFinite(u)),c=new Set(s);if(o===null)o=c;else{let u=o;o=new Set(Array.from(u).filter(f=>c.has(f)))}}return Array.from(o??[]).sort((i,a)=>i-a)}else{let n=e.data.map(i=>i[r]).filter(i=>typeof i=="number"&&Number.isFinite(i));return[...new Set(n)].sort((i,a)=>i-a)}}function A$(e,t){let r=e.series.filter(o=>t.has(o.display.group)),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId))}}function of(e,t,r,n,o){let i=wl(e),a=n;if(i.length<=1)return r(e,t,a,g=>{a=g,o&&o(g)});let s={...t,allGroups:i,showLegend:!1},c=On(i,s),{theme:u,colorByGroup:f}=c,m=new Map(e.series.map(g=>[g.display.group,g.display.label])),l=new Set(i),p=document.createElement("div");p.className="rtichoke-legend-chart",p.style.maxWidth=`${u.width}px`;let h=document.createElement("div");h.className="rtichoke-legend",h.style.paddingLeft=`${u.margins.left}px`,h.setAttribute("aria-label","Chart legend");let y=new Map;i.forEach(g=>{let _=document.createElement("button");_.type="button",_.className="rtichoke-legend-item",_.setAttribute("aria-pressed","true");let x=m.get(g)??g;_.setAttribute("aria-label",`Toggle series ${x}`);let I=document.createElement("span");I.className="rtichoke-legend-swatch";let S=document.createElement("span");S.className="rtichoke-legend-line",S.style.backgroundColor=f.get(g)??"#000000",I.append(S);let v=document.createElement("span");v.className="rtichoke-legend-label",v.textContent=x,_.append(I,v),h.append(_),y.set(g,_)});let b=document.createElement("div");b.className="rtichoke-legend-content";let w=()=>{let g=A$(e,l),_=r(g,s,a,x=>{a=x,o&&o(x)});b.replaceChildren(_)};return i.forEach(g=>{let _=y.get(g);_.addEventListener("click",()=>{if(l.has(g)){if(l.size<=1)return;l.delete(g),_.setAttribute("aria-pressed","false")}else l.add(g),_.setAttribute("aria-pressed","true");w()})}),p.append(h,b),w(),p}function Is(e,t,r,n,o){if(!e.operatingPoint)return r(e,void 0);let i=BO(e);if(i.length===0)return r(e,void 0);let a=On(wl(e),t),{theme:s}=a,c=document.createElement("div");c.className="rtichoke-operating-point-chart",c.style.maxWidth=`${s.width}px`;let u=document.createElement("div");u.className="rtichoke-operating-point-control",u.style.marginLeft=`${s.margins.left}px`,u.style.marginRight=`${s.margins.right}px`;let f=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"Predicted positives condition rate (PPCR)",m=e.operatingPoint.dimension==="probability_threshold"?"Probability threshold":"PPCR",l=document.createElement("label");l.className="rtichoke-operating-point-label";let p=document.createElement("span");p.textContent=`${m}: `;let h=document.createElement("span");h.className="rtichoke-operating-point-value";let y=document.createElement("input");y.type="range",y.className="rtichoke-operating-point-slider",y.min="0",y.max=String(i.length-1),y.step="1",y.setAttribute("aria-label",f);let b=0;if(n!==void 0){let I=i.indexOf(n);I!==-1&&(b=I)}let w=i[b];y.value=String(b);let g=w.toFixed(s.tip.digits);h.textContent=g,y.setAttribute("aria-valuetext",g),o&&o(w),l.append(p,h),u.append(l,y);let _=document.createElement("div");_.className="rtichoke-operating-point-content";let x=I=>{_.replaceChildren(r(e,I))};return y.addEventListener("input",()=>{let I=Number(y.value),S=i[I],v=S.toFixed(s.tip.digits);h.textContent=v,y.setAttribute("aria-valuetext",v),o&&o(S),x(S)}),c.append(_,u),x(w),c}function E$(e){return new Map(e.series.map(t=>[t.id,t.display]))}function wl(e){return[...new Set(e.series.map(t=>t.display.group))]}function Dh(e,t){let r=E$(e);return t.map(n=>({...n,group:r.get(n.seriesId).group,label:r.get(n.seriesId).label}))}function Ct(e,t){return t.filter(([,r])=>r!==void 0).map(([r,n])=>`${r}: ${typeof n=="number"?n.toFixed(e):String(n)}`).join(` +`)}function Lh(e,t){let{theme:r}=e,n=new Map(t.series.map(o=>[o.display.group,o.display.label]));return{width:r.width,height:r.height,marginTop:r.margins.top,marginRight:r.margins.right,marginBottom:r.margins.bottom,marginLeft:r.margins.left,style:{background:r.background,color:r.axis.color,fontFamily:r.typography.fontFamily,fontSize:`${r.typography.fontSize}px`},color:{legend:e.showLegend,domain:e.groups,range:e.colors,tickFormat:o=>n.get(o)??o}}}function wa(e,t,r){return{label:t,domain:r,grid:!1,line:!0,ticks:e.axis.ticks,tickSize:e.axis.tickSize,tickPadding:e.axis.tickPadding,tickFormat:e.axis.numberFormat}}function N1(e,t){let r={stroke:t.reference.color,strokeWidth:t.reference.width,strokeDasharray:t.reference.dash},n=[];for(let o of e.references??[])o.type==="identity"?n.push(Dt([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",...r,title:o.label})):o.type==="horizontal"&&o.value!==void 0?n.push(Qn([o.value],{...r,title:o.label})):o.type==="path"&&o.points&&n.push(Dt(o.points,{x:"x",y:"y",...r,title:o.label}));return n}function Vh(e,t){return e}function F$(e,t,r=40){let n=new Map;for(let i of e){let a=t(i),s=n.get(a);s||(s=[],n.set(a,s)),s.push(i)}let o=[];for(let i of n.values()){let a=i.length;if(a<=r)o.push(...i);else{let s=new Set;for(let c=0;cf.seriesId,40),a=n.theme,s=o?.marker?.radius??a.marker.radius,c=o?.marker?.stroke??a.marker.stroke,u=o?.marker?.strokeWidth??a.marker.strokeWidth;return Ss(i,{ariaLabel:"ordinary-point",x:t,y:r,fill:"group",stroke:c,strokeWidth:u,r:s,title:f=>f.title,tip:!0})}function sf(e,t,r,n,o){let i=n.groups.length>1,a=o?.marker?.fill??(i?"group":"#f6e3be"),s=o?.marker?.stroke??"#1a1a1a",c=o?.marker?.strokeWidth??2.5,u=o?.marker?.radius??7.5;return Ss(e,{className:"rtichoke-selected-operating-point",x:t,y:r,fill:a,stroke:s,strokeWidth:c,r:u,title:f=>f.title,tip:!0})}function Uo(e,t){let r=jo(e);for(let n of r.querySelectorAll('[aria-label$="axis label"] text'))n.style.fontSize=`${t.typography.axisTitleSize}px`,n.style.fontWeight=String(t.typography.axisTitleWeight);for(let n of r.querySelectorAll('[aria-label="frame"]'))n.setAttribute("stroke",t.frame.color);if(r instanceof HTMLElement){r.style.fontSize=`${t.typography.legendSize}px`;for(let n of r.querySelectorAll('svg[width="15"], div[class*="-swatches"] svg'))n.setAttribute("width",String(t.legend.swatchWidth)),n.setAttribute("height","10")}return r}function $$(e,t={},r){ni(e);let n=On(wl(e),t),{theme:o}=n,i=e.operatingPoint?.dimension,a=Dh(e,e.data).map(c=>{let u=1-c.specificity,f=[["Series",c.label]];return i==="ppcr"?(c.ppcr!==void 0&&f.push(["PPCR",c.ppcr]),f.push(["Cutoff",c.cutoff])):(f.push(["Cutoff",c.cutoff]),c.ppcr!==void 0&&f.push(["PPCR",c.ppcr])),f.push(["Sensitivity",c.sensitivity],["Specificity",c.specificity],["False Positive Rate",u]),{...c,false_positive_rate:u,title:Ct(o.tip.digits,f)}}),s=N1(e,o);if(s.push(Dt(a,{x:"false_positive_rate",y:"sensitivity",z:"seriesId",stroke:"group",strokeWidth:o.line.width,strokeDasharray:o.line.dash??void 0,title:c=>c.title,tip:!0}),af(a,"false_positive_rate","sensitivity",n,t.theme)),r!==void 0&&e.operatingPoint){let c=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr",u=a.filter(f=>f[c]===r);u.length>0&&s.push(sf(u,"false_positive_rate","sensitivity",n,t.theme))}return Uo({...Lh(n,e),x:wa(o,e.xAxis.label,e.xAxis.domain),y:wa(o,e.yAxis.label,e.yAxis.domain),marks:Vh(s,o)},o)}function A1(e,t={}){return of(e,t,(r,n,o,i)=>cf(r,(a,s,c)=>Is(a,n,(u,f)=>$$(u,n,f),s,c),o,i))}function E1(e,t={}){ni(e);let r=On(wl(e),t),{theme:n}=r,o=Dh(e,e.data).map(y=>({...y,title:Ct(n.tip.digits,[["Series",y.label],["Predicted",y.predicted],["Observed",y.observed],["Events",y.events],["Total",y.total]])})),i=N1(e,n);i.push(Dt(o,{x:"predicted",y:"observed",z:"seriesId",stroke:"group",strokeWidth:n.line.width,strokeDasharray:n.line.dash??void 0,title:y=>y.title,tip:!0}));let a=o.filter(y=>y.method==="discrete");a.length>0&&i.push(Ss(a,{x:"predicted",y:"observed",fill:n.marker.fill??"group",stroke:n.marker.stroke,strokeWidth:n.marker.strokeWidth,r:n.marker.radius,title:y=>y.title,tip:!0}));let s=(e.distribution?.length??0)>0,c=s?Math.round(n.height*.8):n.height,u=o.map(y=>y.observed).filter(Number.isFinite),f=e.yAxis.domain??[Math.min(0,...u),Math.max(1,...u)],m=Uo({...Lh(r,e),height:c,marginBottom:s?8:n.margins.bottom,x:s?{...wa(n,e.xAxis.label,e.xAxis.domain),axis:null,label:null}:wa(n,e.xAxis.label,e.xAxis.domain),y:wa(n,e.yAxis.label,f),marks:Vh(i,n)},n);if(!s||!e.distribution)return m;let l=Dh(e,e.distribution).map(y=>({...y,title:Ct(n.tip.digits,[["Series",y.label],["Midpoint",y.midpoint],["Count",y.count]])})),p=Uo({...Lh(r,e),height:n.height-c,marginTop:0,marginBottom:n.margins.bottom,x:wa(n,e.xAxis.label,e.xAxis.domain),y:{label:null,grid:!1,ticks:3,tickSize:n.axis.tickSize,tickPadding:n.axis.tickPadding},color:{legend:!1,domain:r.groups,range:r.colors},marks:Vh([Ri(l,{x1:y=>y.midpoint-y.binWidth/2,x2:y=>y.midpoint+y.binWidth/2,y:"count",fill:"group",fillOpacity:1/Math.max(r.groups.length,1),title:y=>y.title,tip:!0})],n)},n),h=document.createElement("div");return h.className="rtichoke-calibration",h.style.width=`${n.width}px`,h.style.maxWidth="100%",h.append(m,p),h}function D$(e,t,r,n,o){ni(e);let i=On(wl(e),t),{theme:a}=i,s=e.operatingPoint?.dimension,c=Dh(e,e.data).map(f=>{let m=f,l=[["Series",f.label]];return e.type==="precision_recall"?(s==="ppcr"?(m.ppcr!==void 0&&l.push(["PPCR",m.ppcr]),l.push(["Cutoff",m.cutoff])):(l.push(["Cutoff",m.cutoff]),m.ppcr!==void 0&&l.push(["PPCR",m.ppcr])),l.push(["Sensitivity",m.sensitivity],["PPV",m.ppv])):e.type==="gains"?(s==="probability_threshold"?(l.push(["Cutoff",m.cutoff]),l.push(["PPCR",m.ppcr])):(l.push(["PPCR",m.ppcr]),l.push(["Cutoff",m.cutoff])),l.push(["Sensitivity",m.sensitivity])):e.type==="lift"&&(s==="probability_threshold"?(l.push(["Cutoff",m.cutoff]),l.push(["PPCR",m.ppcr])):(l.push(["PPCR",m.ppcr]),l.push(["Cutoff",m.cutoff])),l.push(["Lift",m.lift])),{...f,title:Ct(a.tip.digits,l)}}),u=N1(e,a);if(u.push(Dt(c,{x:r,y:n,z:"seriesId",stroke:"group",strokeWidth:a.line.width,strokeDasharray:a.line.dash??void 0,title:f=>f.title,tip:!0}),af(c,r,n,i,t.theme)),o!==void 0&&e.operatingPoint){let m=e.operatingPoint.dimension==="probability_threshold"?"cutoff":"ppcr",l=c.filter(p=>p[m]===o);l.length>0&&u.push(sf(l,r,n,i,t.theme))}return Uo({...Lh(i,e),x:wa(a,e.xAxis.label,e.xAxis.domain),y:wa(a,e.yAxis.label,e.yAxis.domain),marks:Vh(u,a)},a)}function L$(e){return[...new Set(e.series.map(t=>t.horizon).filter(t=>t!==void 0))]}function V$(e,t){let r=e.series.filter(o=>o.horizon===void 0||o.horizon===t),n=new Set(r.map(o=>o.id));return{...e,series:r,data:e.data.filter(o=>n.has(o.seriesId)),references:e.references?.filter(o=>o.scope!=="population_horizon"||o.horizon===t)}}function cf(e,t,r,n){let o=L$(e);if(o.length<=1)return t(e,r,n);let i=r,a=document.createElement("div");a.className="rtichoke-horizon-chart";let s=document.createElement("label");s.className="rtichoke-horizon-control",s.textContent="Fixed Time Horizon: ";let c=document.createElement("select");c.className="rtichoke-horizon-select",c.setAttribute("aria-label","Fixed Time Horizon");for(let m of o){let l=document.createElement("option");l.value=String(m),l.textContent=String(m),c.append(l)}s.append(c);let u=document.createElement("div"),f=m=>{u.replaceChildren(t(V$(e,m),i,l=>{i=l,n&&n(l)}))};return c.addEventListener("change",()=>f(Number(c.value))),a.append(s,u),f(o[0]),a}function F1(e,t,r,n){return of(e,t,(o,i,a,s)=>cf(o,(c,u,f)=>Is(c,i,(m,l)=>D$(m,i,r,n,l),u,f),a,s))}function $1(e,t={}){return F1(e,t,"sensitivity","ppv")}function D1(e,t={}){return F1(e,t,"ppcr","sensitivity")}function L1(e,t={}){return F1(e,t,"ppcr","lift")}function V1(e,t={}){return ni(e),of(e,t,(r,n,o,i)=>cf(r,(a,s,c)=>Is(a,n,(u,f)=>j$(u,n,f),s,c),o,i))}function j$(e,t,r){let n=[...new Set(e.series.map(p=>p.display.group))],o=On(n,{...t,showLegend:!1}),{theme:i}=o,a=new Map(e.series.map(p=>[p.id,p.display])),s=new Map(e.series.map(p=>[p.display.group,p.display.label])),c=e.data.map(p=>({...p,group:a.get(p.seriesId).group,label:a.get(p.seriesId).label,title:Ct(i.tip.digits,[["Series",a.get(p.seriesId).label],["Threshold",p.threshold],["Net Benefit",p.netBenefit]])})),u={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},f={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:"4,3"},m=[];for(let p of e.references)p.benchmark==="treat_none"?m.push(Qn([0],{...u,title:()=>p.label??"Treat None"})):m.push(Dt(p.points,{x:"x",y:"y",...f,title:()=>p.label??`Treat All \u2014 ${p.population}`}));if(m.push(Dt(c,{x:"threshold",y:"netBenefit",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),af(c,"threshold","netBenefit",o,t.theme)),r!==void 0&&e.operatingPoint){let p=c.filter(h=>h.threshold===r);p.length>0&&m.push(sf(p,"threshold","netBenefit",o,t.theme))}let l=(p,h)=>({label:p,domain:h,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat});return Uo({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:p=>s.get(p)??p},x:l(e.xAxis.label,e.xAxis.domain),y:l(e.yAxis.label,e.yAxis.domain),marks:m},i)}function j1(e,t={}){return ni(e),of(e,t,(r,n,o,i)=>cf(r,(a,s,c)=>Is(a,n,(u,f)=>U$(u,n,f),s,c),o,i))}function U$(e,t,r){let n=[...new Set(e.series.map(p=>p.display.group))],o=On(n,{...t,showLegend:!1}),{theme:i}=o,a=new Map(e.series.map(p=>[p.id,p.display])),s=new Map(e.series.map(p=>[p.display.group,p.display.label])),c=e.data.map(p=>({...p,group:a.get(p.seriesId).group,label:a.get(p.seriesId).label,title:Ct(i.tip.digits,[["Series",a.get(p.seriesId).label],["Threshold",p.threshold],["Interventions Avoided",p.interventionsAvoided]])})),u={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:i.reference.dash},f={stroke:i.reference.color,strokeWidth:i.reference.width,strokeDasharray:"4,3"},m=[];for(let p of e.references)p.benchmark==="treat_all"?m.push(Qn([0],{...u,title:()=>p.label??"Treat All"})):m.push(Dt(p.points,{x:"x",y:"y",...f,title:()=>p.label??`Treat None \u2014 ${p.population}`}));if(m.push(Dt(c,{x:"threshold",y:"interventionsAvoided",z:"seriesId",stroke:"group",strokeWidth:i.line.width,strokeDasharray:i.line.dash??void 0}),af(c,"threshold","interventionsAvoided",o,t.theme)),r!==void 0&&e.operatingPoint){let p=c.filter(h=>h.threshold===r);p.length>0&&m.push(sf(p,"threshold","interventionsAvoided",o,t.theme))}let l=(p,h)=>({label:p,domain:h,grid:!1,line:!0,ticks:i.axis.ticks,tickSize:i.axis.tickSize,tickPadding:i.axis.tickPadding,tickFormat:i.axis.numberFormat});return Uo({width:i.width,height:i.height,marginTop:i.margins.top,marginRight:i.margins.right,marginBottom:i.margins.bottom,marginLeft:i.margins.left,style:{background:i.background,color:i.axis.color,fontFamily:i.typography.fontFamily,fontSize:`${i.typography.fontSize}px`},color:{legend:o.showLegend,domain:o.groups,range:o.colors,tickFormat:p=>s.get(p)??p},x:l(e.xAxis.label,e.xAxis.domain),y:l(e.yAxis.label,e.yAxis.domain),marks:m},i)}var jr="\u2014",B$=[{id:"sensitivity",defaultLabel:"Sensitivity"},{id:"specificity",defaultLabel:"Specificity"},{id:"ppv",defaultLabel:"PPV"},{id:"npv",defaultLabel:"NPV"},{id:"lift",defaultLabel:"Lift"},{id:"net_benefit",defaultLabel:"Net Benefit"}];function Jn(e,t,r){let n=e.createElement("td"),o=e.createElement("span");return o.className="rtichoke-performance-table__cell-text",o.textContent=t,n.append(o),r&&(n.className=r),n}function yt(e,t,r){let n=e.createElement("th");return n.scope=r?.scope??"col",r?.colSpan&&(n.colSpan=r.colSpan),r?.rowSpan&&(n.rowSpan=r.rowSpan),n.textContent=t,r?.className&&(n.className=r.className),r?.ariaLabel&&n.setAttribute("aria-label",r.ariaLabel),n}function z$(e){let t=new Map(e.map(a=>[a.metricId,a.estimate])),r=t.get("true_positives"),n=t.get("true_negatives"),o=t.get("false_positives"),i=t.get("false_negatives");return r==null||isNaN(r)||n===void 0||n===null||isNaN(n)||o===void 0||o===null||isNaN(o)||i===void 0||i===null||isNaN(i)?null:{tp:r,tn:n,fp:o,fn:i}}function Sa(e,t,r,n){let o=e.createElement("td");o.className=n;let i=e.createElement("span");i.className="rtichoke-performance-table__confusion-val",i.textContent=jh(t);let a=e.createElement("span");if(a.className="rtichoke-performance-table__confusion-pct",r>0&&!isNaN(t)&&!isNaN(r)){let s=t/r*100;a.textContent=`${s.toFixed(2)}%`}else a.textContent=jr;return o.append(i,a),o}var G$=0;function zO(e){return e.split("_").map((t,r)=>r===0?t.charAt(0).toUpperCase()+t.slice(1):t).join(" ")}function jh(e){return Number.isInteger(e)?e.toString():new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(e)}function K$(e){return e.toFixed(2)}function q$(e){if(e.length<=1)return 2;let t=2;for(;t<=6;){let r=e.map(o=>o.toFixed(t));if(new Set(r).size===new Set(e).size)return t;t++}return t}function H$(e,t){if(!e||e.estimate===null||e.estimate===void 0||isNaN(e.estimate))return jr;let r=t(e.estimate);if(e.lower===void 0&&e.upper===void 0)return r;let n=e.lower===void 0||e.lower===null||isNaN(e.lower)?jr:t(e.lower),o=e.upper===void 0||e.upper===null||isNaN(e.upper)?jr:t(e.upper);return`${r} [${n}, ${o}]`}function Sl(e,t,r,n=!1,o=!1,i="positive"){if(isNaN(r)||!isFinite(r))return;let a=t.createElement("div");a.className="rtichoke-performance-table__bar";let s=t.createElement("div");if(s.className="rtichoke-performance-table__bar-fill",n){let c=Math.min(Math.max(r,0),50);s.style.width=`${c}%`,o?(s.classList.add("rtichoke-performance-table__bar-fill--negative"),s.style.right="50%",s.style.left="auto"):(s.classList.add("rtichoke-performance-table__bar-fill--positive"),s.style.left="50%",s.style.right="auto")}else{let c=Math.min(Math.max(r,0),100);s.style.width=`${c}%`,i==="neutral"?s.classList.add("rtichoke-performance-table__bar-fill--neutral"):s.classList.add("rtichoke-performance-table__bar-fill--positive")}a.append(s),e.append(a)}function U1(e,t=globalThis.document){_y(e);let r=t.createElement("div");if(r.className="rtichoke-performance-table",e.title){let K=t.createElement("div");K.className="rtichoke-performance-table__title",K.textContent=e.title,r.append(K)}let n=t.createElement("div");n.className="rtichoke-performance-table__scroll";let o=t.createElement("table");o.className="rtichoke-performance-table__table";let i=new Map(e.evaluations.map(K=>[K.id,K])),a=new Set(e.evaluations.map(K=>K.model).filter(Boolean)),s=new Set(e.evaluations.map(K=>K.population).filter(Boolean)),c=a.size>1,u=s.size>1,f=c,m=u||!c&&a.size===0&&s.size>1,l=e.evaluations.some(K=>K.label?!!(c&&K.label!==K.model||u&&K.label!==K.population||!c&&!u&&K.label!==K.model&&K.label!==K.population):!1),p=e.rows.some(K=>K.horizon!==void 0),h=e.rows.some(K=>K.context?.censoringHeuristic!==void 0),y=e.rows.some(K=>K.context?.competingEventHeuristic!==void 0),b=new Set(e.rows.map(K=>K.operatingPoint.type)),w=b.size===1&&b.has("probability_threshold"),g=b.size===1&&b.has("ppcr"),_=new Set(e.metrics.map(K=>K.id)),x=_.has("predicted_positives"),I=_.has("ppcr"),S=x&&(I||g),v=w||!g&&b.has("probability_threshold"),T=S,O=g&&!S,R=!w&&!g&&!S,C=e.rows.filter(K=>K.operatingPoint.type==="probability_threshold").map(K=>K.operatingPoint.value),k=q$(C),z=B$.map(K=>{let Z=e.metrics.find(Y=>Y.id===K.id);return Z?{id:Z.id,label:Z.label||K.defaultLabel}:null}).filter(K=>K!==null),j=new Set,M=z.filter(K=>j.has(K.label)?!1:(j.add(K.label),!0)),U=0,L=0;for(let K of e.rows)for(let Z of K.values)if(Z.metricId==="lift"&&Z.estimate!==null&&Z.estimate!==void 0&&isFinite(Z.estimate)&&Z.estimate>U&&(U=Z.estimate),Z.metricId==="net_benefit"&&Z.estimate!==null&&Z.estimate!==void 0&&isFinite(Z.estimate)){let Y=Math.abs(Z.estimate);Y>L&&(L=Y)}let re=++G$,V=t.createElement("thead");V.className="rtichoke-performance-table__header";let q=t.createElement("tr"),H=t.createElement("tr"),W=1;if(H.append(yt(t,"",{ariaLabel:"Row details",className:"rtichoke-performance-table__toggle-header"})),f&&(W++,H.append(yt(t,"Model"))),m&&(W++,H.append(yt(t,"Population"))),l&&(W++,H.append(yt(t,"Evaluation"))),v&&(W++,H.append(yt(t,"Probability Threshold"))),T&&(W++,H.append(yt(t,"Predicted Positives"))),O&&(W++,H.append(yt(t,"PPCR"))),R&&(W++,H.append(yt(t,"Operating Point"))),p&&(W++,H.append(yt(t,"Time Horizon"))),h&&(W++,H.append(yt(t,"Censoring"))),y&&(W++,H.append(yt(t,"Competing Event"))),M.length>0){let K=yt(t,"",{colSpan:W,className:"rtichoke-performance-table__spanner--empty"});q.append(K)}if(M.length>0){let K=yt(t,"Performance Metrics",{colSpan:M.length,className:"rtichoke-performance-table__spanner"});q.append(K);for(let Z of M)H.append(yt(t,Z.label,{className:"rtichoke-performance-table__metric-header"}))}V.append(q),V.append(H),o.append(V);let te=W+M.length,be=t.createElement("tbody");for(let K=0;K0?"100.00%":jr,mf.append(we,Me),Ta.append(mf),va.append(Ta),bt.append(va),ue.append(bt),oe.append(ue),E.append(oe),G.addEventListener("click",()=>{if(!E)return;let he=G.getAttribute("aria-expanded")==="true";G.setAttribute("aria-expanded",he?"false":"true"),G.setAttribute("aria-label",he?"Show confusion matrix detail":"Hide confusion matrix detail"),G.textContent=he?"\u25B8":"\u25BE",E.hidden=he})}ee.append(Q),f&&ee.append(Jn(t,Y?.model??jr,"rtichoke-performance-table__model")),m&&ee.append(Jn(t,Y?.population??jr,"rtichoke-performance-table__population")),l&&ee.append(Jn(t,Y?.label??Y?.id??jr,"rtichoke-performance-table__evaluation"));let me=new Map(Z.values.map(G=>[G.metricId,G]));if(v){let G=Z.operatingPoint.type==="probability_threshold"?Z.operatingPoint.value:void 0,oe=G!==void 0?G.toFixed(k):jr;ee.append(Jn(t,oe,"rtichoke-performance-table__op"))}if(T){let G=me.get("predicted_positives")?.estimate,oe=me.get("ppcr")?.estimate??(Z.operatingPoint.type==="ppcr"?Z.operatingPoint.value:void 0),ue=jr,Ce=NaN;if(G!=null&&oe!==void 0&&oe!==null){let bt=jh(G),ao=(oe*100).toFixed(2);ue=`${bt} (${ao}%)`,Ce=oe*100}else oe!=null&&(ue=`${(oe*100).toFixed(2)}%`,Ce=oe*100);let Ge=Jn(t,ue,"rtichoke-performance-table__op");isNaN(Ce)||Sl(Ge,t,Ce,!1,!1,"neutral"),ee.append(Ge)}if(O){let G=Z.operatingPoint.type==="ppcr"?Z.operatingPoint.value:me.get("ppcr")?.estimate,oe=G!=null?`PPCR ${G.toFixed(2)}`:jr,ue=Jn(t,oe,"rtichoke-performance-table__op");G!=null&&Sl(ue,t,G*100,!1,!1,"neutral"),ee.append(ue)}if(R){let G=Z.operatingPoint.type==="ppcr"?`PPCR ${Z.operatingPoint.value.toFixed(2)}`:`Threshold ${Z.operatingPoint.value.toFixed(k)}`;ee.append(Jn(t,G,"rtichoke-performance-table__op"))}if(p&&ee.append(Jn(t,Z.horizon!==void 0?jh(Z.horizon):jr,"rtichoke-performance-table__horizon")),h){let G=Z.context?.censoringHeuristic;ee.append(Jn(t,G?zO(G):jr,"rtichoke-performance-table__context"))}if(y){let G=Z.context?.competingEventHeuristic;ee.append(Jn(t,G?zO(G):jr,"rtichoke-performance-table__context"))}for(let G of M){let oe=me.get(G.id),ue=H$(oe,K$),Ce=Jn(t,ue,"rtichoke-performance-table__metric");if(Ce.dataset.metricId=G.id,oe&&oe.estimate!==null&&oe.estimate!==void 0&&isFinite(oe.estimate)){let Ge=oe.estimate;if(["sensitivity","specificity","ppv","npv"].includes(G.id))Sl(Ce,t,Ge*100);else if(G.id==="lift"){let bt=U>0?Ge/U*100:0;Sl(Ce,t,bt)}else if(G.id==="net_benefit"&&L>0){let bt=Ge<0,ao=Math.abs(Ge)/L*50;Sl(Ce,t,ao,!0,bt)}}ee.append(Ce)}be.append(ee),E&&be.append(E)}return o.append(be),n.append(o),r.append(n),r}var Y$=0;function W$(e,t){let{emphasizedTrue:r,nonEmphasizedTrue:n,emphasizedFalse:o,nonEmphasizedFalse:i}=e;switch(t){case"predicted_positives":return{tp:r,fp:o,tn:n,fn:i};case"predicted_negatives":return{tn:r,fn:o,tp:n,fp:i};case"real_positives":return{tp:r,fn:o,tn:n,fp:i};case"real_negatives":return{tn:r,fp:o,tp:n,fn:i};case"all_observations":default:return{tp:r,fp:o,tn:r,fn:o}}}function GO(e,t,r,n,o){let i=e.operatingPoints.filter(I=>I.evaluationId===t&&I.type===r).sort((I,S)=>I.value-S.value),a=i.find(I=>Math.abs(I.value-n)<1e-6)??i[0],s=a?a.cutoff:0,c=a?a.realizedPpcr:0,u=e.bins.filter(I=>I.evaluationId===t).sort((I,S)=>I.lower-S.lower),f=0;for(let I of u)f+=I.nPositive+I.nNegative;let m=null,l=null;if(a?.performance&&a.performance.length>0){let I=M=>{let U=a.performance?.find(L=>L.metricId===M);return U&&U.estimate!==void 0&&U.estimate!==null?U.estimate:null},S=I("true_positives"),v=I("false_positives"),T=I("true_negatives"),O=I("false_negatives"),R=I("sensitivity"),C=I("specificity"),k=I("ppv"),z=I("npv"),j=I("lift");if((R!==null||C!==null||k!==null||z!==null||j!==null)&&(m={sensitivity:R,specificity:C,ppv:k,npv:z,lift:j}),S!==null&&v!==null&&T!==null&&O!==null){let M=S+O,U=T+v,L=S+v,re=T+O;l={tp:S,fp:v,tn:T,fn:O,totalPositives:M,totalNegatives:U,totalPredictedPos:L,totalPredictedNeg:re}}}let p=e.evaluations.find(I=>I.id===t),h=p?.label??p?.model??p?.population??t,y=[],b=[];if(r==="probability_threshold"){let I=u.find(v=>v.lower===0&&v.upper===0),S=u.filter(v=>!(v.lower===0&&v.upper===0));if(I){let v=s===0?!0:I.upper>s,T=v?"TP":"FN",O=v?"True Positive (TP)":"False Negative (FN)",R=v?"FP":"TN",C=v?"False Positive (FP)":"True Negative (TN)";I.nPositive>0&&b.push({category:"Observed Positives",count:I.nPositive,classificationCell:T,cellLabel:O,title:Ct(o,[["Evaluation",h],["Score Interval","[0, 0]"],["Outcome","Observed Positive"],["Count",I.nPositive],["Classification",O]])}),I.nNegative>0&&b.push({category:"Observed Negatives",count:I.nNegative,classificationCell:R,cellLabel:C,title:Ct(o,[["Evaluation",h],["Score Interval","[0, 0]"],["Outcome","Observed Negative"],["Count",I.nNegative],["Classification",C]])})}for(let v=0;vs,z=k?"TP":"FN",j=k?"True Positive (TP)":"False Negative (FN)",M=k?"FP":"TN",U=k?"False Positive (FP)":"True Negative (TN)",L=s===0?!0:T.upper>s,re=L?"TP":"FN",V=L?"True Positive (TP)":"False Negative (FN)",q=L?"FP":"TN",H=L?"False Positive (FP)":"True Negative (TN)",W=I.nPositive+T.nPositive,te=I.nNegative+T.nNegative;z===re?W>0&&y.push({x1:O,x2:R,category:"Observed Positives",count:W,classificationCell:re,cellLabel:V,isPredictedPositive:L,title:Ct(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",W],["Classification",V]])}):(I.nPositive>0&&y.push({x1:O,x2:R,category:"Observed Positives",count:I.nPositive,classificationCell:z,cellLabel:j,isPredictedPositive:k,title:Ct(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",I.nPositive],["Classification",j]])}),T.nPositive>0&&y.push({x1:O,x2:R,category:"Observed Positives",count:T.nPositive,classificationCell:re,cellLabel:V,isPredictedPositive:L,title:Ct(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",T.nPositive],["Classification",V]])})),M===q?te>0&&y.push({x1:O,x2:R,category:"Observed Negatives",count:te,classificationCell:q,cellLabel:H,isPredictedPositive:L,title:Ct(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",te],["Classification",H]])}):(I.nNegative>0&&y.push({x1:O,x2:R,category:"Observed Negatives",count:I.nNegative,classificationCell:M,cellLabel:U,isPredictedPositive:k,title:Ct(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",I.nNegative],["Classification",U]])}),T.nNegative>0&&y.push({x1:O,x2:R,category:"Observed Negatives",count:T.nNegative,classificationCell:q,cellLabel:H,isPredictedPositive:L,title:Ct(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",T.nNegative],["Classification",H]])}))}else{let k=s===0?!0:T.upper>s,z=k?"TP":"FN",j=k?"True Positive (TP)":"False Negative (FN)",M=k?"FP":"TN",U=k?"False Positive (FP)":"True Negative (TN)";T.nPositive>0&&y.push({x1:O,x2:R,category:"Observed Positives",count:T.nPositive,classificationCell:z,cellLabel:j,isPredictedPositive:k,title:Ct(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Positive"],["Count",T.nPositive],["Classification",j]])}),T.nNegative>0&&y.push({x1:O,x2:R,category:"Observed Negatives",count:T.nNegative,classificationCell:M,cellLabel:U,isPredictedPositive:k,title:Ct(o,[["Evaluation",h],["Score Interval",C],["Outcome","Observed Negative"],["Count",T.nNegative],["Classification",U]])})}}}else{let I=(e.rankBins??[]).filter(S=>S.evaluationId===t).sort((S,v)=>S.rankLower-v.rankLower);for(let S of I){let v=S.rankLower,T=S.rankUpper,O=S.positiveMass+S.negativeMass,R=v>=1-n-1e-9,C=R?"TP":"FN",k=R?"True Positive (TP)":"False Negative (FN)",z=R?"FP":"TN",j=R?"False Positive (FP)":"True Negative (TN)";if(O>0){let M=`[${v.toFixed(o)}, ${T.toFixed(o)}]`;S.positiveMass>0&&y.push({x1:v,x2:T,category:"Observed Positives",count:S.positiveMass,classificationCell:C,cellLabel:k,isPredictedPositive:R,title:Ct(o,[["Evaluation",h],["Population Rank Percentile",M],["Outcome","Observed Positive"],["Count",S.positiveMass],["Classification",k]])}),S.negativeMass>0&&y.push({x1:v,x2:T,category:"Observed Negatives",count:S.negativeMass,classificationCell:z,cellLabel:j,isPredictedPositive:R,title:Ct(o,[["Evaluation",h],["Population Rank Percentile",M],["Outcome","Observed Negative"],["Count",S.negativeMass],["Classification",j]])})}}}let w=s,g="Prediction Score",_="Count",x=1;if(r==="probability_threshold"){w=s,g="Prediction Score";let I=0,S=new Map;for(let v of y)S.set(v.x1,(S.get(v.x1)??0)+v.count);for(let v of S.values())I=Math.max(I,v);x=Math.max(1,Math.ceil(I*1.15))}else{w=1-n,g="Risk Percentile";let I=0,S=new Map;for(let v of y)S.set(v.x1,(S.get(v.x1)??0)+v.count);for(let v of S.values())I=Math.max(I,v);x=Math.max(1,Math.ceil(I*1.15))}return{evalId:t,evalLabel:h,dim:r,currentValue:n,cutoff:s,realizedPpcr:c,cutoffX:w,xAxisLabel:g,yAxisLabel:_,yMax:x,totalN:f,performanceMetrics:m,confusion:l,ordinaryPlotData:y,zeroAtomPlotData:b}}function B1(e,t={}){$f(e);let r=++Y$,n=On(2,t),{theme:o}=n,i=o.tip.digits,a=e.evaluations[0].id,s=ee=>{let A=new Set;for(let Q of e.operatingPoints)Q.evaluationId===ee&&A.add(Q.type);let B=[];return A.has("probability_threshold")&&B.push("probability_threshold"),A.has("ppcr")&&B.push("ppcr"),B},c=(ee,A)=>e.operatingPoints.filter(B=>B.evaluationId===ee&&B.type===A).sort((B,Q)=>B.value-Q.value),u=s(a),f=e.operatingPoint?.dimension&&u.includes(e.operatingPoint.dimension)?e.operatingPoint.dimension:u[0]??"probability_threshold",m=(ee,A)=>{let B=c(ee,A);return[...new Set(B.map(Q=>Q.value))].sort((Q,E)=>Q-E)},l=(ee,A,B)=>{let Q=m(ee,A);return Q.length===0?0:B!==void 0&&Q.some(E=>Math.abs(E-B)<1e-6)?B:Q.some(E=>Math.abs(E-.5)<1e-6)?.5:Q[0]},p=l(a,f),h="stacked",y="confusion_matrix_cell",b="all_observations",w=document.createElement("div");w.className="rtichoke-prediction-distribution",w.style.width=`${o.width}px`,w.style.maxWidth="100%";let g=document.createElement("div");g.className="rtichoke-prediction-distribution__controls";let _=document.createElement("select");_.className="rtichoke-prediction-distribution__select",_.setAttribute("aria-label","Evaluation"),_.style.display="none";let x=document.createElement("select");x.className="rtichoke-prediction-distribution__select",x.setAttribute("aria-label","Color bars by"),x.style.display="none";let I=document.createElement("option");I.value="confusion_matrix_cell",I.textContent="Confusion matrix cell";let S=document.createElement("option");S.value="observed_outcome",S.textContent="Observed outcome",x.append(I,S);let v=document.createElement("label");v.className="rtichoke-prediction-distribution__control-group";let T=document.createElement("select");T.className="rtichoke-prediction-distribution__select",T.setAttribute("aria-label","Condition on");let O=document.createElement("option");O.value="predicted_positives",O.textContent="Predicted positives";let R=document.createElement("option");R.value="predicted_negatives",R.textContent="Predicted negatives";let C=document.createElement("option");C.value="real_positives",C.textContent="Real positives";let k=document.createElement("option");k.value="real_negatives",k.textContent="Real negatives",T.append(O,R,C,k),v.append(T);let z=document.createElement("select");z.className="rtichoke-prediction-distribution__select",z.setAttribute("aria-label","Operating point dimension"),z.style.display="none",_.addEventListener("change",()=>{a=_.value,Y()}),x.addEventListener("change",()=>{y=x.value,Y()}),T.addEventListener("change",()=>{b=T.value,Y()}),z.addEventListener("change",()=>{f=z.value,p=l(a,f,p),Y()});let j=(ee,A,B,Q,E)=>{let me=document.createElement("div");me.className="rtichoke-pd-radio-group",me.setAttribute("role","radiogroup"),me.setAttribute("aria-label",ee);let G=document.createElement("span");G.className="rtichoke-pd-radio-group-label",G.textContent=`${ee}:`,me.append(G);let oe=document.createElement("div");oe.className="rtichoke-pd-radio-options";for(let ue of B){let Ce=document.createElement("label");Ce.className="rtichoke-pd-radio-option";let Ge=document.createElement("input");Ge.type="radio",Ge.name=A,Ge.value=ue.value,Ge.checked=ue.value===Q,Ge.addEventListener("change",()=>{Ge.checked&&E(ue.value)});let bt=document.createElement("span");bt.textContent=ue.label,Ce.append(Ge,bt),oe.append(Ce)}return me.append(oe),me},M=document.createElement("div");M.className="rtichoke-pd-controls-row";let U=()=>{M.replaceChildren(),_.replaceChildren();for(let ee of e.evaluations){let A=document.createElement("option");A.value=ee.id,A.textContent=ee.label??ee.model??ee.population??ee.id,_.append(A)}if(_.value=a,e.evaluations.length>1){let ee=e.evaluations.map(B=>({value:B.id,label:B.label??B.model??B.population??B.id})),A=j("Reference Group",`pd-ref-group-${r}`,ee,a,B=>{a=B,Y()});M.append(A)}},L=document.createElement("div");L.className="rtichoke-pd-controls-row";let re=document.createElement("div");re.className="rtichoke-operating-point-control",re.style.marginLeft=`${o.margins.left}px`,re.style.marginRight=`${o.margins.right}px`;let V=document.createElement("label");V.className="rtichoke-operating-point-label";let q=document.createElement("span"),H=document.createElement("span");H.className="rtichoke-operating-point-value",V.append(q,H);let W=document.createElement("input");W.type="range",W.className="rtichoke-operating-point-slider",re.append(V,W);let te=document.createElement("div");te.className="rtichoke-legend",te.style.paddingLeft=`${o.margins.left}px`;let be=(ee,A)=>{let B=document.createElement("div");B.className="rtichoke-legend-item";let Q=document.createElement("span");Q.className="rtichoke-legend-swatch";let E=document.createElement("span");E.className="rtichoke-legend-line",E.style.backgroundColor=A,E.style.border=`1px solid ${o.axis.color}`,E.style.boxSizing="border-box",E.style.height="10px",E.style.borderRadius="2px",Q.append(E);let me=document.createElement("span");return me.className="rtichoke-legend-label",me.textContent=ee,B.append(Q,me),B},K=document.createElement("div");K.className="rtichoke-prediction-distribution__chart";let Z=document.createElement("div");Z.className="rtichoke-prediction-distribution__summary",g.append(M,L),w.append(g,Z,re,te,K);let Y=()=>{U(),L.replaceChildren(),x.value=y,T.value=b==="all_observations"?"predicted_positives":b,v.style.display=y==="observed_outcome"?"none":"inline-flex",z.replaceChildren();let ee=s(a);for(let we of ee){let Me=document.createElement("option");Me.value=we,Me.textContent=we==="probability_threshold"?"Probability threshold":"PPCR",z.append(Me)}z.value=f;let A=j("Display",`pd-display-${r}`,[{value:"stacked",label:"Stacked"},{value:"mirrored",label:"Mirrored"}],h,we=>{h=we,Y()}),B=j("Color Bars By",`pd-color-${r}`,[{value:"confusion_matrix_cell",label:"Confusion Matrix Cell"},{value:"observed_outcome",label:"Observed Outcome"}],y,we=>{y=we,Y()});if(L.append(A,B,_,x,v,z),ee.length>1){let we=j("Dimension",`pd-dim-${r}`,[{value:"probability_threshold",label:"Probability Threshold"},{value:"ppcr",label:"PPCR"}],f,Me=>{f=Me,p=l(a,f,p),Y()});L.append(we)}let Q=m(a,f),E=Q.find(we=>Math.abs(we-p)<1e-6);E!==void 0?p=E:p=l(a,f,p);let me=Q.indexOf(p);W.min="0",W.max=String(Math.max(0,Q.length-1)),W.step="1",W.value=String(Math.max(0,me));let G=f==="probability_threshold"?"Probability threshold":"PPCR";q.textContent=`${G}: `,H.textContent=p.toFixed(i),W.setAttribute("aria-label",G),W.setAttribute("aria-valuetext",p.toFixed(i));let oe=GO(e,a,f,p,i),{cutoff:ue,cutoffX:Ce,xAxisLabel:Ge,yAxisLabel:bt,yMax:ao,totalN:so,performanceMetrics:zo,confusion:va,ordinaryPlotData:Mr}=oe,co=W$(o.predictionDistribution,b);te.replaceChildren(),y==="observed_outcome"&&te.append(be("Observed Positives",o.predictionDistribution.observedPositive),be("Observed Negatives",o.predictionDistribution.observedNegative));let Go=[],s0=f==="probability_threshold"?`Cutoff = ${ue.toFixed(i)}`:`PPCR = ${p.toFixed(i)}`,Tl=ao,Pa=h==="mirrored"?-ao:0;Go.push(yl([Ce],{stroke:o.axis.color,strokeWidth:2,strokeDasharray:"4,3"})),Go.push(ef([{x:Ce,label:s0}],{x:"x",y:Tl,text:"label",dy:-10,fill:o.axis.color,fontSize:11,fontWeight:700})),h==="mirrored"&&Go.push(Qn([0],{stroke:o.axis.color,strokeWidth:1.5}));let Ko=we=>{let Me="";if(y==="observed_outcome")Me=we.category==="Observed Positives"?o.predictionDistribution.observedPositive:o.predictionDistribution.observedNegative;else switch(we.classificationCell){case"TP":Me=co.tp;break;case"FP":Me=co.fp;break;case"TN":Me=co.tn;break;case"FN":Me=co.fn;break}let he=!0;switch(b){case"all_observations":he=!0;break;case"predicted_positives":he=we.isPredictedPositive;break;case"predicted_negatives":he=!we.isPredictedPositive;break;case"real_positives":he=we.category==="Observed Positives";break;case"real_negatives":he=we.category==="Observed Negatives";break}return{fill:Me,fillOpacity:he?.88:.18,strokeOpacity:he?.4:.1}};if(h==="stacked"){let we=Mr.map(Me=>{let{fill:he,fillOpacity:gr,strokeOpacity:fo}=Ko(Me);return{...Me,fill:he,fillOpacity:gr,strokeOpacity:fo}});Go.push(Ri(we,Th({x1:"x1",x2:"x2",y:"count",fill:"fill",fillOpacity:"fillOpacity",stroke:o.axis.color,strokeOpacity:"strokeOpacity",strokeWidth:.75,title:Me=>Me.title,tip:!0})))}else{let we=Mr.filter(he=>he.category==="Observed Positives").map(he=>{let{fill:gr,fillOpacity:fo,strokeOpacity:Ei}=Ko(he);return{...he,fill:gr,fillOpacity:fo,strokeOpacity:Ei}}),Me=Mr.filter(he=>he.category==="Observed Negatives").map(he=>{let{fill:gr,fillOpacity:fo,strokeOpacity:Ei}=Ko(he);return{...he,fill:gr,fillOpacity:fo,strokeOpacity:Ei}});we.length>0&&Go.push(Ri(we,{x1:"x1",x2:"x2",y1:0,y2:"count",fill:"fill",fillOpacity:"fillOpacity",stroke:o.axis.color,strokeOpacity:"strokeOpacity",strokeWidth:.75,title:he=>he.title,tip:!0})),Me.length>0&&Go.push(Ri(Me,{x1:"x1",x2:"x2",y1:0,y2:he=>-he.count,fill:"fill",fillOpacity:"fillOpacity",stroke:o.axis.color,strokeOpacity:"strokeOpacity",strokeWidth:.75,title:he=>he.title,tip:!0}))}let Ta={width:o.width,height:Math.round(o.height*.68),marginTop:o.margins.top+10,marginRight:o.margins.right,marginBottom:o.margins.bottom,marginLeft:o.margins.left,style:{background:o.background,color:o.axis.color,fontFamily:o.typography.fontFamily,fontSize:`${o.typography.fontSize}px`},x:{label:Ge,domain:[0,1],grid:!1,line:!0,ticks:o.axis.ticks,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding,tickFormat:o.axis.numberFormat},y:{label:bt,domain:[Pa,Tl],grid:!1,line:!0,ticks:5,tickSize:o.axis.tickSize,tickPadding:o.axis.tickPadding,tickFormat:we=>String(Math.abs(we))},marks:Go},mf=Uo(Ta,o);if(K.replaceChildren(mf),Z.replaceChildren(),va){let{tp:we,fp:Me,tn:he,fn:gr,totalPositives:fo,totalNegatives:Ei,totalPredictedPos:Ml,totalPredictedNeg:Jt}=va,Br=document.createElement("table");Br.className="rtichoke-pd-matrix";let df=document.createElement("colgroup"),Ps=document.createElement("col");Ps.style.width="28%";let Ts=document.createElement("col");Ts.style.width="24%";let Ms=document.createElement("col");Ms.style.width="24%";let Ol=document.createElement("col");Ol.style.width="24%",df.append(Ps,Ts,Ms,Ol),Br.append(df);let hf=(Ye,tt)=>{let Fi=document.createElement("label");Fi.className=`rtichoke-pd-cond-option ${b===Ye?"rtichoke-pd-cond-option--active":""}`;let Cn=document.createElement("input");Cn.type="radio",Cn.name=`pd-cond-${r}`,Cn.value=Ye,Cn.checked=b===Ye,Cn.addEventListener("change",()=>{Cn.checked&&(b=Ye,Y())});let qo=document.createElement("span");return qo.textContent=tt,Fi.append(Cn,qo),Fi},ow=document.createElement("thead"),iw=document.createElement("tr"),c0=document.createElement("th");c0.className="rtichoke-pd-matrix__corner",c0.append(hf("all_observations","All Observations"));let f0=document.createElement("th");f0.className=`rtichoke-pd-matrix__col-header ${b==="real_positives"?"rtichoke-pd-matrix__col-header--active":""}`,f0.append(hf("real_positives","Real Positive"));let u0=document.createElement("th");u0.className=`rtichoke-pd-matrix__col-header ${b==="real_negatives"?"rtichoke-pd-matrix__col-header--active":""}`,u0.append(hf("real_negatives","Real Negative"));let aw=document.createElement("th");aw.className="rtichoke-pd-matrix__col-header rtichoke-pd-matrix__col-header--blank",iw.append(c0,f0,u0,aw),ow.append(iw);let sw=document.createElement("tbody"),bC=y==="observed_outcome"?o.predictionDistribution.observedPositive:co.tp,gC=y==="observed_outcome"?o.predictionDistribution.observedPositive:co.fn,xC=y==="observed_outcome"?o.predictionDistribution.observedNegative:co.fp,wC=y==="observed_outcome"?o.predictionDistribution.observedNegative:co.tn,SC=o.predictionDistribution.observedPositive,IC=o.predictionDistribution.observedNegative,l0="#E5E7EB",_C=Ye=>{if(so===0)return null;switch(b){case"all_observations":return`(${((Ye==="TP"?we:Ye==="FP"?Me:Ye==="TN"?he:gr)/so*100).toFixed(1)}%)`;case"predicted_positives":{let tt=we+Me;return tt===0?null:Ye==="TP"?`(${(we/tt*100).toFixed(1)}%)`:Ye==="FP"?`(${(Me/tt*100).toFixed(1)}%)`:null}case"predicted_negatives":{let tt=he+gr;return tt===0?null:Ye==="TN"?`(${(he/tt*100).toFixed(1)}%)`:Ye==="FN"?`(${(gr/tt*100).toFixed(1)}%)`:null}case"real_positives":{let tt=we+gr;return tt===0?null:Ye==="TP"?`(${(we/tt*100).toFixed(1)}%)`:Ye==="FN"?`(${(gr/tt*100).toFixed(1)}%)`:null}case"real_negatives":{let tt=he+Me;return tt===0?null:Ye==="TN"?`(${(he/tt*100).toFixed(1)}%)`:Ye==="FP"?`(${(Me/tt*100).toFixed(1)}%)`:null}}},Cl=(Ye,tt,Fi,Cn)=>{Ye.replaceChildren(),Ye.className=`rtichoke-prediction-distribution__cell--${tt.toLowerCase()} rtichoke-pd-matrix__cell`,Ye.style.backgroundColor="#ffffff",Ye.style.color=o.axis.color;let qo=so>0?Fi/so*100:0,$i=document.createElement("div");$i.className="rtichoke-pd-cell-bar",$i.style.width=`${qo}%`,$i.style.backgroundColor=Cn;let Ma=document.createElement("div");Ma.className="rtichoke-pd-cell-content";let b0=document.createElement("span");b0.className="rtichoke-pd-cell-label",b0.textContent=tt;let g0=document.createElement("div");g0.className="rtichoke-pd-cell-num";let x0=document.createElement("span");x0.className="rtichoke-pd-cell-count",x0.textContent=Fi.toLocaleString();let vC=_C(tt),w0=document.createElement("span");w0.className="rtichoke-pd-cell-pct",w0.textContent=vC??"",g0.append(x0,w0),Ma.append(b0,g0),Ye.append($i,Ma)},yf=(Ye,tt,Fi)=>{Ye.replaceChildren(),Ye.className="rtichoke-prediction-distribution__cell--total rtichoke-pd-matrix__cell",Ye.style.backgroundColor="#ffffff";let Cn=so>0?tt/so*100:0,qo=document.createElement("div");qo.className="rtichoke-pd-cell-bar",qo.style.width=`${Cn}%`,qo.style.backgroundColor=Fi;let $i=document.createElement("div");$i.className="rtichoke-pd-cell-content rtichoke-pd-cell-content--margin";let Ma=document.createElement("span");Ma.className="rtichoke-pd-cell-count",Ma.textContent=tt.toLocaleString(),$i.append(Ma),Ye.append(qo,$i)},p0=document.createElement("tr");b==="predicted_positives"&&(p0.className="rtichoke-pd-matrix__row--active");let m0=document.createElement("th");m0.className=`rtichoke-pd-matrix__row-header ${b==="predicted_positives"?"rtichoke-pd-matrix__row-header--active":""}`,m0.append(hf("predicted_positives","Predicted Positive"));let cw=document.createElement("td");Cl(cw,"TP",we,bC);let fw=document.createElement("td");Cl(fw,"FP",Me,xC);let uw=document.createElement("td");yf(uw,Ml,l0),p0.append(m0,cw,fw,uw);let d0=document.createElement("tr");b==="predicted_negatives"&&(d0.className="rtichoke-pd-matrix__row--active");let h0=document.createElement("th");h0.className=`rtichoke-pd-matrix__row-header ${b==="predicted_negatives"?"rtichoke-pd-matrix__row-header--active":""}`,h0.append(hf("predicted_negatives","Predicted Negative"));let lw=document.createElement("td");Cl(lw,"FN",gr,gC);let pw=document.createElement("td");Cl(pw,"TN",he,wC);let mw=document.createElement("td");yf(mw,Jt,l0),d0.append(h0,lw,pw,mw);let y0=document.createElement("tr");y0.className="rtichoke-pd-matrix__tot-row";let dw=document.createElement("th");dw.className="rtichoke-pd-matrix__row-header rtichoke-pd-matrix__row-header--blank";let hw=document.createElement("td");yf(hw,fo,SC);let yw=document.createElement("td");yf(yw,Ei,IC);let bw=document.createElement("td");yf(bw,so,l0),y0.append(dw,hw,yw,bw),sw.append(p0,d0,y0),Br.append(ow,sw),Z.append(Br)}if(zo){let we=document.createElement("div");we.className="rtichoke-pd-metrics-container rtichoke-performance-table";let Me=document.createElement("table");Me.className="rtichoke-performance-table__table rtichoke-pd-metrics-table";let he=document.createElement("thead"),gr=document.createElement("tr"),fo=[{id:"sensitivity",label:"Sensitivity",val:zo.sensitivity,isEmphasized:b==="real_positives",isRatio:!1},{id:"specificity",label:"Specificity",val:zo.specificity,isEmphasized:b==="real_negatives",isRatio:!1},{id:"ppv",label:"PPV",val:zo.ppv,isEmphasized:b==="predicted_positives",isRatio:!1},{id:"npv",label:"NPV",val:zo.npv,isEmphasized:b==="predicted_negatives",isRatio:!1},{id:"lift",label:"Lift",val:zo.lift,isEmphasized:b==="predicted_positives",isRatio:!0}];for(let Jt of fo){let Br=document.createElement("th");Br.className=`rtichoke-performance-table__metric-header ${Jt.isEmphasized?"rtichoke-pd-metric--emphasized-header":""}`,Br.textContent=Jt.label,gr.append(Br)}he.append(gr);let Ei=document.createElement("tbody"),Ml=document.createElement("tr");for(let Jt of fo){let Br=document.createElement("td");Br.className=`rtichoke-performance-table__metric ${Jt.isEmphasized?"rtichoke-pd-metric--emphasized-cell":""}`;let df="\u2014";if(Jt.val!==null&&Jt.val!==void 0&&(df=Jt.isRatio?Jt.val.toFixed(2):(Jt.val*100).toFixed(1)+"%"),Jt.val!==null&&Jt.val!==void 0&&isFinite(Jt.val)){let Ts=document.createElement("div");Ts.className="rtichoke-performance-table__bar";let Ms=document.createElement("div");Ms.className="rtichoke-performance-table__bar-fill rtichoke-performance-table__bar-fill--positive";let Ol=Jt.isRatio?Math.min(100,Jt.val/3*100):Math.min(100,Jt.val*100);Ms.style.width=`${Ol}%`,Ts.append(Ms),Br.append(Ts)}let Ps=document.createElement("span");Ps.className="rtichoke-performance-table__cell-text",Ps.textContent=df,Br.append(Ps),Ml.append(Br)}Ei.append(Ml),Me.append(he,Ei),we.append(Me),Z.append(we)}};return W.addEventListener("input",()=>{let ee=m(a,f),A=Number(W.value);A>=0&&A0?n[0]:void 0,i=[];if(n.length>1){let p=t.createElement("label");p.className="rtichoke-horizon-control",p.textContent="Fixed Time Horizon: ";let h=t.createElement("select");h.className="rtichoke-horizon-select",h.setAttribute("aria-label","Fixed Time Horizon");for(let y of n){let b=t.createElement("option");b.value=String(y),b.textContent=String(y),h.append(b)}h.value=String(o),h.addEventListener("change",()=>{o=Number(h.value),l()}),p.append(h),r.append(p)}let a=t.createElement("table");a.className="rtichoke-summary-metrics__table";let s=t.createElement("thead"),c=t.createElement("tr");for(let p of["Owner","Metric","Estimate"])c.append(Z$(t,p));s.append(c),a.append(s);let u=new Map(e.evaluations.map(p=>[p.id,p])),f=new Map(e.populations.map(p=>[p.id,p])),m=t.createElement("tbody");for(let p of e.metrics){let h=t.createElement("tr"),y="",b="",w;if(p.metric==="auroc"){let _=u.get(p.owner.evaluationId);y=_.label??_.model??_.population??_.id,b="AUROC",h.dataset.metric="auroc",h.dataset.evaluationId=p.owner.evaluationId}else p.metric==="prevalence"?(y=f.get(p.owner.populationId).label,b="Prevalence",h.dataset.metric="prevalence",h.dataset.populationId=p.owner.populationId):p.metric==="event_risk"&&(y=f.get(p.owner.populationId).label,b="Event Risk",w=p.horizon,h.dataset.metric="event_risk",h.dataset.populationId=p.owner.populationId,h.dataset.horizon=String(p.horizon));h.append(z1(t,y,"rtichoke-summary-metrics__owner"),z1(t,b,"rtichoke-summary-metrics__metric"));let g=z1(t,Q$(p.estimate),"rtichoke-summary-metrics__estimate");p.estimate===null?g.dataset.unavailable="true":g.dataset.estimate=String(p.estimate),h.append(g),i.push({element:h,horizon:w}),m.append(h)}a.append(m),r.append(a);function l(){for(let{element:p,horizon:h}of i)h===void 0||h===o?p.style.display="":p.style.display="none"}return l(),r}function J$(e){switch(e.errorType){case N.ArrayContains:return"Expected array to contain at least one matching value";case N.ArrayMaxContains:return`Expected array to contain no more than ${e.schema.maxContains} matching values`;case N.ArrayMinContains:return`Expected array to contain at least ${e.schema.minContains} matching values`;case N.ArrayMaxItems:return`Expected array length to be less or equal to ${e.schema.maxItems}`;case N.ArrayMinItems:return`Expected array length to be greater or equal to ${e.schema.minItems}`;case N.ArrayUniqueItems:return"Expected array elements to be unique";case N.Array:return"Expected array";case N.AsyncIterator:return"Expected AsyncIterator";case N.BigIntExclusiveMaximum:return`Expected bigint to be less than ${e.schema.exclusiveMaximum}`;case N.BigIntExclusiveMinimum:return`Expected bigint to be greater than ${e.schema.exclusiveMinimum}`;case N.BigIntMaximum:return`Expected bigint to be less or equal to ${e.schema.maximum}`;case N.BigIntMinimum:return`Expected bigint to be greater or equal to ${e.schema.minimum}`;case N.BigIntMultipleOf:return`Expected bigint to be a multiple of ${e.schema.multipleOf}`;case N.BigInt:return"Expected bigint";case N.Boolean:return"Expected boolean";case N.DateExclusiveMinimumTimestamp:return`Expected Date timestamp to be greater than ${e.schema.exclusiveMinimumTimestamp}`;case N.DateExclusiveMaximumTimestamp:return`Expected Date timestamp to be less than ${e.schema.exclusiveMaximumTimestamp}`;case N.DateMinimumTimestamp:return`Expected Date timestamp to be greater or equal to ${e.schema.minimumTimestamp}`;case N.DateMaximumTimestamp:return`Expected Date timestamp to be less or equal to ${e.schema.maximumTimestamp}`;case N.DateMultipleOfTimestamp:return`Expected Date timestamp to be a multiple of ${e.schema.multipleOfTimestamp}`;case N.Date:return"Expected Date";case N.Function:return"Expected function";case N.IntegerExclusiveMaximum:return`Expected integer to be less than ${e.schema.exclusiveMaximum}`;case N.IntegerExclusiveMinimum:return`Expected integer to be greater than ${e.schema.exclusiveMinimum}`;case N.IntegerMaximum:return`Expected integer to be less or equal to ${e.schema.maximum}`;case N.IntegerMinimum:return`Expected integer to be greater or equal to ${e.schema.minimum}`;case N.IntegerMultipleOf:return`Expected integer to be a multiple of ${e.schema.multipleOf}`;case N.Integer:return"Expected integer";case N.IntersectUnevaluatedProperties:return"Unexpected property";case N.Intersect:return"Expected all values to match";case N.Iterator:return"Expected Iterator";case N.Literal:return`Expected ${typeof e.schema.const=="string"?`'${e.schema.const}'`:e.schema.const}`;case N.Never:return"Never";case N.Not:return"Value should not match";case N.Null:return"Expected null";case N.NumberExclusiveMaximum:return`Expected number to be less than ${e.schema.exclusiveMaximum}`;case N.NumberExclusiveMinimum:return`Expected number to be greater than ${e.schema.exclusiveMinimum}`;case N.NumberMaximum:return`Expected number to be less or equal to ${e.schema.maximum}`;case N.NumberMinimum:return`Expected number to be greater or equal to ${e.schema.minimum}`;case N.NumberMultipleOf:return`Expected number to be a multiple of ${e.schema.multipleOf}`;case N.Number:return"Expected number";case N.Object:return"Expected object";case N.ObjectAdditionalProperties:return"Unexpected property";case N.ObjectMaxProperties:return`Expected object to have no more than ${e.schema.maxProperties} properties`;case N.ObjectMinProperties:return`Expected object to have at least ${e.schema.minProperties} properties`;case N.ObjectRequiredProperty:return"Expected required property";case N.Promise:return"Expected Promise";case N.RegExp:return"Expected string to match regular expression";case N.StringFormatUnknown:return`Unknown format '${e.schema.format}'`;case N.StringFormat:return`Expected string to match '${e.schema.format}' format`;case N.StringMaxLength:return`Expected string length less or equal to ${e.schema.maxLength}`;case N.StringMinLength:return`Expected string length greater or equal to ${e.schema.minLength}`;case N.StringPattern:return`Expected string to match '${e.schema.pattern}'`;case N.String:return"Expected string";case N.Symbol:return"Expected symbol";case N.TupleLength:return`Expected tuple to have ${e.schema.maxItems||0} elements`;case N.Tuple:return"Expected tuple";case N.Uint8ArrayMaxByteLength:return`Expected byte length less or equal to ${e.schema.maxByteLength}`;case N.Uint8ArrayMinByteLength:return`Expected byte length greater or equal to ${e.schema.minByteLength}`;case N.Uint8Array:return"Expected Uint8Array";case N.Undefined:return"Expected undefined";case N.Union:return"Expected union value";case N.Void:return"Expected void";case N.Kind:return`Expected kind '${e.schema[$]}'`;default:return"Unknown error type"}}var eD=J$;function KO(){return eD}var K1=class extends le{constructor(t){super(`Unable to dereference schema with $id '${t.$ref}'`),this.schema=t}};function tD(e,t){let r=t.find(n=>n.$id===e.$ref);if(r===void 0)throw new K1(e);return $e(r,t)}function Xt(e,t){return!Ve(e.$id)||t.some(r=>r.$id===e.$id)||t.push(e),t}function $e(e,t){return e[$]==="This"||e[$]==="Ref"?tD(e,t):e}var q1=class extends le{constructor(t){super("Unable to hash value"),this.value=t}},rn;(function(e){e[e.Undefined=0]="Undefined",e[e.Null=1]="Null",e[e.Boolean=2]="Boolean",e[e.Number=3]="Number",e[e.String=4]="String",e[e.Object=5]="Object",e[e.Array=6]="Array",e[e.Date=7]="Date",e[e.Uint8Array=8]="Uint8Array",e[e.Symbol=9]="Symbol",e[e.BigInt=10]="BigInt"})(rn||(rn={}));var ff=BigInt("14695981039346656037"),[rD,nD]=[BigInt("1099511628211"),BigInt("18446744073709551616")],oD=Array.from({length:256}).map((e,t)=>BigInt(t)),qO=new Float64Array(1),HO=new DataView(qO.buffer),YO=new Uint8Array(qO.buffer);function*iD(e){let t=e===0?1:Math.ceil(Math.floor(Math.log2(e)+1)/8);for(let r=0;r>8*(t-1-r)&255}function aD(e){br(rn.Array);for(let t of e)uf(t)}function sD(e){br(rn.Boolean),br(e?1:0)}function cD(e){br(rn.BigInt),HO.setBigInt64(0,e);for(let t of YO)br(t)}function fD(e){br(rn.Date),uf(e.getTime())}function uD(e){br(rn.Null)}function lD(e){br(rn.Number),HO.setFloat64(0,e);for(let t of YO)br(t)}function pD(e){br(rn.Object);for(let t of globalThis.Object.getOwnPropertyNames(e).sort())uf(t),uf(e[t])}function mD(e){br(rn.String);for(let t=0;t=e.minItems)||_e(e.maxItems)&&!(r.length<=e.maxItems))return!1;for(let i of r)if(!Zt(e.items,t,i))return!1;if(e.uniqueItems===!0&&!(function(){let i=new Set;for(let a of r){let s=lf(a);if(i.has(s))return!1;i.add(s)}return!0})())return!1;if(!(_e(e.contains)||ot(e.minContains)||ot(e.maxContains)))return!0;let n=_e(e.contains)?e.contains:Se(),o=r.reduce((i,a)=>Zt(n,t,a)?i+1:i,0);return!(o===0||ot(e.minContains)&&oe.maxContains)}function SD(e,t,r){return Nl(r)}function ID(e,t,r){return!(!kn(r)||_e(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||_e(e.maximum)&&!(r<=e.maximum)||_e(e.minimum)&&!(r>=e.minimum)||_e(e.multipleOf)&&r%e.multipleOf!==BigInt(0))}function _D(e,t,r){return uo(r)}function vD(e,t,r){return Zt(e.returns,t,r.prototype)}function PD(e,t,r){return!(!xr(r)||_e(e.exclusiveMaximumTimestamp)&&!(r.getTime()e.exclusiveMinimumTimestamp)||_e(e.maximumTimestamp)&&!(r.getTime()<=e.maximumTimestamp)||_e(e.minimumTimestamp)&&!(r.getTime()>=e.minimumTimestamp)||_e(e.multipleOfTimestamp)&&r.getTime()%e.multipleOfTimestamp!==0)}function TD(e,t,r){return Di(r)}function MD(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return Zt(o,[...t,...n],r)}function OD(e,t,r){return!(!Fl(r)||_e(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||_e(e.maximum)&&!(r<=e.maximum)||_e(e.minimum)&&!(r>=e.minimum)||_e(e.multipleOf)&&r%e.multipleOf!==0)}function CD(e,t,r){let n=e.allOf.every(o=>Zt(o,t,r));if(e.unevaluatedProperties===!1){let o=new RegExp(Bs(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a));return n&&i}else if(ft(e.unevaluatedProperties)){let o=new RegExp(Bs(e)),i=Object.getOwnPropertyNames(r).every(a=>o.test(a)||Zt(e.unevaluatedProperties,t,r[a]));return n&&i}else return n}function kD(e,t,r){return Al(r)}function RD(e,t,r){return r===e.const}function ND(e,t,r){return!1}function AD(e,t,r){return!Zt(e.not,t,r)}function ED(e,t,r){return Wo(r)}function FD(e,t,r){return!(!kt.IsNumberLike(r)||_e(e.exclusiveMaximum)&&!(re.exclusiveMinimum)||_e(e.minimum)&&!(r>=e.minimum)||_e(e.maximum)&&!(r<=e.maximum)||_e(e.multipleOf)&&r%e.multipleOf!==0)}function $D(e,t,r){if(!kt.IsObjectLike(r)||_e(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||_e(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let n=Object.getOwnPropertyNames(e.properties);for(let o of n){let i=e.properties[o];if(e.required&&e.required.includes(o)){if(!Zt(i,t,r[o])||(Da(i)||bD(i))&&!(o in r))return!1}else if(kt.IsExactOptionalProperty(r,o)&&!Zt(i,t,r[o]))return!1}if(e.additionalProperties===!1){let o=Object.getOwnPropertyNames(r);return e.required&&e.required.length===n.length&&o.length===n.length?!0:o.every(i=>n.includes(i))}else return typeof e.additionalProperties=="object"?Object.getOwnPropertyNames(r).every(i=>n.includes(i)||Zt(e.additionalProperties,t,r[i])):!0}function DD(e,t,r){return El(r)}function LD(e,t,r){if(!kt.IsRecordLike(r)||_e(e.minProperties)&&!(Object.getOwnPropertyNames(r).length>=e.minProperties)||_e(e.maxProperties)&&!(Object.getOwnPropertyNames(r).length<=e.maxProperties))return!1;let[n,o]=Object.entries(e.patternProperties)[0],i=new RegExp(n),a=Object.entries(r).every(([u,f])=>i.test(u)?Zt(o,t,f):!0),s=typeof e.additionalProperties=="object"?Object.entries(r).every(([u,f])=>i.test(u)?!0:Zt(e.additionalProperties,t,f)):!0,c=e.additionalProperties===!1?Object.getOwnPropertyNames(r).every(u=>i.test(u)):!0;return a&&s&&c}function VD(e,t,r){return Zt($e(e,t),t,r)}function jD(e,t,r){let n=new RegExp(e.source,e.flags);return _e(e.minLength)&&!(r.length>=e.minLength)||_e(e.maxLength)&&!(r.length<=e.maxLength)?!1:n.test(r)}function UD(e,t,r){return!Ve(r)||_e(e.minLength)&&!(r.length>=e.minLength)||_e(e.maxLength)&&!(r.length<=e.maxLength)||_e(e.pattern)&&!new RegExp(e.pattern).test(r)?!1:_e(e.format)?Bi.Has(e.format)?Bi.Get(e.format)(r):!1:!0}function BD(e,t,r){return Xo(r)}function zD(e,t,r){return Ve(r)&&new RegExp(e.pattern).test(r)}function GD(e,t,r){return Zt($e(e,t),t,r)}function KD(e,t,r){if(!fe(r)||e.items===void 0&&r.length!==0||r.length!==e.maxItems)return!1;if(!e.items)return!0;for(let n=0;nZt(n,t,r))}function YD(e,t,r){return!(!Cs(r)||_e(e.maxByteLength)&&!(r.length<=e.maxByteLength)||_e(e.minByteLength)&&!(r.length>=e.minByteLength))}function WD(e,t,r){return!0}function XD(e,t,r){return kt.IsVoidLike(r)}function ZD(e,t,r){return Ln.Has(e[$])?Ln.Get(e[$])(e,r):!1}function Zt(e,t,r){let n=_e(e.$id)?Xt(e,t):t,o=e;switch(o[$]){case"Any":return gD(o,n,r);case"Argument":return xD(o,n,r);case"Array":return wD(o,n,r);case"AsyncIterator":return SD(o,n,r);case"BigInt":return ID(o,n,r);case"Boolean":return _D(o,n,r);case"Constructor":return vD(o,n,r);case"Date":return PD(o,n,r);case"Function":return TD(o,n,r);case"Import":return MD(o,n,r);case"Integer":return OD(o,n,r);case"Intersect":return CD(o,n,r);case"Iterator":return kD(o,n,r);case"Literal":return RD(o,n,r);case"Never":return ND(o,n,r);case"Not":return AD(o,n,r);case"Null":return ED(o,n,r);case"Number":return FD(o,n,r);case"Object":return $D(o,n,r);case"Promise":return DD(o,n,r);case"Record":return LD(o,n,r);case"Ref":return VD(o,n,r);case"RegExp":return jD(o,n,r);case"String":return UD(o,n,r);case"Symbol":return BD(o,n,r);case"TemplateLiteral":return zD(o,n,r);case"This":return GD(o,n,r);case"Tuple":return KD(o,n,r);case"Undefined":return qD(o,n,r);case"Union":return HD(o,n,r);case"Uint8Array":return YD(o,n,r);case"Unknown":return WD(o,n,r);case"Void":return XD(o,n,r);default:if(!Ln.Has(o[$]))throw new H1(o);return ZD(o,n,r)}}function xe(...e){return e.length===3?Zt(e[0],e[1],e[2]):Zt(e[0],[],e[1])}var N;(function(e){e[e.ArrayContains=0]="ArrayContains",e[e.ArrayMaxContains=1]="ArrayMaxContains",e[e.ArrayMaxItems=2]="ArrayMaxItems",e[e.ArrayMinContains=3]="ArrayMinContains",e[e.ArrayMinItems=4]="ArrayMinItems",e[e.ArrayUniqueItems=5]="ArrayUniqueItems",e[e.Array=6]="Array",e[e.AsyncIterator=7]="AsyncIterator",e[e.BigIntExclusiveMaximum=8]="BigIntExclusiveMaximum",e[e.BigIntExclusiveMinimum=9]="BigIntExclusiveMinimum",e[e.BigIntMaximum=10]="BigIntMaximum",e[e.BigIntMinimum=11]="BigIntMinimum",e[e.BigIntMultipleOf=12]="BigIntMultipleOf",e[e.BigInt=13]="BigInt",e[e.Boolean=14]="Boolean",e[e.DateExclusiveMaximumTimestamp=15]="DateExclusiveMaximumTimestamp",e[e.DateExclusiveMinimumTimestamp=16]="DateExclusiveMinimumTimestamp",e[e.DateMaximumTimestamp=17]="DateMaximumTimestamp",e[e.DateMinimumTimestamp=18]="DateMinimumTimestamp",e[e.DateMultipleOfTimestamp=19]="DateMultipleOfTimestamp",e[e.Date=20]="Date",e[e.Function=21]="Function",e[e.IntegerExclusiveMaximum=22]="IntegerExclusiveMaximum",e[e.IntegerExclusiveMinimum=23]="IntegerExclusiveMinimum",e[e.IntegerMaximum=24]="IntegerMaximum",e[e.IntegerMinimum=25]="IntegerMinimum",e[e.IntegerMultipleOf=26]="IntegerMultipleOf",e[e.Integer=27]="Integer",e[e.IntersectUnevaluatedProperties=28]="IntersectUnevaluatedProperties",e[e.Intersect=29]="Intersect",e[e.Iterator=30]="Iterator",e[e.Kind=31]="Kind",e[e.Literal=32]="Literal",e[e.Never=33]="Never",e[e.Not=34]="Not",e[e.Null=35]="Null",e[e.NumberExclusiveMaximum=36]="NumberExclusiveMaximum",e[e.NumberExclusiveMinimum=37]="NumberExclusiveMinimum",e[e.NumberMaximum=38]="NumberMaximum",e[e.NumberMinimum=39]="NumberMinimum",e[e.NumberMultipleOf=40]="NumberMultipleOf",e[e.Number=41]="Number",e[e.ObjectAdditionalProperties=42]="ObjectAdditionalProperties",e[e.ObjectMaxProperties=43]="ObjectMaxProperties",e[e.ObjectMinProperties=44]="ObjectMinProperties",e[e.ObjectRequiredProperty=45]="ObjectRequiredProperty",e[e.Object=46]="Object",e[e.Promise=47]="Promise",e[e.RegExp=48]="RegExp",e[e.StringFormatUnknown=49]="StringFormatUnknown",e[e.StringFormat=50]="StringFormat",e[e.StringMaxLength=51]="StringMaxLength",e[e.StringMinLength=52]="StringMinLength",e[e.StringPattern=53]="StringPattern",e[e.String=54]="String",e[e.Symbol=55]="Symbol",e[e.TupleLength=56]="TupleLength",e[e.Tuple=57]="Tuple",e[e.Uint8ArrayMaxByteLength=58]="Uint8ArrayMaxByteLength",e[e.Uint8ArrayMinByteLength=59]="Uint8ArrayMinByteLength",e[e.Uint8Array=60]="Uint8Array",e[e.Undefined=61]="Undefined",e[e.Union=62]="Union",e[e.Void=63]="Void"})(N||(N={}));var Y1=class extends le{constructor(t){super("Unknown type"),this.schema=t}};function Ni(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function ve(e){return e!==void 0}var Ia=class{constructor(t){this.iterator=t}[Symbol.iterator](){return this.iterator}First(){let t=this.iterator.next();return t.done?void 0:t.value}};function J(e,t,r,n,o=[]){return{type:e,schema:t,path:r,value:n,message:KO()({errorType:e,path:r,schema:t,value:n,errors:o}),errors:o}}function*QD(e,t,r,n){}function*JD(e,t,r,n){}function*eL(e,t,r,n){if(!fe(n))return yield J(N.Array,e,r,n);ve(e.minItems)&&!(n.length>=e.minItems)&&(yield J(N.ArrayMinItems,e,r,n)),ve(e.maxItems)&&!(n.length<=e.maxItems)&&(yield J(N.ArrayMaxItems,e,r,n));for(let a=0;aQt(o,t,`${r}${c}`,s).next().done===!0?a+1:a,0);i===0&&(yield J(N.ArrayContains,e,r,n)),ot(e.minContains)&&ie.maxContains&&(yield J(N.ArrayMaxContains,e,r,n))}function*tL(e,t,r,n){Nl(n)||(yield J(N.AsyncIterator,e,r,n))}function*rL(e,t,r,n){if(!kn(n))return yield J(N.BigInt,e,r,n);ve(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield J(N.BigIntExclusiveMinimum,e,r,n)),ve(e.maximum)&&!(n<=e.maximum)&&(yield J(N.BigIntMaximum,e,r,n)),ve(e.minimum)&&!(n>=e.minimum)&&(yield J(N.BigIntMinimum,e,r,n)),ve(e.multipleOf)&&n%e.multipleOf!==BigInt(0)&&(yield J(N.BigIntMultipleOf,e,r,n))}function*nL(e,t,r,n){uo(n)||(yield J(N.Boolean,e,r,n))}function*oL(e,t,r,n){yield*Qt(e.returns,t,r,n.prototype)}function*iL(e,t,r,n){if(!xr(n))return yield J(N.Date,e,r,n);ve(e.exclusiveMaximumTimestamp)&&!(n.getTime()e.exclusiveMinimumTimestamp)&&(yield J(N.DateExclusiveMinimumTimestamp,e,r,n)),ve(e.maximumTimestamp)&&!(n.getTime()<=e.maximumTimestamp)&&(yield J(N.DateMaximumTimestamp,e,r,n)),ve(e.minimumTimestamp)&&!(n.getTime()>=e.minimumTimestamp)&&(yield J(N.DateMinimumTimestamp,e,r,n)),ve(e.multipleOfTimestamp)&&n.getTime()%e.multipleOfTimestamp!==0&&(yield J(N.DateMultipleOfTimestamp,e,r,n))}function*aL(e,t,r,n){Di(n)||(yield J(N.Function,e,r,n))}function*sL(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref];yield*Qt(i,[...t,...o],r,n)}function*cL(e,t,r,n){if(!Fl(n))return yield J(N.Integer,e,r,n);ve(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield J(N.IntegerExclusiveMinimum,e,r,n)),ve(e.maximum)&&!(n<=e.maximum)&&(yield J(N.IntegerMaximum,e,r,n)),ve(e.minimum)&&!(n>=e.minimum)&&(yield J(N.IntegerMinimum,e,r,n)),ve(e.multipleOf)&&n%e.multipleOf!==0&&(yield J(N.IntegerMultipleOf,e,r,n))}function*fL(e,t,r,n){let o=!1;for(let i of e.allOf)for(let a of Qt(i,t,r,n))o=!0,yield a;if(o)return yield J(N.Intersect,e,r,n);if(e.unevaluatedProperties===!1){let i=new RegExp(Bs(e));for(let a of Object.getOwnPropertyNames(n))i.test(a)||(yield J(N.IntersectUnevaluatedProperties,e,`${r}/${a}`,n))}if(typeof e.unevaluatedProperties=="object"){let i=new RegExp(Bs(e));for(let a of Object.getOwnPropertyNames(n))if(!i.test(a)){let s=Qt(e.unevaluatedProperties,t,`${r}/${a}`,n[a]).next();s.done||(yield s.value)}}}function*uL(e,t,r,n){Al(n)||(yield J(N.Iterator,e,r,n))}function*lL(e,t,r,n){n!==e.const&&(yield J(N.Literal,e,r,n))}function*pL(e,t,r,n){yield J(N.Never,e,r,n)}function*mL(e,t,r,n){Qt(e.not,t,r,n).next().done===!0&&(yield J(N.Not,e,r,n))}function*dL(e,t,r,n){Wo(n)||(yield J(N.Null,e,r,n))}function*hL(e,t,r,n){if(!kt.IsNumberLike(n))return yield J(N.Number,e,r,n);ve(e.exclusiveMaximum)&&!(ne.exclusiveMinimum)&&(yield J(N.NumberExclusiveMinimum,e,r,n)),ve(e.maximum)&&!(n<=e.maximum)&&(yield J(N.NumberMaximum,e,r,n)),ve(e.minimum)&&!(n>=e.minimum)&&(yield J(N.NumberMinimum,e,r,n)),ve(e.multipleOf)&&n%e.multipleOf!==0&&(yield J(N.NumberMultipleOf,e,r,n))}function*yL(e,t,r,n){if(!kt.IsObjectLike(n))return yield J(N.Object,e,r,n);ve(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield J(N.ObjectMinProperties,e,r,n)),ve(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield J(N.ObjectMaxProperties,e,r,n));let o=Array.isArray(e.required)?e.required:[],i=Object.getOwnPropertyNames(e.properties),a=Object.getOwnPropertyNames(n);for(let s of o)a.includes(s)||(yield J(N.ObjectRequiredProperty,e.properties[s],`${r}/${Ni(s)}`,void 0));if(e.additionalProperties===!1)for(let s of a)i.includes(s)||(yield J(N.ObjectAdditionalProperties,e,`${r}/${Ni(s)}`,n[s]));if(typeof e.additionalProperties=="object")for(let s of a)i.includes(s)||(yield*Qt(e.additionalProperties,t,`${r}/${Ni(s)}`,n[s]));for(let s of i){let c=e.properties[s];e.required&&e.required.includes(s)?(yield*Qt(c,t,`${r}/${Ni(s)}`,n[s]),Da(e)&&!(s in n)&&(yield J(N.ObjectRequiredProperty,c,`${r}/${Ni(s)}`,void 0))):kt.IsExactOptionalProperty(n,s)&&(yield*Qt(c,t,`${r}/${Ni(s)}`,n[s]))}}function*bL(e,t,r,n){El(n)||(yield J(N.Promise,e,r,n))}function*gL(e,t,r,n){if(!kt.IsRecordLike(n))return yield J(N.Object,e,r,n);ve(e.minProperties)&&!(Object.getOwnPropertyNames(n).length>=e.minProperties)&&(yield J(N.ObjectMinProperties,e,r,n)),ve(e.maxProperties)&&!(Object.getOwnPropertyNames(n).length<=e.maxProperties)&&(yield J(N.ObjectMaxProperties,e,r,n));let[o,i]=Object.entries(e.patternProperties)[0],a=new RegExp(o);for(let[s,c]of Object.entries(n))a.test(s)&&(yield*Qt(i,t,`${r}/${Ni(s)}`,c));if(typeof e.additionalProperties=="object")for(let[s,c]of Object.entries(n))a.test(s)||(yield*Qt(e.additionalProperties,t,`${r}/${Ni(s)}`,c));if(e.additionalProperties===!1){for(let[s,c]of Object.entries(n))if(!a.test(s))return yield J(N.ObjectAdditionalProperties,e,`${r}/${Ni(s)}`,c)}}function*xL(e,t,r,n){yield*Qt($e(e,t),t,r,n)}function*wL(e,t,r,n){if(!Ve(n))return yield J(N.String,e,r,n);if(ve(e.minLength)&&!(n.length>=e.minLength)&&(yield J(N.StringMinLength,e,r,n)),ve(e.maxLength)&&!(n.length<=e.maxLength)&&(yield J(N.StringMaxLength,e,r,n)),!new RegExp(e.source,e.flags).test(n))return yield J(N.RegExp,e,r,n)}function*SL(e,t,r,n){if(!Ve(n))return yield J(N.String,e,r,n);ve(e.minLength)&&!(n.length>=e.minLength)&&(yield J(N.StringMinLength,e,r,n)),ve(e.maxLength)&&!(n.length<=e.maxLength)&&(yield J(N.StringMaxLength,e,r,n)),Ve(e.pattern)&&(new RegExp(e.pattern).test(n)||(yield J(N.StringPattern,e,r,n))),Ve(e.format)&&(Bi.Has(e.format)?Bi.Get(e.format)(n)||(yield J(N.StringFormat,e,r,n)):yield J(N.StringFormatUnknown,e,r,n))}function*IL(e,t,r,n){Xo(n)||(yield J(N.Symbol,e,r,n))}function*_L(e,t,r,n){if(!Ve(n))return yield J(N.String,e,r,n);new RegExp(e.pattern).test(n)||(yield J(N.StringPattern,e,r,n))}function*vL(e,t,r,n){yield*Qt($e(e,t),t,r,n)}function*PL(e,t,r,n){if(!fe(n))return yield J(N.Tuple,e,r,n);if(e.items===void 0&&n.length!==0)return yield J(N.TupleLength,e,r,n);if(n.length!==e.maxItems)return yield J(N.TupleLength,e,r,n);if(e.items)for(let o=0;onew Ia(Qt(i,t,r,n)));yield J(N.Union,e,r,n,o)}function*OL(e,t,r,n){if(!Cs(n))return yield J(N.Uint8Array,e,r,n);ve(e.maxByteLength)&&!(n.length<=e.maxByteLength)&&(yield J(N.Uint8ArrayMaxByteLength,e,r,n)),ve(e.minByteLength)&&!(n.length>=e.minByteLength)&&(yield J(N.Uint8ArrayMinByteLength,e,r,n))}function*CL(e,t,r,n){}function*kL(e,t,r,n){kt.IsVoidLike(n)||(yield J(N.Void,e,r,n))}function*RL(e,t,r,n){Ln.Get(e[$])(e,n)||(yield J(N.Kind,e,r,n))}function*Qt(e,t,r,n){let o=ve(e.$id)?[...t,e]:t,i=e;switch(i[$]){case"Any":return yield*QD(i,o,r,n);case"Argument":return yield*JD(i,o,r,n);case"Array":return yield*eL(i,o,r,n);case"AsyncIterator":return yield*tL(i,o,r,n);case"BigInt":return yield*rL(i,o,r,n);case"Boolean":return yield*nL(i,o,r,n);case"Constructor":return yield*oL(i,o,r,n);case"Date":return yield*iL(i,o,r,n);case"Function":return yield*aL(i,o,r,n);case"Import":return yield*sL(i,o,r,n);case"Integer":return yield*cL(i,o,r,n);case"Intersect":return yield*fL(i,o,r,n);case"Iterator":return yield*uL(i,o,r,n);case"Literal":return yield*lL(i,o,r,n);case"Never":return yield*pL(i,o,r,n);case"Not":return yield*mL(i,o,r,n);case"Null":return yield*dL(i,o,r,n);case"Number":return yield*hL(i,o,r,n);case"Object":return yield*yL(i,o,r,n);case"Promise":return yield*bL(i,o,r,n);case"Record":return yield*gL(i,o,r,n);case"Ref":return yield*xL(i,o,r,n);case"RegExp":return yield*wL(i,o,r,n);case"String":return yield*SL(i,o,r,n);case"Symbol":return yield*IL(i,o,r,n);case"TemplateLiteral":return yield*_L(i,o,r,n);case"This":return yield*vL(i,o,r,n);case"Tuple":return yield*PL(i,o,r,n);case"Undefined":return yield*TL(i,o,r,n);case"Union":return yield*ML(i,o,r,n);case"Uint8Array":return yield*OL(i,o,r,n);case"Unknown":return yield*CL(i,o,r,n);case"Void":return yield*kL(i,o,r,n);default:if(!Ln.Has(i[$]))throw new Y1(e);return yield*RL(i,o,r,n)}}function _a(...e){let t=e.length===3?Qt(e[0],e[1],"",e[2]):Qt(e[0],[],"",e[1]);return new Ia(t)}var NL=function(e,t,r,n,o){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?o.call(e,r):o?o.value=r:t.set(e,r),r},XO=function(e,t,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(e):n?n.value:t.get(e)},W1,Uh,ZO,X1=class extends le{constructor(t){let r=t.First();super(r===void 0?"Invalid Value":r.message),W1.add(this),Uh.set(this,void 0),NL(this,Uh,t,"f"),this.error=r}Errors(){return new Ia(XO(this,W1,"m",ZO).call(this))}};Uh=new WeakMap,W1=new WeakSet,ZO=function*(){this.error&&(yield this.error),yield*XO(this,Uh,"f")};function WO(e,t,r){if(!xe(e,t,r))throw new X1(_a(e,t,r))}function Bh(...e){return e.length===3?WO(e[0],e[1],e[2]):WO(e[0],[],e[1])}function AL(e){let t={};for(let r of Object.getOwnPropertyNames(e))t[r]=Re(e[r]);for(let r of Object.getOwnPropertySymbols(e))t[r]=Re(e[r]);return t}function EL(e){return e.map(t=>Re(t))}function FL(e){return e.slice()}function $L(e){return new Map(Re([...e.entries()]))}function DL(e){return new Set(Re([...e.entries()]))}function LL(e){return new Date(e.toISOString())}function Re(e){if(fe(e))return EL(e);if(xr(e))return LL(e);if(an(e))return FL(e);if(gw(e))return $L(e);if(xw(e))return DL(e);if(ye(e))return AL(e);if(Gr(e))return e;throw new Error("ValueClone: Unable to clone value")}var nn=class extends le{constructor(t,r){super(r),this.schema=t}};function Ne(e){return Di(e)?e():Re(e)}function VL(e,t){return ce(e,"default")?Ne(e.default):{}}function jL(e,t){return{}}function UL(e,t){if(e.uniqueItems===!0&&!ce(e,"default"))throw new nn(e,"Array with the uniqueItems constraint requires a default value");if("contains"in e&&!ce(e,"default"))throw new nn(e,"Array with the contains constraint requires a default value");return"default"in e?Ne(e.default):e.minItems!==void 0?Array.from({length:e.minItems}).map(r=>on(e.items,t)):[]}function BL(e,t){return ce(e,"default")?Ne(e.default):(async function*(){})()}function zL(e,t){return ce(e,"default")?Ne(e.default):BigInt(0)}function GL(e,t){return ce(e,"default")?Ne(e.default):!1}function KL(e,t){if(ce(e,"default"))return Ne(e.default);{let r=on(e.returns,t);return typeof r=="object"&&!Array.isArray(r)?class{constructor(){for(let[n,o]of Object.entries(r)){let i=this;i[n]=o}}}:class{}}}function qL(e,t){return ce(e,"default")?Ne(e.default):e.minimumTimestamp!==void 0?new Date(e.minimumTimestamp):new Date}function HL(e,t){return ce(e,"default")?Ne(e.default):()=>on(e.returns,t)}function YL(e,t){let r=globalThis.Object.values(e.$defs),n=e.$defs[e.$ref];return on(n,[...t,...r])}function WL(e,t){return ce(e,"default")?Ne(e.default):e.minimum!==void 0?e.minimum:0}function XL(e,t){if(ce(e,"default"))return Ne(e.default);{let r=e.allOf.reduce((n,o)=>{let i=on(o,t);return typeof i=="object"?{...n,...i}:i},{});if(!xe(e,t,r))throw new nn(e,"Intersect produced invalid value. Consider using a default value.");return r}}function ZL(e,t){return ce(e,"default")?Ne(e.default):(function*(){})()}function QL(e,t){return ce(e,"default")?Ne(e.default):e.const}function JL(e,t){if(ce(e,"default"))return Ne(e.default);throw new nn(e,"Never types cannot be created. Consider using a default value.")}function eV(e,t){if(ce(e,"default"))return Ne(e.default);throw new nn(e,"Not types must have a default value")}function tV(e,t){return ce(e,"default")?Ne(e.default):null}function rV(e,t){return ce(e,"default")?Ne(e.default):e.minimum!==void 0?e.minimum:0}function nV(e,t){if(ce(e,"default"))return Ne(e.default);{let r=new Set(e.required),n={};for(let[o,i]of Object.entries(e.properties))r.has(o)&&(n[o]=on(i,t));return n}}function oV(e,t){return ce(e,"default")?Ne(e.default):Promise.resolve(on(e.item,t))}function iV(e,t){return ce(e,"default")?Ne(e.default):{}}function aV(e,t){return ce(e,"default")?Ne(e.default):on($e(e,t),t)}function sV(e,t){if(ce(e,"default"))return Ne(e.default);throw new nn(e,"RegExp types cannot be created. Consider using a default value.")}function cV(e,t){if(e.pattern!==void 0){if(ce(e,"default"))return Ne(e.default);throw new nn(e,"String types with patterns must specify a default value")}else if(e.format!==void 0){if(ce(e,"default"))return Ne(e.default);throw new nn(e,"String types with formats must specify a default value")}else return ce(e,"default")?Ne(e.default):e.minLength!==void 0?Array.from({length:e.minLength}).map(()=>" ").join(""):""}function fV(e,t){return ce(e,"default")?Ne(e.default):"value"in e?Symbol.for(e.value):Symbol()}function uV(e,t){if(ce(e,"default"))return Ne(e.default);if(!Vl(e))throw new nn(e,"Can only create template literals that produce a finite variants. Consider using a default value.");return Ls(e)[0]}function lV(e,t){if(QO++>xV)throw new nn(e,"Cannot create recursive type as it appears possibly infinite. Consider using a default.");return ce(e,"default")?Ne(e.default):on($e(e,t),t)}function pV(e,t){return ce(e,"default")?Ne(e.default):e.items===void 0?[]:Array.from({length:e.minItems}).map((r,n)=>on(e.items[n],t))}function mV(e,t){if(ce(e,"default"))return Ne(e.default)}function dV(e,t){if(ce(e,"default"))return Ne(e.default);if(e.anyOf.length===0)throw new Error("ValueCreate.Union: Cannot create Union with zero variants");return on(e.anyOf[0],t)}function hV(e,t){return ce(e,"default")?Ne(e.default):e.minByteLength!==void 0?new Uint8Array(e.minByteLength):new Uint8Array(0)}function yV(e,t){return ce(e,"default")?Ne(e.default):{}}function bV(e,t){if(ce(e,"default"))return Ne(e.default)}function gV(e,t){if(ce(e,"default"))return Ne(e.default);throw new Error("User defined types must specify a default value")}function on(e,t){let r=Xt(e,t),n=e;switch(n[$]){case"Any":return VL(n,r);case"Argument":return jL(n,r);case"Array":return UL(n,r);case"AsyncIterator":return BL(n,r);case"BigInt":return zL(n,r);case"Boolean":return GL(n,r);case"Constructor":return KL(n,r);case"Date":return qL(n,r);case"Function":return HL(n,r);case"Import":return YL(n,r);case"Integer":return WL(n,r);case"Intersect":return XL(n,r);case"Iterator":return ZL(n,r);case"Literal":return QL(n,r);case"Never":return JL(n,r);case"Not":return eV(n,r);case"Null":return tV(n,r);case"Number":return rV(n,r);case"Object":return nV(n,r);case"Promise":return oV(n,r);case"Record":return iV(n,r);case"Ref":return aV(n,r);case"RegExp":return sV(n,r);case"String":return cV(n,r);case"Symbol":return fV(n,r);case"TemplateLiteral":return uV(n,r);case"This":return lV(n,r);case"Tuple":return pV(n,r);case"Undefined":return mV(n,r);case"Union":return dV(n,r);case"Uint8Array":return hV(n,r);case"Unknown":return yV(n,r);case"Void":return bV(n,r);default:if(!Ln.Has(n[$]))throw new nn(n,"Unknown type");return gV(n,r)}}var xV=512,QO=0;function eo(...e){return QO=0,e.length===2?on(e[0],e[1]):on(e[0],[])}var zh=class extends le{constructor(t,r){super(r),this.schema=t}};function JO(e,t,r){if(e[$]==="Object"&&typeof r=="object"&&!Wo(r)){let n=e,o=Object.getOwnPropertyNames(r);return Object.entries(n.properties).reduce((a,[s,c])=>{let u=c[$]==="Literal"&&c.const===r[s]?100:0,f=xe(c,t,r[s])?10:0,m=o.includes(s)?1:0;return a+(u+f+m)},0)}else if(e[$]==="Union"){let o=e.anyOf.map(i=>$e(i,t)).map(i=>JO(i,t,r));return Math.max(...o)}else return xe(e,t,r)?1:0}function wV(e,t,r){let n=e.anyOf.map(a=>$e(a,t)),[o,i]=[n[0],0];for(let a of n){let s=JO(a,t,r);s>i&&(o=a,i=s)}return o}function SV(e,t,r){if("default"in e)return typeof r=="function"?e.default:Re(e.default);{let n=wV(e,t,r);return Il(n,t,r)}}function IV(e,t,r){return xe(e,t,r)?Re(r):eo(e,t)}function _V(e,t,r){return xe(e,t,r)?r:eo(e,t)}function vV(e,t,r){if(xe(e,t,r))return Re(r);let n=fe(r)?Re(r):eo(e,t),o=ot(e.minItems)&&n.lengthnull)]:n,a=(ot(e.maxItems)&&o.length>e.maxItems?o.slice(0,e.maxItems):o).map(c=>to(e.items,t,c));if(e.uniqueItems!==!0)return a;let s=[...new Set(a)];if(!xe(e,t,s))throw new zh(e,"Array cast produced invalid data due to uniqueItems constraint");return s}function PV(e,t,r){if(xe(e,t,r))return eo(e,t);let n=new Set(e.returns.required||[]),o=function(){};for(let[i,a]of Object.entries(e.returns.properties))!n.has(i)&&r.prototype[i]===void 0||(o.prototype[i]=to(a,t,r.prototype[i]));return o}function TV(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return to(o,[...t,...n],r)}function eC(e,t){return ye(e)&&!ye(t)||!ye(e)&&ye(t)?e:!ye(e)||!ye(t)?t:globalThis.Object.getOwnPropertyNames(e).reduce((r,n)=>{let o=n in t?eC(e[n],t[n]):e[n];return{...r,[n]:o}},{})}function MV(e,t,r){if(xe(e,t,r))return r;let n=eo(e,t),o=eC(n,r);return xe(e,t,o)?o:n}function OV(e,t,r){throw new zh(e,"Never types cannot be cast")}function CV(e,t,r){if(xe(e,t,r))return r;if(r===null||typeof r!="object")return eo(e,t);let n=new Set(e.required||[]),o={};for(let[i,a]of Object.entries(e.properties))!n.has(i)&&r[i]===void 0||(o[i]=to(a,t,r[i]));if(typeof e.additionalProperties=="object"){let i=Object.getOwnPropertyNames(e.properties);for(let a of Object.getOwnPropertyNames(r))i.includes(a)||(o[a]=to(e.additionalProperties,t,r[a]))}return o}function kV(e,t,r){if(xe(e,t,r))return Re(r);if(r===null||typeof r!="object"||Array.isArray(r)||r instanceof Date)return eo(e,t);let n=Object.getOwnPropertyNames(e.patternProperties)[0],o=e.patternProperties[n],i={};for(let[a,s]of Object.entries(r))i[a]=to(o,t,s);return i}function RV(e,t,r){return to($e(e,t),t,r)}function NV(e,t,r){return to($e(e,t),t,r)}function AV(e,t,r){return xe(e,t,r)?Re(r):fe(r)?e.items===void 0?[]:e.items.map((n,o)=>to(n,t,r[o])):eo(e,t)}function EV(e,t,r){return xe(e,t,r)?Re(r):SV(e,t,r)}function to(e,t,r){let n=Ve(e.$id)?Xt(e,t):t,o=e;switch(e[$]){case"Array":return vV(o,n,r);case"Constructor":return PV(o,n,r);case"Import":return TV(o,n,r);case"Intersect":return MV(o,n,r);case"Never":return OV(o,n,r);case"Object":return CV(o,n,r);case"Record":return kV(o,n,r);case"Ref":return RV(o,n,r);case"This":return NV(o,n,r);case"Tuple":return AV(o,n,r);case"Union":return EV(o,n,r);case"Date":case"Symbol":case"Uint8Array":return IV(e,t,r);default:return _V(o,n,r)}}function Il(...e){return e.length===3?to(e[0],e[1],e[2]):to(e[0],[],e[1])}function FV(e){return Vi(e)&&e[$]!=="Unsafe"}function $V(e,t,r){return fe(r)?r.map(n=>Ur(e.items,t,n)):r}function DV(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return Ur(o,[...t,...n],r)}function LV(e,t,r){let n=e.unevaluatedProperties,i=e.allOf.map(s=>Ur(s,t,Re(r))).reduce((s,c)=>ye(c)?{...s,...c}:c,{});if(!ye(r)||!ye(i)||!Vi(n))return i;let a=Rr(e);for(let s of Object.getOwnPropertyNames(r))a.includes(s)||xe(n,t,r[s])&&(i[s]=Ur(n,t,r[s]));return i}function VV(e,t,r){if(!ye(r)||fe(r))return r;let n=e.additionalProperties;for(let o of Object.getOwnPropertyNames(r)){if(ce(e.properties,o)){r[o]=Ur(e.properties[o],t,r[o]);continue}if(Vi(n)&&xe(n,t,r[o])){r[o]=Ur(n,t,r[o]);continue}delete r[o]}return r}function jV(e,t,r){if(!ye(r))return r;let n=e.additionalProperties,o=Object.getOwnPropertyNames(r),[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let c of o){if(s.test(c)){r[c]=Ur(a,t,r[c]);continue}if(Vi(n)&&xe(n,t,r[c])){r[c]=Ur(n,t,r[c]);continue}delete r[c]}return r}function UV(e,t,r){return Ur($e(e,t),t,r)}function BV(e,t,r){return Ur($e(e,t),t,r)}function zV(e,t,r){if(!fe(r))return r;if(nt(e.items))return[];let n=Math.min(r.length,e.items.length);for(let o=0;on?r.slice(0,n):r}function GV(e,t,r){for(let n of e.anyOf)if(FV(n)&&xe(n,t,r))return Ur(n,t,r);return r}function Ur(e,t,r){let n=Ve(e.$id)?Xt(e,t):t,o=e;switch(o[$]){case"Array":return $V(o,n,r);case"Import":return DV(o,n,r);case"Intersect":return LV(o,n,r);case"Object":return VV(o,n,r);case"Record":return jV(o,n,r);case"Ref":return UV(o,n,r);case"This":return BV(o,n,r);case"Tuple":return zV(o,n,r);case"Union":return GV(o,n,r);default:return r}}function Gh(...e){return e.length===3?Ur(e[0],e[1],e[2]):Ur(e[0],[],e[1])}function Kh(e){return Ve(e)&&!isNaN(e)&&!isNaN(parseFloat(e))}function KV(e){return kn(e)||uo(e)||ot(e)}function _l(e){return e===!0||ot(e)&&e===1||kn(e)&&e===BigInt("1")||Ve(e)&&(e.toLowerCase()==="true"||e==="1")}function vl(e){return e===!1||ot(e)&&(e===0||Object.is(e,-0))||kn(e)&&e===BigInt("0")||Ve(e)&&(e.toLowerCase()==="false"||e==="0"||e==="-0")}function qV(e){return Ve(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function HV(e){return Ve(e)&&/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function YV(e){return Ve(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i.test(e)}function WV(e){return Ve(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)?$/i.test(e)}function XV(e){return Ve(e)&&/^\d\d\d\d-[0-1]\d-[0-3]\d$/i.test(e)}function ZV(e,t){let r=rC(e);return r===t?r:e}function QV(e,t){let r=nC(e);return r===t?r:e}function JV(e,t){let r=tC(e);return r===t?r:e}function ej(e,t){return Ve(e.const)?ZV(t,e.const):ot(e.const)?QV(t,e.const):uo(e.const)?JV(t,e.const):t}function tC(e){return _l(e)?!0:vl(e)?!1:e}function tj(e){let t=r=>r.split(".")[0];return Kh(e)?BigInt(t(e)):ot(e)?BigInt(Math.trunc(e)):vl(e)?BigInt(0):_l(e)?BigInt(1):e}function rC(e){return Xo(e)&&e.description!==void 0?e.description.toString():KV(e)?e.toString():e}function nC(e){return Kh(e)?parseFloat(e):_l(e)?1:vl(e)?0:e}function rj(e){return Kh(e)?parseInt(e):ot(e)?Math.trunc(e):_l(e)?1:vl(e)?0:e}function nj(e){return Ve(e)&&e.toLowerCase()==="null"?null:e}function oj(e){return Ve(e)&&e==="undefined"?void 0:e}function ij(e){return xr(e)?e:ot(e)?new Date(e):_l(e)?new Date(1):vl(e)?new Date(0):Kh(e)?new Date(parseInt(e)):HV(e)?new Date(`1970-01-01T${e}.000Z`):qV(e)?new Date(`1970-01-01T${e}`):WV(e)?new Date(`${e}.000Z`):YV(e)?new Date(e):XV(e)?new Date(`${e}T00:00:00.000Z`):e}function aj(e,t,r){return(fe(r)?r:[r]).map(o=>ro(e.items,t,o))}function sj(e,t,r){return tj(r)}function cj(e,t,r){return tC(r)}function fj(e,t,r){return ij(r)}function uj(e,t,r){let n=globalThis.Object.values(e.$defs),o=e.$defs[e.$ref];return ro(o,[...t,...n],r)}function lj(e,t,r){return rj(r)}function pj(e,t,r){return e.allOf.reduce((n,o)=>ro(o,t,n),r)}function mj(e,t,r){return ej(e,r)}function dj(e,t,r){return nj(r)}function hj(e,t,r){return nC(r)}function yj(e,t,r){if(!ye(r)||fe(r))return r;for(let n of Object.getOwnPropertyNames(e.properties))ce(r,n)&&(r[n]=ro(e.properties[n],t,r[n]));return r}function bj(e,t,r){if(!(ye(r)&&!fe(r)))return r;let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=e.patternProperties[o];for(let[a,s]of Object.entries(r))r[a]=ro(i,t,s);return r}function gj(e,t,r){return ro($e(e,t),t,r)}function xj(e,t,r){return rC(r)}function wj(e,t,r){return Ve(r)||ot(r)?Symbol(r):r}function Sj(e,t,r){return ro($e(e,t),t,r)}function Ij(e,t,r){return fe(r)&&!nt(e.items)?r.map((o,i)=>ino(e.items,t,`${r}/${i}`,o))):pt(e,r,n)}function Tj(e,t,r,n){if(!ye(n)||Gr(n))return pt(e,r,n);let o=Gl(e),i=o.map(f=>f[0]),a={...n};for(let[f,m]of o)f in a&&(a[f]=no(m,t,`${r}/${f}`,a[f]));if(!Ae(e.unevaluatedProperties))return pt(e,r,a);let s=Object.getOwnPropertyNames(a),c=e.unevaluatedProperties,u={...a};for(let f of s)i.includes(f)||(u[f]=pt(c,`${r}/${f}`,u[f]));return pt(e,r,u)}function Mj(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=no(i,[...t,...o],r,n);return pt(e,r,a)}function Oj(e,t,r,n){return pt(e,r,no(e.not,t,r,n))}function Cj(e,t,r,n){if(!ye(n))return pt(e,r,n);let o=Rr(e),i={...n};for(let u of o)ce(i,u)&&(nt(i[u])&&(!Jo(e.properties[u])||kt.IsExactOptionalProperty(i,u))||(i[u]=no(e.properties[u],t,`${r}/${u}`,i[u])));if(!ft(e.additionalProperties))return pt(e,r,i);let a=Object.getOwnPropertyNames(i),s=e.additionalProperties,c={...i};for(let u of a)o.includes(u)||(c[u]=pt(s,`${r}/${u}`,c[u]));return pt(e,r,c)}function kj(e,t,r,n){if(!ye(n))return pt(e,r,n);let o=Object.getOwnPropertyNames(e.patternProperties)[0],i=new RegExp(o),a={...n};for(let f of Object.getOwnPropertyNames(n))i.test(f)&&(a[f]=no(e.patternProperties[o],t,`${r}/${f}`,a[f]));if(!ft(e.additionalProperties))return pt(e,r,a);let s=Object.getOwnPropertyNames(a),c=e.additionalProperties,u={...a};for(let f of s)i.test(f)||(u[f]=pt(c,`${r}/${f}`,u[f]));return pt(e,r,u)}function Rj(e,t,r,n){let o=$e(e,t);return pt(e,r,no(o,t,r,n))}function Nj(e,t,r,n){let o=$e(e,t);return pt(e,r,no(o,t,r,n))}function Aj(e,t,r,n){return fe(n)&&fe(e.items)?pt(e,r,e.items.map((o,i)=>no(o,t,`${r}/${i}`,n[i]))):pt(e,r,n)}function Ej(e,t,r,n){for(let o of e.anyOf){if(!xe(o,t,n))continue;let i=no(o,t,r,n);return pt(e,r,i)}return pt(e,r,n)}function no(e,t,r,n){let o=Xt(e,t),i=e;switch(e[$]){case"Array":return Pj(i,o,r,n);case"Import":return Mj(i,o,r,n);case"Intersect":return Tj(i,o,r,n);case"Not":return Oj(i,o,r,n);case"Object":return Cj(i,o,r,n);case"Record":return kj(i,o,r,n);case"Ref":return Rj(i,o,r,n);case"Symbol":return pt(i,r,n);case"This":return Nj(i,o,r,n);case"Tuple":return Aj(i,o,r,n);case"Union":return Ej(i,o,r,n);default:return pt(i,r,n)}}function Yh(e,t,r){return no(e,t,"",r)}var Wh=class extends le{constructor(t,r,n){super("The encoded value does not match the expected schema"),this.schema=t,this.value=r,this.error=n}},Q1=class extends le{constructor(t,r,n,o){super(`${o instanceof Error?o.message:"Unknown error"}`),this.schema=t,this.path=r,this.value=n,this.error=o}};function sr(e,t,r){try{return Ae(e)?e[ct].Encode(r):r}catch(n){throw new Q1(e,t,r,n)}}function Fj(e,t,r,n){let o=sr(e,r,n);return fe(o)?o.map((i,a)=>oo(e.items,t,`${r}/${a}`,i)):o}function $j(e,t,r,n){let o=globalThis.Object.values(e.$defs),i=e.$defs[e.$ref],a=sr(e,r,n);return oo(i,[...t,...o],r,a)}function Dj(e,t,r,n){let o=sr(e,r,n);if(!ye(n)||Gr(n))return o;let i=Gl(e),a=i.map(m=>m[0]),s={...o};for(let[m,l]of i)m in s&&(s[m]=oo(l,t,`${r}/${m}`,s[m]));if(!Ae(e.unevaluatedProperties))return s;let c=Object.getOwnPropertyNames(s),u=e.unevaluatedProperties,f={...s};for(let m of c)a.includes(m)||(f[m]=sr(u,`${r}/${m}`,f[m]));return f}function Lj(e,t,r,n){return sr(e.not,r,sr(e,r,n))}function Vj(e,t,r,n){let o=sr(e,r,n);if(!ye(o))return o;let i=Rr(e),a={...o};for(let f of i)ce(a,f)&&(nt(a[f])&&(!Jo(e.properties[f])||kt.IsExactOptionalProperty(a,f))||(a[f]=oo(e.properties[f],t,`${r}/${f}`,a[f])));if(!ft(e.additionalProperties))return a;let s=Object.getOwnPropertyNames(a),c=e.additionalProperties,u={...a};for(let f of s)i.includes(f)||(u[f]=sr(c,`${r}/${f}`,u[f]));return u}function jj(e,t,r,n){let o=sr(e,r,n);if(!ye(n))return o;let i=Object.getOwnPropertyNames(e.patternProperties)[0],a=new RegExp(i),s={...o};for(let m of Object.getOwnPropertyNames(n))a.test(m)&&(s[m]=oo(e.patternProperties[i],t,`${r}/${m}`,s[m]));if(!ft(e.additionalProperties))return s;let c=Object.getOwnPropertyNames(s),u=e.additionalProperties,f={...s};for(let m of c)a.test(m)||(f[m]=sr(u,`${r}/${m}`,f[m]));return f}function Uj(e,t,r,n){let o=$e(e,t),i=oo(o,t,r,n);return sr(e,r,i)}function Bj(e,t,r,n){let o=$e(e,t),i=oo(o,t,r,n);return sr(e,r,i)}function zj(e,t,r,n){let o=sr(e,r,n);return fe(e.items)?e.items.map((i,a)=>oo(i,t,`${r}/${a}`,o[a])):[]}function Gj(e,t,r,n){for(let o of e.anyOf){if(!xe(o,t,n))continue;let i=oo(o,t,r,n);return sr(e,r,i)}for(let o of e.anyOf){let i=oo(o,t,r,n);if(xe(e,t,i))return sr(e,r,i)}return sr(e,r,n)}function oo(e,t,r,n){let o=Xt(e,t),i=e;switch(e[$]){case"Array":return Fj(i,o,r,n);case"Import":return $j(i,o,r,n);case"Intersect":return Dj(i,o,r,n);case"Not":return Lj(i,o,r,n);case"Object":return Vj(i,o,r,n);case"Record":return jj(i,o,r,n);case"Ref":return Uj(i,o,r,n);case"This":return Bj(i,o,r,n);case"Tuple":return zj(i,o,r,n);case"Union":return Gj(i,o,r,n);default:return sr(i,r,n)}}function Xh(e,t,r){return oo(e,t,"",r)}function Kj(e,t){return Ae(e)||Lt(e.items,t)}function qj(e,t){return Ae(e)||Lt(e.items,t)}function Hj(e,t){return Ae(e)||Lt(e.returns,t)||e.parameters.some(r=>Lt(r,t))}function Yj(e,t){return Ae(e)||Lt(e.returns,t)||e.parameters.some(r=>Lt(r,t))}function Wj(e,t){return Ae(e)||Ae(e.unevaluatedProperties)||e.allOf.some(r=>Lt(r,t))}function Xj(e,t){let r=globalThis.Object.getOwnPropertyNames(e.$defs).reduce((o,i)=>[...o,e.$defs[i]],[]),n=e.$defs[e.$ref];return Ae(e)||Lt(n,[...r,...t])}function Zj(e,t){return Ae(e)||Lt(e.items,t)}function Qj(e,t){return Ae(e)||Lt(e.not,t)}function Jj(e,t){return Ae(e)||Object.values(e.properties).some(r=>Lt(r,t))||ft(e.additionalProperties)&&Lt(e.additionalProperties,t)}function eU(e,t){return Ae(e)||Lt(e.item,t)}function tU(e,t){let r=Object.getOwnPropertyNames(e.patternProperties)[0],n=e.patternProperties[r];return Ae(e)||Lt(n,t)||ft(e.additionalProperties)&&Ae(e.additionalProperties)}function rU(e,t){return Ae(e)?!0:Lt($e(e,t),t)}function nU(e,t){return Ae(e)?!0:Lt($e(e,t),t)}function oU(e,t){return Ae(e)||!nt(e.items)&&e.items.some(r=>Lt(r,t))}function iU(e,t){return Ae(e)||e.anyOf.some(r=>Lt(r,t))}function Lt(e,t){let r=Xt(e,t),n=e;if(e.$id&&J1.has(e.$id))return!1;switch(e.$id&&J1.add(e.$id),e[$]){case"Array":return Kj(n,r);case"AsyncIterator":return qj(n,r);case"Constructor":return Hj(n,r);case"Function":return Yj(n,r);case"Import":return Xj(n,r);case"Intersect":return Wj(n,r);case"Iterator":return Zj(n,r);case"Not":return Qj(n,r);case"Object":return Jj(n,r);case"Promise":return eU(n,r);case"Record":return tU(n,r);case"Ref":return rU(n,r);case"This":return nU(n,r);case"Tuple":return oU(n,r);case"Union":return iU(n,r);default:return Ae(e)}}var J1=new Set;function _s(e,t){return J1.clear(),Lt(e,t)}function oC(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]];if(!xe(t,r,n))throw new Hh(t,n,_a(t,r,n).First());return _s(t,r)?Yh(t,r,n):n}function Ai(e,t){let r=ce(e,"default")?e.default:void 0,n=Di(r)?r():Re(r);return nt(t)?n:ye(t)&&ye(n)?Object.assign(n,t):t}function ew(e){return Vi(e)&&"default"in e}function aU(e,t,r){if(fe(r)){for(let o=0;o{let a=Tr(i,t,n);return ye(a)?{...o,...a}:a},{})}function uU(e,t,r){let n=Ai(e,r);if(!ye(n))return n;let o=Object.getOwnPropertyNames(e.properties);for(let i of o){let a=Tr(e.properties[i],t,n[i]);nt(a)||(n[i]=Tr(e.properties[i],t,n[i]))}if(!ew(e.additionalProperties))return n;for(let i of Object.getOwnPropertyNames(n))o.includes(i)||(n[i]=Tr(e.additionalProperties,t,n[i]));return n}function lU(e,t,r){let n=Ai(e,r);if(!ye(n))return n;let o=e.additionalProperties,[i,a]=Object.entries(e.patternProperties)[0],s=new RegExp(i);for(let c of Object.getOwnPropertyNames(n))s.test(c)&&ew(a)&&(n[c]=Tr(a,t,n[c]));if(!ew(o))return n;for(let c of Object.getOwnPropertyNames(n))s.test(c)||(n[c]=Tr(o,t,n[c]));return n}function pU(e,t,r){return Tr($e(e,t),t,Ai(e,r))}function mU(e,t,r){return Tr($e(e,t),t,r)}function dU(e,t,r){let n=Ai(e,r);if(!fe(n)||nt(e.items))return n;let[o,i]=[e.items,Math.max(e.items.length,n.length)];for(let a=0;abU,Format:()=>Pl,Get:()=>xU,Has:()=>gU,Set:()=>yU,ValuePointerRootDeleteError:()=>Jh,ValuePointerRootSetError:()=>Qh});var Qh=class extends le{constructor(t,r,n){super("Cannot set root value"),this.value=t,this.path=r,this.update=n}},Jh=class extends le{constructor(t,r){super("Cannot delete root value"),this.value=t,this.path=r}};function iC(e){return e.indexOf("~")===-1?e:e.replace(/~1/g,"/").replace(/~0/g,"~")}function*Pl(e){if(e==="")return;let[t,r]=[0,0];for(let n=0;nvs(e[o],t[o]))}function SU(e,t){return xr(t)&&e.getTime()===t.getTime()}function IU(e,t){return!fe(t)||e.length!==t.length?!1:e.every((r,n)=>vs(r,t[n]))}function _U(e,t){return!an(t)||e.length!==t.length||Object.getPrototypeOf(e).constructor.name!==Object.getPrototypeOf(t).constructor.name?!1:e.every((r,n)=>vs(r,t[n]))}function vU(e,t){return e===t}function vs(e,t){if(xr(e))return SU(e,t);if(an(e))return _U(e,t);if(fe(e))return IU(e,t);if(ye(e))return wU(e,t);if(Gr(e))return vU(e,t);throw new Error("ValueEquals: Unable to compare value")}var PU=Fe({type:Te("insert"),path:wr(),value:Vn()}),TU=Fe({type:Te("update"),path:wr(),value:Vn()}),MU=Fe({type:Te("delete"),path:wr()}),sC=Ee([PU,TU,MU]),e0=class extends le{constructor(t,r){super(r),this.value=t}};function t0(e,t){return{type:"update",path:e,value:t}}function cC(e,t){return{type:"insert",path:e,value:t}}function fC(e){return{type:"delete",path:e}}function aC(e){if(globalThis.Object.getOwnPropertySymbols(e).length>0)throw new e0(e,"Cannot diff objects with symbols")}function*OU(e,t,r){if(aC(t),aC(r),!T0(r))return yield t0(e,r);let n=globalThis.Object.getOwnPropertyNames(t),o=globalThis.Object.getOwnPropertyNames(r);for(let i of o)ce(t,i)||(yield cC(`${e}/${i}`,r[i]));for(let i of n)ce(r,i)&&(vs(t,r)||(yield*r0(`${e}/${i}`,t[i],r[i])));for(let i of n)ce(r,i)||(yield fC(`${e}/${i}`))}function*CU(e,t,r){if(!fe(r))return yield t0(e,r);for(let n=0;n=0;n--)n0&&e[0].path===""&&e[0].type==="update"}function AU(e){return e.length===0}function lC(e,t){if(NU(t))return Re(t[0].value);if(AU(t))return Re(e);let r=Re(e);for(let n of t)switch(n.type){case"insert":{io.Set(r,n.path,n.value);break}case"update":{io.Set(r,n.path,n.value);break}case"delete":{io.Delete(r,n.path);break}}return r}function pC(...e){let[t,r,n]=e.length===3?[e[0],e[1],e[2]]:[e[0],[],e[1]],o=_s(t,r)?Xh(t,r,n):n;if(!xe(t,r,o))throw new Wh(t,o,_a(t,r,o).First());return o}function n0(e){return ye(e)&&!fe(e)}var o0=class extends le{constructor(t){super(t)}};function EU(e,t,r,n){if(!n0(r))io.Set(e,t,Re(n));else{let o=Object.getOwnPropertyNames(r),i=Object.getOwnPropertyNames(n);for(let a of o)i.includes(a)||delete r[a];for(let a of i)o.includes(a)||(r[a]=null);for(let a of i)tw(e,`${t}/${a}`,r[a],n[a])}}function FU(e,t,r,n){if(!fe(r))io.Set(e,t,Re(n));else{for(let o=0;o(Bh(i,a,s),s)],["Cast",(i,a,s)=>Il(i,a,s)],["Clean",(i,a,s)=>Gh(i,a,s)],["Clone",(i,a,s)=>Re(s)],["Convert",(i,a,s)=>qh(i,a,s)],["Decode",(i,a,s)=>_s(i,a)?Yh(i,a,s):s],["Default",(i,a,s)=>Zh(i,a,s)],["Encode",(i,a,s)=>_s(i,a)?Xh(i,a,s):s]]);function r(i){t.delete(i)}e.Delete=r;function n(i,a){t.set(i,a)}e.Set=n;function o(i){return t.get(i)}e.Get=o})(rw||(rw={}));var hC=["Clone","Clean","Default","Convert","Assert","Decode"];function VU(e,t,r,n){return e.reduce((o,i)=>{let a=rw.Get(i);if(nt(a))throw new i0(`Unable to find Parse operation '${i}'`);return a(t,r,o)},n)}function yC(...e){let[t,r,n,o]=e.length===4?[e[0],e[1],e[2],e[3]]:e.length===3?fe(e[0])?[e[0],e[1],[],e[2]]:[hC,e[0],e[1],e[2]]:e.length===2?[hC,e[0],[],e[1]]:(()=>{throw new i0("Invalid Arguments")})();return VU(t,r,n,o)}var pf={};Oa(pf,{Assert:()=>Bh,Cast:()=>Il,Check:()=>xe,Clean:()=>Gh,Clone:()=>Re,Convert:()=>qh,Create:()=>eo,Decode:()=>oC,Default:()=>Zh,Diff:()=>uC,Edit:()=>sC,Encode:()=>pC,Equal:()=>vs,Errors:()=>_a,Hash:()=>lf,Mutate:()=>dC,Parse:()=>yC,Patch:()=>lC,ValueErrorIterator:()=>Ia});function a0(e){switch(e.type){case"summary_metrics":return G1(e);case"performance_table":return U1(e);case"prediction_distribution":return B1(e);case"roc":return A1(e);case"calibration":return E1(e);case"precision_recall":return $1(e);case"gains":return D1(e);case"lift":return L1(e);case"decision_curve":return V1(e);case"interventions_avoided":return j1(e)}}function Bo(e,t){let r=e.toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"id";/^[a-z]/i.test(r)||(r=`id-${r}`);let n=r,o=1;for(;t.has(n);)n=`${r}-${o}`,o++;return t.add(n),n}function nw(e,t){let r=(n,o=!0)=>{e.forEach((i,a)=>{let s=a===n;i.setAttribute("aria-selected",s?"true":"false"),i.tabIndex=s?0:-1,t[a].hidden=!s}),o&&e[n].focus()};e.forEach((n,o)=>{n.addEventListener("click",()=>{r(o,!1)}),n.addEventListener("keydown",i=>{let a=null;i.key==="ArrowRight"?a=(o+1)%e.length:i.key==="ArrowLeft"?a=(o-1+e.length)%e.length:i.key==="Home"?a=0:i.key==="End"&&(a=e.length-1),a!==null&&(i.preventDefault(),r(a,!0))})})}function jU(e){if(!pf.Check(ip,e))throw new Error("Invalid ReportSpec");sp(e);let t=document.createElement("div");if(t.className="rtichoke-report",e.title){let r=document.createElement("h1");r.className="rtichoke-report__title",r.textContent=e.title,t.append(r)}for(let r of e.components){let n=document.createElement("section");if(n.className="rtichoke-report__component",n.dataset.componentId=r.id,r.title){let i=document.createElement("h2");i.className="rtichoke-report__component-title",i.textContent=r.title,n.append(i)}let o=document.createElement("div");o.className="rtichoke-report__component-content",o.append(a0(r.spec)),n.append(o),t.append(n)}return t}function UU(e,t){if(!pf.Check(ap,e))throw new Error("Invalid ReportSpec");sp(e);let r=!!e.title,n=new Set,o=document.createElement("article");if(o.className="rtichoke-report",e.title){let p=document.createElement("header");p.className="rtichoke-report__header";let h=document.createElement("h1");h.className="rtichoke-report__title",h.textContent=e.title,p.append(h),o.append(p)}let i=[],a=0;for(let p of e.sections){let h=Bo(p.id,n);a++;let y=[];for(let b of p.items)if(b.type==="group"){let w=Bo(b.id,n);a++,y.push({rawId:b.id,title:b.title,domId:w})}i.push({rawId:p.id,title:p.title,domId:h,groups:y})}if(a>1){let p=document.createElement("nav");p.className="rtichoke-report__nav",p.setAttribute("aria-label","Report sections");let h=document.createElement("ul");h.className="rtichoke-report__nav-list";for(let y of i){let b=document.createElement("li");b.className="rtichoke-report__nav-item";let w=document.createElement("a");if(w.className="rtichoke-report__nav-link",w.href=`#${y.domId}`,w.textContent=y.title,b.append(w),y.groups.length>0){let g=document.createElement("ul");g.className="rtichoke-report__nav-sublist";for(let _ of y.groups){let x=document.createElement("li");x.className="rtichoke-report__nav-subitem";let I=document.createElement("a");I.className="rtichoke-report__nav-link",I.href=`#${_.domId}`,I.textContent=_.title,x.append(I),g.append(x)}b.append(g)}h.append(b)}p.append(h),o.append(p)}let s=r?"h2":"h1",c=r?"h3":"h2",u=r?"h3":"h2",f=r?"h4":"h3",m=(p,h)=>{let y=document.createElement("section");if(y.className="rtichoke-report__component",y.dataset.componentId=p.id,p.title){let w=Bo(`heading-${p.id}`,n),g=document.createElement(h);g.className="rtichoke-report__component-title",g.id=w,g.textContent=p.title,y.setAttribute("aria-labelledby",w),y.append(g)}let b=document.createElement("div");return b.className="rtichoke-report__component-content",b.append(a0(p.spec)),y.append(b),y},l=(p,h,y)=>{let b=document.createElement("section");b.className="rtichoke-report__group",b.id=h.domId,b.dataset.groupId=p.id;let w=Bo(`heading-${p.id}`,n),g=document.createElement(c);if(g.className="rtichoke-report__group-title",y&&g.classList.add("rtichoke-report__group-title--tab-panel"),g.id=w,g.textContent=p.title,b.setAttribute("aria-labelledby",y??w),b.append(g),t.groupPresentation==="tabs"){let _=document.createElement("div");_.className="rtichoke-report__tablist",_.setAttribute("role","tablist"),_.setAttribute("aria-labelledby",w);let x=[],I=[];p.components.forEach((S,v)=>{let T=Bo(`tab-${p.id}-${S.id}`,n),O=Bo(`panel-${p.id}-${S.id}`,n),R=document.createElement("button");R.className="rtichoke-report__tab",R.type="button",R.id=T,R.setAttribute("role","tab"),R.setAttribute("aria-controls",O),R.setAttribute("aria-selected",v===0?"true":"false"),R.tabIndex=v===0?0:-1,R.textContent=S.title||S.id;let C=document.createElement("section");C.className="rtichoke-report__component rtichoke-report__tabpanel",C.id=O,C.setAttribute("role","tabpanel"),C.setAttribute("aria-labelledby",T),C.tabIndex=0,C.dataset.componentId=S.id,C.hidden=v!==0;let k=document.createElement("div");k.className="rtichoke-report__component-content",k.append(a0(S.spec)),C.append(k),x.push(R),I.push(C),_.append(R)}),nw(x,I),b.append(_,...I)}else for(let _ of p.components)b.append(m(_,f));return b};for(let p=0;pT.type==="group"),x=t.sectionGroupPresentation==="tabs"&&_.length>1,I=0,S=!1,v=0;for(;v1){let k=document.createElement("div");k.className="rtichoke-report__tablist",k.setAttribute("role","tablist"),k.setAttribute("aria-labelledby",w);let z=[],j=[];R.forEach((M,U)=>{let L=Bo(`tab-${h.id}-${M.id}`,n),re=Bo(`panel-${h.id}-${M.id}`,n),V=document.createElement("button");V.className="rtichoke-report__tab",V.type="button",V.id=L,V.setAttribute("role","tab"),V.setAttribute("aria-controls",re),V.setAttribute("aria-selected",U===0?"true":"false"),V.tabIndex=U===0?0:-1,V.textContent=M.title||M.id;let q=document.createElement("section");q.className="rtichoke-report__component rtichoke-report__tabpanel",q.id=re,q.setAttribute("role","tabpanel"),q.setAttribute("aria-labelledby",L),q.tabIndex=0,q.dataset.componentId=M.id,q.hidden=U!==0;let H=document.createElement("div");H.className="rtichoke-report__component-content",H.append(a0(M.spec)),q.append(H),z.push(V),j.push(q),k.append(V)}),nw(z,j),b.append(k,...j),v=O}else b.append(m(T,u)),v++}else if(T.type==="group"){if(x){if(!S){S=!0;let O=document.createElement("div");O.className="rtichoke-report__tablist rtichoke-report__section-group-tablist",O.setAttribute("role","tablist"),O.setAttribute("aria-labelledby",w);let R=[],C=[];_.forEach((k,z)=>{let j=y.groups[z],M=Bo(`section-group-tab-${h.id}-${k.id}`,n),U=document.createElement("button");U.className="rtichoke-report__tab",U.type="button",U.id=M,U.setAttribute("role","tab"),U.setAttribute("aria-controls",j.domId),U.setAttribute("aria-selected",z===0?"true":"false"),U.tabIndex=z===0?0:-1,U.textContent=k.title;let L=l(k,j,M);L.classList.add("rtichoke-report__tabpanel"),L.setAttribute("role","tabpanel"),L.setAttribute("aria-labelledby",M),L.tabIndex=0,L.hidden=z!==0,R.push(U),C.push(L),O.append(U)}),nw(R,C),b.append(O,...C)}}else b.append(l(T,y.groups[I++]));v++}}o.append(b)}return o}function BU(e,t){if(!e||typeof e!="object")throw new Error("Invalid ReportSpec");let r=t?.groupPresentation??"stacked",n=t?.sectionGroupPresentation??"stacked",o=t?.sectionComponentPresentation??"stacked";if(t!==void 0&&(typeof t!="object"||t===null||t.groupPresentation!==void 0&&t.groupPresentation!=="stacked"&&t.groupPresentation!=="tabs"))throw new Error("Invalid render options: groupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionGroupPresentation!==void 0&&t.sectionGroupPresentation!=="stacked"&&t.sectionGroupPresentation!=="tabs")throw new Error("Invalid render options: sectionGroupPresentation must be 'stacked' or 'tabs'");if(t!==void 0&&t.sectionComponentPresentation!==void 0&&t.sectionComponentPresentation!=="stacked"&&t.sectionComponentPresentation!=="tabs")throw new Error("Invalid render options: sectionComponentPresentation must be 'stacked' or 'tabs'");if(e.schemaVersion==="1.0")return jU(e);if(e.schemaVersion==="1.1")return UU(e,{groupPresentation:r,sectionGroupPresentation:n,sectionComponentPresentation:o});throw new Error("Invalid ReportSpec")}var zU=["#1b9e77","#d95f02","#7570b3","#e7298a","#07004D","#E6AB02","#FE5F55","#54494B","#006E90","#BC96E6"];function GU(e){let t=e.data.map(n=>({...n,false_positive_rate:1-n.specificity})),r=[Dt(t,{x:"false_positive_rate",y:"sensitivity",stroke:"model",strokeWidth:2,tip:!0})];return e.references?.some(n=>n.type==="identity")&&r.unshift(Dt([{x:0,y:0},{x:1,y:1}],{x:"x",y:"y",stroke:"#BEBEBE",strokeWidth:2})),jo({width:600,height:600,marginLeft:64,marginBottom:56,style:{background:"transparent",color:"#222",fontFamily:"Arial, Helvetica, sans-serif",fontSize:"13px"},x:{label:e.xAxis.label,domain:e.xAxis.domain,grid:!1,ticks:6},y:{label:e.yAxis.label,domain:e.yAxis.domain,grid:!1,ticks:6},color:{legend:!0,range:zU},marks:r})}export{gy as AUROCSummaryMetricSchema,oy as CalibrationSpecSchema,$S as CalibrationV2DatumSchema,sy as CalibrationV2SpecSchema,LS as DecisionCurveV2DatumSchema,VS as DecisionCurveV2EvaluationSchema,zS as DecisionCurveV2ReferenceSchema,jS as DecisionCurveV2SeriesSchema,cy as DecisionCurveV2SpecSchema,ES as DiscreteCalibrationV2DatumSchema,NS as DisplayGroupingSpecSchema,RS as DisplayRoleSchema,Xr as EvaluationSpecSchema,fy as GainsV2SpecSchema,YS as InterventionsAvoidedTreatAllReferenceSchema,WS as InterventionsAvoidedTreatNoneReferenceSchema,KS as InterventionsAvoidedV2DatumSchema,qS as InterventionsAvoidedV2EvaluationSchema,XS as InterventionsAvoidedV2ReferenceSchema,HS as InterventionsAvoidedV2SeriesSchema,uy as InterventionsAvoidedV2SpecSchema,ly as LiftV2SpecSchema,Ef as OperatingPointDimensionSchema,QS as OperatingPointSchema,ri as OperatingPointSpecSchema,JS as PerformanceEvaluationContextSchema,ZS as PerformanceMetricDefinitionSchema,my as PerformanceMetricIdSchema,op as PerformanceMetricValueSchema,eI as PerformanceTableRowSchema,dy as PerformanceTableSpecSchema,by as PopulationSummaryOwnerSpecSchema,py as PrecisionRecallV2SpecSchema,tI as PredictionDistributionBinSchema,rI as PredictionDistributionOperatingPointSchema,Ff as PredictionDistributionSpecSchema,xy as PrevalenceSummaryMetricSchema,yr as RTICHOKE_BROWSER_THEME,UO as RTICHOKE_COLORS,AS as ReferenceLineV2SpecSchema,oI as ReportComponentSchema,Iy as ReportComponentV1_1Schema,iI as ReportGroupSchema,aI as ReportSectionSchema,ER as ReportSpecSchema,ip as ReportSpecV1_0Schema,ap as ReportSpecV1_1Schema,iy as RocSpecSchema,hy as RocV2SpecSchema,gR as RtichokeChartSpecSchema,yy as RtichokeChartSpecV2Schema,Xs as SeriesSpecSchema,FS as SmoothCalibrationV2DatumSchema,Sy as StandaloneCanonicalSpecSchema,RR as SummaryMetricSchema,wy as SummaryMetricsSpecSchema,BS as TreatAllReferenceSchema,US as TreatNoneReferenceSchema,_y as assertPerformanceTableReferentialIntegrity,$f as assertPredictionDistributionReferentialIntegrity,sp as assertReportReferentialIntegrity,vy as assertSummaryMetricsReferentialIntegrity,ni as assertV2ReferentialIntegrity,DR as calibrationSpecFromRtichokeRows,UR as calibrationV2SpecFromRtichokeRows,BO as extractOperatingPointValues,GO as preparePredictionDistributionPlotData,R$ as renderCalibration,E1 as renderCalibrationV2,V1 as renderDecisionCurveV2,D1 as renderGainsV2,j1 as renderInterventionsAvoidedV2,L1 as renderLiftV2,U1 as renderPerformanceTable,$1 as renderPrecisionRecallV2,B1 as renderPredictionDistribution,BU as renderReport,GU as renderRoc,A1 as renderRocV2,G1 as renderSummaryMetrics,Is as renderWithOperatingPointSelection,On as resolveV2RenderOptions,$R as rocSpecFromRtichokePython,FR as rocSpecFromRtichokeR,jR as rocV2SpecFromRtichokePython,VR as rocV2SpecFromRtichokeR}; diff --git a/src/rtichoke/_viz_spec_v2.py b/src/rtichoke/_viz_spec_v2.py index a861af66..120eb1c5 100644 --- a/src/rtichoke/_viz_spec_v2.py +++ b/src/rtichoke/_viz_spec_v2.py @@ -7,11 +7,20 @@ from __future__ import annotations +import math from collections.abc import Mapping +from typing import Any import polars as pl -from rtichoke.processing.evaluation_semantics import _EvaluationMetadata +from rtichoke.performance_data.performance_data import prepare_performance_data +from rtichoke.performance_data.probs_distribution import ( + _prepare_probs_distribution_data, +) +from rtichoke.processing.evaluation_semantics import ( + _EvaluationMetadata, + _build_evaluation_metadata, +) _REQUIRED_ROC_COLUMNS = { "reference_group", @@ -52,6 +61,250 @@ } +def _to_json_number(value: Any) -> float | None: + """Convert numpy/python scalars to float or None for invalid/non-finite numbers.""" + if value is None: + return None + try: + val = float(value) + except (ValueError, TypeError): + return None + if math.isnan(val) or math.isinf(val): + return None + return val + + +def _to_json_int(value: Any) -> int | None: + """Convert numpy/python scalars to int or None for invalid/non-finite numbers.""" + if value is None: + return None + try: + val = float(value) + except (ValueError, TypeError): + return None + if math.isnan(val) or math.isinf(val): + return None + return int(val) + + +def _validate_stratified_by(stratified_by: Any) -> tuple[str, ...]: + if isinstance(stratified_by, str): + raise ValueError( + f"`stratified_by` must be a sequence of strings (e.g. ({stratified_by!r},)), got plain string {stratified_by!r}." + ) + + if not isinstance(stratified_by, (list, tuple)): + try: + strat_tuple = tuple(stratified_by) + except TypeError as err: + raise ValueError("`stratified_by` must be a sequence of strings.") from err + else: + strat_tuple = tuple(stratified_by) + + if len(strat_tuple) != 1: + raise ValueError( + f"`stratified_by` must contain exactly one element, got {len(strat_tuple)} elements: {strat_tuple!r}." + ) + + dimension = strat_tuple[0] + if dimension not in ("probability_threshold", "ppcr"): + raise ValueError( + f"Unsupported stratification key {dimension!r}. Must be 'probability_threshold' or 'ppcr'." + ) + + return strat_tuple + + +def _prediction_distribution_v2_spec( + distribution_data: Any, + performance_data: pl.DataFrame, + evaluation_metadata: Mapping[str, _EvaluationMetadata], + stratified_by: tuple[str, ...] = ("probability_threshold",), +) -> dict[str, object]: + """Map pre-computed distribution and performance data to canonical PredictionDistributionSpec.""" + strat_tuple = _validate_stratified_by(stratified_by) + evaluation_keys = list(evaluation_metadata.keys()) + evaluation_ids = { + group: f"evaluation-{index}" + for index, group in enumerate(evaluation_keys, start=1) + } + + evaluations: list[dict[str, object]] = [] + for group in evaluation_keys: + metadata = evaluation_metadata[group] + evaluation: dict[str, object] = { + "id": evaluation_ids[group], + "population": metadata.population, + } + if metadata.model is not None: + evaluation["model"] = metadata.model + evaluations.append(evaluation) + + # Convert Bins + bins_data: list[dict[str, object]] = [] + for row in distribution_data["bins"].iter_rows(named=True): + group = str(row["evaluation"]) + if group not in evaluation_ids: + raise ValueError(f"Unknown reference group in bins: {group!r}") + bins_data.append( + { + "evaluationId": evaluation_ids[group], + "lower": float(row["lower"]), + "upper": float(row["upper"]), + "includeLower": bool(row["include_lower"]), + "includeUpper": bool(row["include_upper"]), + "nPositive": int(row["n_positive"]), + "nNegative": int(row["n_negative"]), + } + ) + + # Convert Rank Bins + rank_bins_data: list[dict[str, object]] = [] + for row in distribution_data["rank_bins"].iter_rows(named=True): + group = str(row["evaluation"]) + if group not in evaluation_ids: + raise ValueError(f"Unknown reference group in rank bins: {group!r}") + rank_bins_data.append( + { + "evaluationId": evaluation_ids[group], + "rankLower": float(row["rank_lower"]), + "rankUpper": float(row["rank_upper"]), + "positiveMass": int(row["n_positive"]), + "negativeMass": int(row["n_negative"]), + } + ) + + # Convert Operating Points and Join Performance Metrics + operating_points_data: list[dict[str, object]] = [] + dimension = strat_tuple[0] + + for row in distribution_data["operating_points"].iter_rows(named=True): + group = str(row["evaluation"]) + if group not in evaluation_ids: + raise ValueError(f"Unknown reference group in operating points: {group!r}") + + req_val = float(row["value"]) + if not math.isfinite(req_val): + raise ValueError(f"Non-finite operating point value: {req_val}") + + # Exact join to performance row + if dimension == "probability_threshold": + matches = performance_data.filter( + (pl.col("reference_group") == group) + & (pl.col("stratified_by") == "probability_threshold") + & (pl.col("chosen_cutoff") == req_val) + ) + elif dimension == "ppcr": + matches = performance_data.filter( + (pl.col("reference_group") == group) + & (pl.col("stratified_by") == "ppcr") + & (pl.col("ppcr") == req_val) + ) + else: + raise ValueError(f"Unexpected dimension: {dimension!r}") + + if len(matches) == 0: + raise ValueError( + f"Missing performance row for evaluation {group!r}, dimension {dimension!r}, value {req_val}" + ) + if len(matches) > 1: + raise ValueError( + f"Duplicate performance match for evaluation {group!r}, dimension {dimension!r}, value {req_val}" + ) + + perf_row = matches.to_dicts()[0] + + canonical_metrics = [ + { + "metricId": "true_positives", + "estimate": _to_json_int(perf_row.get("true_positives")), + }, + { + "metricId": "true_negatives", + "estimate": _to_json_int(perf_row.get("true_negatives")), + }, + { + "metricId": "false_positives", + "estimate": _to_json_int(perf_row.get("false_positives")), + }, + { + "metricId": "false_negatives", + "estimate": _to_json_int(perf_row.get("false_negatives")), + }, + { + "metricId": "sensitivity", + "estimate": _to_json_number(perf_row.get("sensitivity")), + }, + { + "metricId": "specificity", + "estimate": _to_json_number(perf_row.get("specificity")), + }, + {"metricId": "ppv", "estimate": _to_json_number(perf_row.get("ppv"))}, + {"metricId": "npv", "estimate": _to_json_number(perf_row.get("npv"))}, + {"metricId": "lift", "estimate": _to_json_number(perf_row.get("lift"))}, + ] + + operating_points_data.append( + { + "evaluationId": evaluation_ids[group], + "type": dimension, + "value": req_val, + "cutoff": float(row["cutoff"]), + "realizedPpcr": float(row["realized_ppcr"]), + "performance": canonical_metrics, + } + ) + + # Validate evaluation coverage + covered_op_evals = {op["evaluationId"] for op in operating_points_data} + all_eval_ids = set(evaluation_ids.values()) + if covered_op_evals != all_eval_ids: + raise ValueError("Incomplete evaluation coverage in operating points.") + + return { + "schemaVersion": "2.0", + "type": "prediction_distribution", + "evaluations": evaluations, + "operatingPoint": {"dimension": dimension}, + "bins": bins_data, + "rankBins": rank_bins_data, + "operatingPoints": operating_points_data, + } + + +def _prediction_distribution_v2_spec_from_performance_data( + probs: dict[str, Any], + reals: Any, + by: float = 0.01, + stratified_by: tuple[str, ...] = ("probability_threshold",), +) -> dict[str, object]: + """Build exact v0.22.1 PredictionDistributionSpec from raw inputs.""" + strat_tuple = _validate_stratified_by(stratified_by) + dummy_times = pl.Series(dtype=pl.Float64).to_numpy() + evaluation_metadata = _build_evaluation_metadata(probs, reals, dummy_times) + + distribution_data = _prepare_probs_distribution_data( + probs=probs, + reals=reals, + stratified_by=strat_tuple, + by=by, + ) + + performance_data = prepare_performance_data( + probs=probs, + reals=reals, + stratified_by=strat_tuple, + by=by, + ) + + return _prediction_distribution_v2_spec( + distribution_data=distribution_data, + performance_data=performance_data, + evaluation_metadata=evaluation_metadata, + stratified_by=strat_tuple, + ) + + def _add_operating_point_to_spec( spec: dict[str, object], operating_point_dimension: str | None ) -> None: diff --git a/src/rtichoke/probs_distribution.py b/src/rtichoke/probs_distribution.py new file mode 100644 index 00000000..e212590d --- /dev/null +++ b/src/rtichoke/probs_distribution.py @@ -0,0 +1,127 @@ +"""Public API for standalone prediction distribution visualization.""" + +from __future__ import annotations + +from typing import Any, Sequence + +from rtichoke._renderers import RtichokeBrowserChart +from rtichoke._viz_spec_v2 import ( + _prediction_distribution_v2_spec_from_performance_data, +) + + +def create_probs_histogram( + probs: dict[str, Any], + reals: Any, + by: float = 0.01, + stratified_by: Sequence[str] = ("probability_threshold",), +) -> RtichokeBrowserChart: + """Create a standalone Prediction Distribution browser chart. + + This function generates a canonical prediction distribution chart displaying + predicted probability histograms or risk percentile rank distributions, + decomposed by observed binary outcome, with interactive threshold and PPCR + operating-point controls. + + In Probability Threshold mode, the x-axis represents predicted probability + intervals. In PPCR (Predicted Positives Condition Rate) mode, the x-axis + displays the producer-owned risk-rank distribution (percentile strata). + Bars in each bin are decomposed by observed binary outcome (positives and + negatives). Moving the operating-point control changes the classification + partition and updates performance metrics attached to each operating point. + Because tied predictions are never split across boundaries, ties may cause + the realized classified-positive proportion to differ from the requested PPCR. + This visualization displays model distribution and performance across operating + points and does not identify an optimal threshold. + + Parameters + ---------- + probs : dict[str, numpy.ndarray] + Nonempty dictionary mapping model or evaluation names to predicted + probability arrays. + reals : numpy.ndarray or dict[str, numpy.ndarray] + True binary labels (0 or 1), as a single shared array or a dictionary of + arrays matching keys in ``probs``. + by : float, optional + Grid resolution step size for evaluation cutoffs and percentiles. + Defaults to ``0.01``. + stratified_by : Sequence[str], optional + Sequence containing exactly one stratification key, either + ``("probability_threshold",)`` or ``("ppcr",)``. Defaults to + ``("probability_threshold",)``. + + Returns + ------- + RtichokeBrowserChart + A browser chart instance that renders the canonical prediction distribution. + + Examples + -------- + Create a prediction distribution chart in Probability Threshold mode: + + >>> import numpy as np + >>> import rtichoke + >>> probs = {"model_1": np.array([0.1, 0.4, 0.7, 0.8])} + >>> reals = np.array([0, 0, 1, 1]) + >>> chart = rtichoke.create_probs_histogram(probs=probs, reals=reals) + + Create a prediction distribution chart in PPCR / Risk Percentile mode: + + >>> chart = rtichoke.create_probs_histogram( + ... probs=probs, + ... reals=reals, + ... stratified_by=("ppcr",), + ... ) + + Compare multiple models sharing one outcome population: + + >>> probs = { + ... "model_1": np.array([0.1, 0.4, 0.7, 0.8]), + ... "model_2": np.array([0.2, 0.3, 0.6, 0.9]), + ... } + >>> reals = np.array([0, 0, 1, 1]) + >>> chart = rtichoke.create_probs_histogram(probs=probs, reals=reals) + + Compare multiple populations with population-keyed outcome arrays: + + >>> probs = { + ... "pop_1": np.array([0.1, 0.4, 0.7, 0.8]), + ... "pop_2": np.array([0.2, 0.5, 0.9]), + ... } + >>> reals = { + ... "pop_1": np.array([0, 0, 1, 1]), + ... "pop_2": np.array([0, 1, 1]), + ... } + >>> chart = rtichoke.create_probs_histogram(probs=probs, reals=reals) + """ + if isinstance(stratified_by, str): + raise ValueError( + f"`stratified_by` must be a sequence of strings (e.g. ({stratified_by!r},)), got plain string {stratified_by!r}." + ) + + if not isinstance(stratified_by, (list, tuple)): + try: + strat_tuple = tuple(stratified_by) + except TypeError as err: + raise ValueError("`stratified_by` must be a sequence of strings.") from err + else: + strat_tuple = tuple(stratified_by) + + if len(strat_tuple) != 1: + raise ValueError( + f"`stratified_by` must contain exactly one element, got {len(strat_tuple)} elements: {strat_tuple!r}." + ) + + dimension = strat_tuple[0] + if dimension not in ("probability_threshold", "ppcr"): + raise ValueError( + f"Unsupported stratification key {dimension!r}. Must be 'probability_threshold' or 'ppcr'." + ) + + spec = _prediction_distribution_v2_spec_from_performance_data( + probs=probs, + reals=reals, + by=by, + stratified_by=strat_tuple, + ) + return RtichokeBrowserChart(spec=spec) diff --git a/tests/test_probs_histogram.py b/tests/test_probs_histogram.py new file mode 100644 index 00000000..cbe8e91f --- /dev/null +++ b/tests/test_probs_histogram.py @@ -0,0 +1,582 @@ +"""Deterministic unit tests for standalone create_probs_histogram() adapter and canonical spec.""" + +import json +from pathlib import Path +from unittest.mock import patch +from jsonschema import Draft202012Validator +import numpy as np +import polars as pl +import pytest + +import rtichoke +from rtichoke._viz_spec_v2 import ( + _prediction_distribution_v2_spec, + _prediction_distribution_v2_spec_from_performance_data, +) +from rtichoke.performance_data.performance_data import prepare_performance_data +from rtichoke.performance_data.probs_distribution import ( + _prepare_probs_distribution_data, +) +from rtichoke.processing.evaluation_semantics import _build_evaluation_metadata + +_SCHEMA_PATH = ( + Path(__file__).parents[1] + / "src" + / "rtichoke" + / "_vendor" + / "rtichoke_viz" + / "rtichoke-viz-v2.schema.json" +) + + +def test_frozen_tied_fixture_exact_canonical_spec(): + probs = {"m1": np.array([0.00, 0.15, 0.30, 0.50, 0.50, 0.50, 0.65, 0.80, 1.00])} + reals = np.array([0, 1, 0, 1, 0, 1, 1, 0, 1]) + by = 0.20 + + chart = rtichoke.create_probs_histogram( + probs=probs, + reals=reals, + by=by, + stratified_by=("ppcr",), + ) + spec = chart.spec + + assert spec["schemaVersion"] == "2.0" + assert spec["type"] == "prediction_distribution" + assert spec["evaluations"] == [ + {"id": "evaluation-1", "population": "__shared_population__", "model": "m1"} + ] + assert spec["operatingPoint"] == {"dimension": "ppcr"} + + # Expected rank bins literal assertion + expected_rank_bins = [ + { + "evaluationId": "evaluation-1", + "rankLower": 0.00, + "rankUpper": 0.20, + "positiveMass": 1, + "negativeMass": 1, + }, + { + "evaluationId": "evaluation-1", + "rankLower": 0.20, + "rankUpper": 0.40, + "positiveMass": 2, + "negativeMass": 2, + }, + { + "evaluationId": "evaluation-1", + "rankLower": 0.40, + "rankUpper": 0.60, + "positiveMass": 0, + "negativeMass": 0, + }, + { + "evaluationId": "evaluation-1", + "rankLower": 0.60, + "rankUpper": 0.80, + "positiveMass": 1, + "negativeMass": 0, + }, + { + "evaluationId": "evaluation-1", + "rankLower": 0.80, + "rankUpper": 1.00, + "positiveMass": 1, + "negativeMass": 1, + }, + ] + assert spec["rankBins"] == expected_rank_bins + + # Expected PPCR operating points literal assertion + op_points = spec["operatingPoints"] + assert len(op_points) == 6 + + expected_ops = [ + { + "value": 0.00, + "cutoff": 1.00, + "realizedPpcr": 0.0 / 9.0, + "TP": 0, + "FP": 0, + "TN": 4, + "FN": 5, + }, + { + "value": 0.20, + "cutoff": 0.71, + "realizedPpcr": 2.0 / 9.0, + "TP": 1, + "FP": 1, + "TN": 3, + "FN": 4, + }, + { + "value": 0.40, + "cutoff": 0.50, + "realizedPpcr": 3.0 / 9.0, + "TP": 2, + "FP": 1, + "TN": 3, + "FN": 3, + }, + { + "value": 0.60, + "cutoff": 0.50, + "realizedPpcr": 3.0 / 9.0, + "TP": 2, + "FP": 1, + "TN": 3, + "FN": 3, + }, + { + "value": 0.80, + "cutoff": 0.24, + "realizedPpcr": 7.0 / 9.0, + "TP": 4, + "FP": 3, + "TN": 1, + "FN": 1, + }, + { + "value": 1.00, + "cutoff": 0.00, + "realizedPpcr": 9.0 / 9.0, + "TP": 5, + "FP": 4, + "TN": 0, + "FN": 0, + }, + ] + + for op, exp in zip(op_points, expected_ops): + assert op["evaluationId"] == "evaluation-1" + assert op["type"] == "ppcr" + assert pytest.approx(op["value"]) == exp["value"] + assert pytest.approx(op["cutoff"]) == exp["cutoff"] + assert pytest.approx(op["realizedPpcr"]) == exp["realizedPpcr"] + + metrics = {m["metricId"]: m["estimate"] for m in op["performance"]} + assert metrics["true_positives"] == exp["TP"] + assert isinstance(metrics["true_positives"], int) + assert metrics["false_positives"] == exp["FP"] + assert isinstance(metrics["false_positives"], int) + assert metrics["true_negatives"] == exp["TN"] + assert isinstance(metrics["true_negatives"], int) + assert metrics["false_negatives"] == exp["FN"] + assert isinstance(metrics["false_negatives"], int) + + +def test_prepared_data_builder_does_not_call_statistical_producers(): + probs = {"m1": np.array([0.1, 0.4, 0.7])} + reals = np.array([0, 1, 1]) + + dist_data = _prepare_probs_distribution_data(probs, reals, by=0.5) + perf_data = prepare_performance_data(probs, reals, by=0.5) + eval_meta = _build_evaluation_metadata(probs, reals, np.array([])) + + with ( + patch("rtichoke._viz_spec_v2.prepare_performance_data") as mock_perf, + patch("rtichoke._viz_spec_v2._prepare_probs_distribution_data") as mock_dist, + ): + spec = _prediction_distribution_v2_spec( + distribution_data=dist_data, + performance_data=perf_data, + evaluation_metadata=eval_meta, + stratified_by=("probability_threshold",), + ) + mock_perf.assert_not_called() + mock_dist.assert_not_called() + assert spec["type"] == "prediction_distribution" + + +def test_public_wrapper_and_prepared_builder_produce_identical_spec(): + probs = {"m1": np.array([0.0, 0.25, 0.5, 0.75, 1.0])} + reals = np.array([0, 0, 1, 1, 1]) + by = 0.25 + + spec_wrapper = _prediction_distribution_v2_spec_from_performance_data( + probs=probs, reals=reals, by=by, stratified_by=("probability_threshold",) + ) + + dist_data = _prepare_probs_distribution_data(probs, reals, by=by) + perf_data = prepare_performance_data(probs, reals, by=by) + eval_meta = _build_evaluation_metadata(probs, reals, np.array([])) + + spec_direct = _prediction_distribution_v2_spec( + distribution_data=dist_data, + performance_data=perf_data, + evaluation_metadata=eval_meta, + stratified_by=("probability_threshold",), + ) + + assert spec_wrapper == spec_direct + + +def test_confusion_matrix_estimates_are_integers(): + probs = {"m1": np.array([0.1, 0.5, 0.9])} + reals = np.array([0, 1, 1]) + + chart = rtichoke.create_probs_histogram(probs=probs, reals=reals, by=0.5) + spec = chart.spec + + for op in spec["operatingPoints"]: + metrics = {m["metricId"]: m["estimate"] for m in op["performance"]} + for metric_id in ( + "true_positives", + "true_negatives", + "false_positives", + "false_negatives", + ): + val = metrics[metric_id] + assert isinstance(val, int), f"{metric_id} should be int, got {type(val)}" + + +def test_undefined_metrics_null_serialization(): + probs = {"m1": np.array([0.1, 0.4, 0.7])} + reals = np.array([0, 0, 0]) # No positives -> sensitivity & PPV undefined + + chart = rtichoke.create_probs_histogram(probs=probs, reals=reals, by=0.5) + spec = chart.spec + + # Check metric estimates + op = spec["operatingPoints"][0] + metrics = {m["metricId"]: m["estimate"] for m in op["performance"]} + assert metrics["sensitivity"] is None + + # Check serialized JSON + tmp_path = Path("tmp_chart.html") + try: + chart.write_html(tmp_path) + content = tmp_path.read_text(encoding="utf-8") + assert '{"metricId":"sensitivity","estimate":null}' in content + + # Check that the embedded JSON spec payload has no NaN + spec_text = content.split( + '")[0] + assert "NaN" not in spec_text + spec_data = json.loads(spec_text) + assert spec_data["operatingPoints"][0]["performance"][4]["estimate"] is None + finally: + if tmp_path.exists(): + tmp_path.unlink() + + +def test_n_less_than_q_empty_rank_bins_and_mass_conservation(): + probs = {"m1": np.array([0.2, 0.8])} + reals = np.array([0, 1]) + by = 0.10 # q = 10, N = 2 + + chart = rtichoke.create_probs_histogram(probs=probs, reals=reals, by=by) + spec = chart.spec + + rank_bins = spec["rankBins"] + assert len(rank_bins) == 10 + + total_pos = sum(rb["positiveMass"] for rb in rank_bins) + total_neg = sum(rb["negativeMass"] for rb in rank_bins) + + assert total_pos == 1 + assert total_neg == 1 + # Verify some explicit empty rank bins exist + empty_bins = [ + rb for rb in rank_bins if rb["positiveMass"] == 0 and rb["negativeMass"] == 0 + ] + assert len(empty_bins) > 0 + + +def test_threshold_endpoints(): + probs = {"m1": np.array([0.00, 0.25, 0.50, 0.75, 1.00])} + reals = np.array([0, 1, 0, 1, 1]) + + chart = rtichoke.create_probs_histogram( + probs=probs, + reals=reals, + by=0.25, + stratified_by=("probability_threshold",), + ) + spec = chart.spec + ops = {op["value"]: op for op in spec["operatingPoints"]} + + # Cutoff 0.0: everybody predicted positive (including exact-zero score) + op_0 = ops[0.0] + metrics_0 = {m["metricId"]: m["estimate"] for m in op_0["performance"]} + assert metrics_0["true_positives"] == 3 + assert metrics_0["false_positives"] == 2 + assert op_0["realizedPpcr"] == 1.0 + + # Cutoff 0.50: predicted positive iff probability > 0.50 (i.e. scores 0.75 and 1.00) + op_50 = ops[0.50] + metrics_50 = {m["metricId"]: m["estimate"] for m in op_50["performance"]} + assert metrics_50["true_positives"] == 2 # 0.75 and 1.00 (both outcome 1) + assert metrics_50["false_positives"] == 0 + + # Cutoff 1.00: nobody predicted positive + op_1 = ops[1.00] + metrics_1 = {m["metricId"]: m["estimate"] for m in op_1["performance"]} + assert metrics_1["true_positives"] == 0 + assert metrics_1["false_positives"] == 0 + assert op_1["realizedPpcr"] == 0.0 + + +def test_multiple_models_shared_population(): + probs = { + "m1": np.array([0.1, 0.4, 0.7]), + "m2": np.array([0.2, 0.5, 0.8]), + } + reals = np.array([0, 1, 1]) + + chart = rtichoke.create_probs_histogram(probs=probs, reals=reals, by=0.5) + spec = chart.spec + + assert spec["evaluations"] == [ + {"id": "evaluation-1", "population": "__shared_population__", "model": "m1"}, + {"id": "evaluation-2", "population": "__shared_population__", "model": "m2"}, + ] + + eval_ids = {bin_item["evaluationId"] for bin_item in spec["bins"]} + assert eval_ids == {"evaluation-1", "evaluation-2"} + + +def test_multiple_populations(): + probs = { + "pop_a": np.array([0.1, 0.6, 0.9]), + "pop_b": np.array([0.3, 0.7]), + } + reals = { + "pop_a": np.array([0, 1, 1]), + "pop_b": np.array([0, 1]), + } + + chart = rtichoke.create_probs_histogram(probs=probs, reals=reals, by=0.5) + spec = chart.spec + + assert spec["evaluations"] == [ + {"id": "evaluation-1", "population": "pop_a"}, + {"id": "evaluation-2", "population": "pop_b"}, + ] + for ev in spec["evaluations"]: + assert "model" not in ev + + pop_a_rank_bins = [ + rb for rb in spec["rankBins"] if rb["evaluationId"] == "evaluation-1" + ] + pop_b_rank_bins = [ + rb for rb in spec["rankBins"] if rb["evaluationId"] == "evaluation-2" + ] + + assert sum(rb["positiveMass"] + rb["negativeMass"] for rb in pop_a_rank_bins) == 3 + assert sum(rb["positiveMass"] + rb["negativeMass"] for rb in pop_b_rank_bins) == 2 + + +def test_join_failures(): + probs = {"m1": np.array([0.1, 0.5, 0.9])} + reals = np.array([0, 1, 1]) + + with patch("rtichoke._viz_spec_v2.prepare_performance_data") as mock_perf: + # 1. Missing performance row + mock_perf.return_value = pl.DataFrame( + schema={ + "reference_group": pl.String, + "stratified_by": pl.String, + "chosen_cutoff": pl.Float64, + "ppcr": pl.Float64, + } + ) + with pytest.raises(ValueError, match="Missing performance row"): + _prediction_distribution_v2_spec_from_performance_data(probs, reals, by=0.5) + + # 2. Duplicated performance row + dup_row = { + "reference_group": "m1", + "stratified_by": "probability_threshold", + "chosen_cutoff": 0.0, + "ppcr": 1.0, + "true_positives": 2, + "true_negatives": 0, + "false_positives": 1, + "false_negatives": 0, + "sensitivity": 1.0, + "specificity": 0.0, + "ppv": 0.66, + "npv": None, + "lift": 1.0, + } + mock_perf.return_value = pl.DataFrame([dup_row, dup_row]) + with pytest.raises(ValueError, match="Duplicate performance match"): + _prediction_distribution_v2_spec_from_performance_data(probs, reals, by=0.5) + + +def test_authoritative_v0221_schema_validation_probability_threshold_and_ppcr(): + schema = json.loads(_SCHEMA_PATH.read_text(encoding="utf-8")) + validator = Draft202012Validator(schema) + + # Confirm all 8 v2 chart type branches are represented in the authoritative schema + chart_types: list[str] = [] + for item in schema.get("anyOf", []): + + def search(obj: object) -> None: + if isinstance(obj, dict): + if "properties" in obj and "type" in obj["properties"]: + tc = obj["properties"]["type"].get("const") + if tc and tc not in ("identity", "horizontal", "vertical", "path"): + chart_types.append(str(tc)) + for v in obj.values(): + search(v) + elif isinstance(obj, list): + for elem in obj: + search(elem) + + search(item) + + expected_types = { + "roc", + "calibration", + "precision_recall", + "gains", + "lift", + "decision_curve", + "interventions_avoided", + "prediction_distribution", + } + assert set(chart_types) == expected_types + + probs = {"m1": np.array([0.00, 0.15, 0.30, 0.50, 0.50, 0.50, 0.65, 0.80, 1.00])} + reals = np.array([0, 1, 0, 1, 0, 1, 1, 0, 1]) + + # 1. Probability Threshold mode schema validation + chart_thresh = rtichoke.create_probs_histogram( + probs=probs, reals=reals, by=0.20, stratified_by=("probability_threshold",) + ) + errors_thresh = list(validator.iter_errors(chart_thresh.spec)) + assert not errors_thresh, ( + f"Schema validation errors in probability_threshold mode: {errors_thresh}" + ) + + # 2. PPCR mode schema validation + chart_ppcr = rtichoke.create_probs_histogram( + probs=probs, reals=reals, by=0.20, stratified_by=("ppcr",) + ) + errors_ppcr = list(validator.iter_errors(chart_ppcr.spec)) + assert not errors_ppcr, f"Schema validation errors in PPCR mode: {errors_ppcr}" + + # 3. Negative schema validation: missing required property 'bins' + bad_spec_missing_bins = dict(chart_thresh.spec) + del bad_spec_missing_bins["bins"] + assert not validator.is_valid(bad_spec_missing_bins) + + # 4. Negative schema validation: unsupported chart type + bad_spec_unsupported_type = dict(chart_thresh.spec, type="unsupported_type") + assert not validator.is_valid(bad_spec_unsupported_type) + + +def test_stratified_by_boundary_validation(): + probs = {"m1": np.array([0.1, 0.5, 0.9])} + reals = np.array([0, 1, 1]) + + # Plain string error + with pytest.raises(ValueError, match="plain string"): + rtichoke.create_probs_histogram( + probs, reals, stratified_by="probability_threshold" + ) + + # Empty sequence error + with pytest.raises(ValueError, match="contain exactly one element"): + rtichoke.create_probs_histogram(probs, reals, stratified_by=()) + + # Sequence with > 1 elements + with pytest.raises(ValueError, match="contain exactly one element"): + rtichoke.create_probs_histogram( + probs, reals, stratified_by=("probability_threshold", "ppcr") + ) + + # Unsupported dimension key error + with pytest.raises(ValueError, match="Unsupported stratification key"): + rtichoke.create_probs_histogram( + probs, reals, stratified_by=("unsupported_key",) + ) + + +def test_negative_contract_failures(): + probs = {"m1": np.array([0.1, 0.5, 0.9])} + reals = np.array([0, 1, 1]) + + dist_data = _prepare_probs_distribution_data(probs, reals, by=0.5) + perf_data = prepare_performance_data(probs, reals, by=0.5) + eval_meta = _build_evaluation_metadata(probs, reals, np.array([])) + + # 1. Unknown reference group in bins + bad_bins = dist_data["bins"].with_columns( + pl.lit("unknown_group").alias("evaluation") + ) + bad_dist = dict(dist_data, bins=bad_bins) + with pytest.raises(ValueError, match="Unknown reference group in bins"): + _prediction_distribution_v2_spec(bad_dist, perf_data, eval_meta) + + # 2. Unknown reference group in rank bins + bad_rank_bins = dist_data["rank_bins"].with_columns( + pl.lit("unknown_group").alias("evaluation") + ) + bad_dist_rank = dict(dist_data, rank_bins=bad_rank_bins) + with pytest.raises(ValueError, match="Unknown reference group in rank bins"): + _prediction_distribution_v2_spec(bad_dist_rank, perf_data, eval_meta) + + # 3. Unknown reference group in operating points + bad_ops = dist_data["operating_points"].with_columns( + pl.lit("unknown_group").alias("evaluation") + ) + bad_dist_op = dict(dist_data, operating_points=bad_ops) + with pytest.raises(ValueError, match="Unknown reference group in operating points"): + _prediction_distribution_v2_spec(bad_dist_op, perf_data, eval_meta) + + # 4. Non-finite requested operating-point value + bad_op_value = dist_data["operating_points"].with_columns( + pl.when(pl.col("value") == 0.0) + .then(float("nan")) + .otherwise(pl.col("value")) + .alias("value") + ) + bad_dist_nan = dict(dist_data, operating_points=bad_op_value) + with pytest.raises(ValueError, match="Non-finite operating point value"): + _prediction_distribution_v2_spec(bad_dist_nan, perf_data, eval_meta) + + # 5. Incomplete evaluation coverage + partial_meta = {"m1": eval_meta["m1"], "m2": eval_meta["m1"]} + with pytest.raises( + ValueError, match="Missing performance row|Incomplete evaluation coverage" + ): + _prediction_distribution_v2_spec(dist_data, perf_data, partial_meta) + + +def test_producer_owned_performance_wins(): + probs = {"m1": np.array([0.1, 0.5, 0.9])} + reals = np.array([0, 1, 1]) + + # Patch prepare_performance_data to return a distinct patched value 999 + with patch("rtichoke._viz_spec_v2.prepare_performance_data") as mock_perf: + from rtichoke.performance_data.performance_data import prepare_performance_data + + real_df = prepare_performance_data( + probs, reals, stratified_by=("probability_threshold",), by=0.5 + ) + patched_df = real_df.with_columns( + pl.when(pl.col("chosen_cutoff") == 0.0) + .then(999) + .otherwise(pl.col("true_positives")) + .alias("true_positives") + ) + mock_perf.return_value = patched_df + + spec = _prediction_distribution_v2_spec_from_performance_data( + probs, reals, by=0.5 + ) + op_0 = [op for op in spec["operatingPoints"] if op["value"] == 0.0][0] + tp_estimate = [ + m["estimate"] + for m in op_0["performance"] + if m["metricId"] == "true_positives" + ][0] + assert tp_estimate == 999 + assert isinstance(tp_estimate, int) diff --git a/tests/test_probs_histogram_browser_acceptance.py b/tests/test_probs_histogram_browser_acceptance.py new file mode 100644 index 00000000..291044a7 --- /dev/null +++ b/tests/test_probs_histogram_browser_acceptance.py @@ -0,0 +1,169 @@ +from contextlib import contextmanager +from functools import partial +from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer +from pathlib import Path +from threading import Thread +from typing import Iterator + +import numpy as np +import pytest + +import rtichoke + + +@contextmanager +def _serve(directory: Path) -> Iterator[str]: + handler = partial(SimpleHTTPRequestHandler, directory=str(directory)) + server = ThreadingHTTPServer(("127.0.0.1", 0), handler) + thread = Thread(target=server.serve_forever, daemon=True) + thread.start() + try: + yield f"http://127.0.0.1:{server.server_port}" + finally: + server.shutdown() + thread.join() + server.server_close() + + +def test_probs_histogram_browser_acceptance_http_and_file_uri(tmp_path: Path): + try: + from playwright.sync_api import sync_playwright + except ImportError: + pytest.skip("playwright is not available") + + probs = {"m1": np.array([0.00, 0.15, 0.30, 0.50, 0.50, 0.50, 0.65, 0.80, 1.00])} + reals = np.array([0, 1, 0, 1, 0, 1, 1, 0, 1]) + + chart = rtichoke.create_probs_histogram(probs=probs, reals=reals, by=0.20) + html_file = tmp_path / "probs_histogram.html" + chart.write_html(html_file) + + # 1. Test via HTTP server + with _serve(tmp_path) as base_url: + with sync_playwright() as p: + browser = p.chromium.launch(headless=True) + page = browser.new_page() + errors: list[str] = [] + page.on( + "console", + lambda msg: ( + errors.append(msg.text) + if msg.type in ["error", "warning"] + else None + ), + ) + page.on("pageerror", lambda err: errors.append(str(err))) + page.goto(f"{base_url}/probs_histogram.html") + page.wait_for_selector("svg") + + content = page.content() + assert "m1" in content + assert page.locator("svg").count() >= 1 + assert len(errors) == 0, f"Console errors found over HTTP: {errors}" + browser.close() + + # 2. Test direct file:// access (with --allow-file-access-from-files) + with sync_playwright() as p: + browser = p.chromium.launch( + headless=True, + args=["--allow-file-access-from-files"], + ) + page = browser.new_page() + errors = [] + page.on( + "console", + lambda msg: ( + errors.append(msg.text) if msg.type in ["error", "warning"] else None + ), + ) + page.on("pageerror", lambda err: errors.append(str(err))) + page.goto(html_file.as_uri()) + page.wait_for_selector("svg") + + content = page.content() + assert "m1" in content + assert page.locator("svg").count() >= 1 + assert len(errors) == 0, f"Console errors found over file://: {errors}" + + # 3. Test changing operating point / controls and verify downstream state changes + initial_text = page.locator("body").inner_text() + assert "Sensitivity" in initial_text + assert "100.0%" in initial_text + + op_slider = page.locator("input[type='range']") + assert op_slider.count() > 0 + page.evaluate(""" + const el = document.querySelector("input[type='range']"); + el.value = 2; + el.dispatchEvent(new Event('input', { bubbles: true })); + el.dispatchEvent(new Event('change', { bubbles: true })); + """) + assert op_slider.input_value() == "2" + + updated_text = page.locator("body").inner_text() + assert updated_text != initial_text + # Verify specific updated downstream performance values (sensitivity changed from 100% to 80%) + assert "80.0%" in updated_text + + # Verify no sidecar JS/CSS files were written to the output directory + assert not (tmp_path / "rtichoke-viz.js").exists() + assert not (tmp_path / "rtichoke-viz.css").exists() + + browser.close() + + +def test_probs_histogram_ppcr_mode_browser_acceptance(tmp_path: Path): + try: + from playwright.sync_api import sync_playwright + except ImportError: + pytest.skip("playwright is not available") + + probs = {"m1": np.array([0.00, 0.15, 0.30, 0.50, 0.50, 0.50, 0.65, 0.80, 1.00])} + reals = np.array([0, 1, 0, 1, 0, 1, 1, 0, 1]) + + chart = rtichoke.create_probs_histogram( + probs=probs, reals=reals, by=0.20, stratified_by=("ppcr",) + ) + html_file = tmp_path / "probs_histogram_ppcr.html" + chart.write_html(html_file) + + with sync_playwright() as p: + browser = p.chromium.launch( + headless=True, + args=["--allow-file-access-from-files"], + ) + page = browser.new_page() + errors: list[str] = [] + page.on( + "console", + lambda msg: ( + errors.append(msg.text) if msg.type in ["error", "warning"] else None + ), + ) + page.on("pageerror", lambda err: errors.append(str(err))) + page.goto(html_file.as_uri()) + page.wait_for_selector("svg") + + assert len(errors) == 0, f"Console errors found in PPCR mode: {errors}" + + # Capture initial rect heights representing rank bin bars + initial_rects = page.locator("svg rect").evaluate_all( + "nodes => nodes.map(n => n.getAttribute('height'))" + ) + + # Change PPCR slider position + page.evaluate(""" + const el = document.querySelector("input[type='range']"); + if (el) { + el.value = 3; + el.dispatchEvent(new Event('input', { bubbles: true })); + el.dispatchEvent(new Event('change', { bubbles: true })); + } + """) + + switched_rects = page.locator("svg rect").evaluate_all( + "nodes => nodes.map(n => n.getAttribute('height'))" + ) + # Verify rank distribution bars remain unchanged while PPCR operating point moves + assert switched_rects == initial_rects + browser.close() diff --git a/tests/test_public_exports.py b/tests/test_public_exports.py index 72398d16..0c8e9365 100644 --- a/tests/test_public_exports.py +++ b/tests/test_public_exports.py @@ -2,6 +2,7 @@ EXPECTED_PUBLIC_EXPORTS = { + "create_probs_histogram", "create_roc_curve", "create_roc_curve_times", "plot_roc_curve", diff --git a/tests/test_rtichoke_viz_vendor.py b/tests/test_rtichoke_viz_vendor.py index d99a1b94..f8f95580 100644 --- a/tests/test_rtichoke_viz_vendor.py +++ b/tests/test_rtichoke_viz_vendor.py @@ -3,19 +3,19 @@ from pathlib import Path _VENDOR = Path(__file__).parents[1] / "src" / "rtichoke" / "_vendor" / "rtichoke_viz" -_RELEASE_DIR = "rtichoke-viz-0.20.2" -_SHA256 = "2e4851159ceea0e3b2420c7e0aa22a566b94ec7057c27b13b7db7da88de34d11" -_SOURCE_COMMIT = "40748bdeff7d535f516744886b64056f3aaa518d" +_RELEASE_DIR = "rtichoke-viz-0.22.1" +_SHA256 = "b812f3fc283d404d3d5982cd1a84157c3cce1f13afcdc87c392d7c9ddc029189" +_SOURCE_COMMIT = "7cc8e8c23ee2f073ff3d8e4f32198eaac4785eb2" -def test_vendored_rtichoke_viz_v0202_provenance_archive_and_schemas(): +def test_vendored_rtichoke_viz_v0221_provenance_archive_and_schemas(): provenance = (_VENDOR / "VENDORED_FROM").read_text() - assert "release=v0.20.2" in provenance + assert "release=v0.22.1" in provenance assert f"source_commit={_SOURCE_COMMIT}" in provenance - assert "archive=rtichoke-viz-0.20.2.tar.gz" in provenance + assert "archive=rtichoke-viz-0.22.1.tar.gz" in provenance assert f"sha256={_SHA256}" in provenance - archive = _VENDOR / "rtichoke-viz-0.20.2.tar.gz" + archive = _VENDOR / "rtichoke-viz-0.22.1.tar.gz" assert hashlib.sha256(archive.read_bytes()).hexdigest() == _SHA256 with tarfile.open(archive, "r:gz") as release: assert set(release.getnames()) == { @@ -30,7 +30,7 @@ def test_vendored_rtichoke_viz_v0202_provenance_archive_and_schemas(): manifest = release.extractfile(f"{_RELEASE_DIR}/MANIFEST") assert manifest is not None assert manifest.read().decode() == ( - f"version=0.20.2\ncommit={_SOURCE_COMMIT}\n" + f"version=0.22.1\ncommit={_SOURCE_COMMIT}\n" ) for filename in ( "rtichoke-viz.css", @@ -43,6 +43,8 @@ def test_vendored_rtichoke_viz_v0202_provenance_archive_and_schemas(): assert packaged is not None assert (_VENDOR / filename).read_bytes() == packaged.read() + assert not (_VENDOR / "rtichoke-viz-0.22.0.tar.gz").exists() + assert not (_VENDOR / "rtichoke-viz-0.20.2.tar.gz").exists() assert not (_VENDOR / "rtichoke-viz-0.20.1.tar.gz").exists() assert not (_VENDOR / "rtichoke-viz-0.20.0.tar.gz").exists() assert not (_VENDOR / "rtichoke-viz-0.19.0.tar.gz").exists() @@ -61,7 +63,7 @@ def test_vendored_rtichoke_viz_v0202_provenance_archive_and_schemas(): assert '"summary_metrics"' in report_schema -def test_v0202_bundle_keeps_existing_exports_and_time_dependent_surfaces(): +def test_v0221_bundle_keeps_existing_exports_and_prediction_distribution(): bundle = (_VENDOR / "rtichoke-viz.js").read_text(encoding="utf-8") for export_name in ( "renderRoc", @@ -79,6 +81,8 @@ def test_v0202_bundle_keeps_existing_exports_and_time_dependent_surfaces(): "renderPerformanceTable", "renderReport", "SummaryMetricsSpecSchema", + "renderPredictionDistribution", + "PredictionDistributionSpecSchema", ): assert export_name in bundle

^YHv(L)Qk8#pqdz7K$s~k=z%A#BW88;8NG-HjC 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 C?QV+z diff --git a/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.22.1.tar.gz b/src/rtichoke/_vendor/rtichoke_viz/rtichoke-viz-0.22.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..4b5eaa35c5266699a515a0471ab4f14b25f1e208 GIT binary patch literal 181604 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\Npn82xSZJc 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