@trohde/earos 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +1 -1
  2. package/assets/init/.agents/skills/earos-assess/SKILL.md +2 -2
  3. package/assets/init/.agents/skills/earos-assess/references/output-templates.md +61 -67
  4. package/assets/init/.agents/skills/earos-calibrate/SKILL.md +1 -1
  5. package/assets/init/.agents/skills/earos-calibrate/references/calibration-protocol.md +1 -1
  6. package/assets/init/.agents/skills/earos-create/references/validation-checklist.md +2 -2
  7. package/assets/init/.agents/skills/earos-profile-author/SKILL.md +1 -1
  8. package/assets/init/CLAUDE.md +46 -8
  9. package/assets/init/README.md +5 -6
  10. package/assets/init/core/core-meta-rubric.yaml +1 -1
  11. package/assets/init/docs/getting-started.md +20 -42
  12. package/assets/init/docs/onboarding/agent-assisted.md +2 -2
  13. package/assets/init/docs/onboarding/first-assessment.md +10 -4
  14. package/assets/init/docs/onboarding/governed-review.md +26 -16
  15. package/assets/init/docs/onboarding/overview.md +1 -49
  16. package/assets/init/docs/onboarding/scaling-optimization.md +2 -2
  17. package/assets/init/docs/profile-authoring-guide.md +6 -10
  18. package/assets/init/docs/terminology.md +4 -4
  19. package/assets/init/profiles/reference-architecture.yaml +1 -1
  20. package/assets/init/standard/EAROS.md +6 -16
  21. package/bin.js +1 -1
  22. package/dist/assets/{_basePickBy-BVu6YmSW.js → _basePickBy-PmSUrUsK.js} +1 -1
  23. package/dist/assets/{_baseUniq-CWRzQDz_.js → _baseUniq-HuZouVIz.js} +1 -1
  24. package/dist/assets/{arc-CyDBhtDM.js → arc-CJFxtF3d.js} +1 -1
  25. package/dist/assets/{architectureDiagram-2XIMDMQ5-BH6O4dvN.js → architectureDiagram-2XIMDMQ5-XA-oU2UG.js} +1 -1
  26. package/dist/assets/{blockDiagram-WCTKOSBZ-2xmwdjpg.js → blockDiagram-WCTKOSBZ-Oxp-wAST.js} +1 -1
  27. package/dist/assets/{c4Diagram-IC4MRINW-BNmPRFJF.js → c4Diagram-IC4MRINW-D8m5hQH9.js} +1 -1
  28. package/dist/assets/channel-SoktpVBQ.js +1 -0
  29. package/dist/assets/{chunk-4BX2VUAB-DGQTvirp.js → chunk-4BX2VUAB-D2kBTn2O.js} +1 -1
  30. package/dist/assets/{chunk-55IACEB6-DNMAQAC_.js → chunk-55IACEB6-Dxqrf5oZ.js} +1 -1
  31. package/dist/assets/{chunk-FMBD7UC4-BJbVTQ5o.js → chunk-FMBD7UC4-DoOEFFQC.js} +1 -1
  32. package/dist/assets/{chunk-JSJVCQXG-BCxUL74A.js → chunk-JSJVCQXG-BerphV2K.js} +1 -1
  33. package/dist/assets/{chunk-KX2RTZJC-H7wWZOfz.js → chunk-KX2RTZJC-CxUAqT05.js} +1 -1
  34. package/dist/assets/{chunk-NQ4KR5QH-BK4RlTQF.js → chunk-NQ4KR5QH-fCqZgFkU.js} +1 -1
  35. package/dist/assets/{chunk-QZHKN3VN-0chxDV5g.js → chunk-QZHKN3VN-HlpHnJEy.js} +1 -1
  36. package/dist/assets/{chunk-WL4C6EOR-DexfQ-AV.js → chunk-WL4C6EOR-D9yxAHyd.js} +1 -1
  37. package/dist/assets/classDiagram-VBA2DB6C-BT2AdZTe.js +1 -0
  38. package/dist/assets/classDiagram-v2-RAHNMMFH-BT2AdZTe.js +1 -0
  39. package/dist/assets/clone-DOjIfi5r.js +1 -0
  40. package/dist/assets/{cose-bilkent-S5V4N54A-DS2IOCfZ.js → cose-bilkent-S5V4N54A-F5xOBvqW.js} +1 -1
  41. package/dist/assets/{dagre-KLK3FWXG-BbSoTTa3.js → dagre-KLK3FWXG-CD3BTpHv.js} +1 -1
  42. package/dist/assets/{diagram-E7M64L7V-C9TvYgv0.js → diagram-E7M64L7V-C3D9MCay.js} +1 -1
  43. package/dist/assets/{diagram-IFDJBPK2-DowUMWrg.js → diagram-IFDJBPK2-zJBVM-GK.js} +1 -1
  44. package/dist/assets/{diagram-P4PSJMXO-BL6nrnQF.js → diagram-P4PSJMXO-BrmFZOLB.js} +1 -1
  45. package/dist/assets/{erDiagram-INFDFZHY-rXPRl8VM.js → erDiagram-INFDFZHY-aSMhKiV2.js} +1 -1
  46. package/dist/assets/{flowDiagram-PKNHOUZH-DBRM99-W.js → flowDiagram-PKNHOUZH-DwgX7l8F.js} +1 -1
  47. package/dist/assets/{ganttDiagram-A5KZAMGK-INcWFsBT.js → ganttDiagram-A5KZAMGK-C57Hz6QW.js} +1 -1
  48. package/dist/assets/{gitGraphDiagram-K3NZZRJ6-DMwpfE91.js → gitGraphDiagram-K3NZZRJ6-CuchqqGh.js} +1 -1
  49. package/dist/assets/{graph-DLQn37b-.js → graph-CPFGBV5J.js} +1 -1
  50. package/dist/assets/{index-BFFITMT8.js → index-DMt1cpG6.js} +124 -124
  51. package/dist/assets/{infoDiagram-LFFYTUFH-B0f4TWRM.js → infoDiagram-LFFYTUFH-Dd_5tfX7.js} +1 -1
  52. package/dist/assets/{ishikawaDiagram-PHBUUO56-CsU6XimZ.js → ishikawaDiagram-PHBUUO56-DwosSEvT.js} +1 -1
  53. package/dist/assets/{journeyDiagram-4ABVD52K-CQ7ibNib.js → journeyDiagram-4ABVD52K-BuCxcsX0.js} +1 -1
  54. package/dist/assets/{kanban-definition-K7BYSVSG-DzEN7THt.js → kanban-definition-K7BYSVSG-DF_1UCkW.js} +1 -1
  55. package/dist/assets/{layout-C0dvb42R.js → layout-DIcS6m1g.js} +1 -1
  56. package/dist/assets/{linear-j4a8mGj7.js → linear-BXkwBhoJ.js} +1 -1
  57. package/dist/assets/{mindmap-definition-YRQLILUH-DP8iEuCf.js → mindmap-definition-YRQLILUH-DcDvYagd.js} +1 -1
  58. package/dist/assets/{pieDiagram-SKSYHLDU-BpIAXgAm.js → pieDiagram-SKSYHLDU-BmeDeWDM.js} +1 -1
  59. package/dist/assets/{quadrantDiagram-337W2JSQ-DrpXn5Eg.js → quadrantDiagram-337W2JSQ-3zfjULUM.js} +1 -1
  60. package/dist/assets/{requirementDiagram-Z7DCOOCP-Bg7EwHlG.js → requirementDiagram-Z7DCOOCP-B2wQMJpq.js} +1 -1
  61. package/dist/assets/{sankeyDiagram-WA2Y5GQK-BWagRs1F.js → sankeyDiagram-WA2Y5GQK-__kKlCTq.js} +1 -1
  62. package/dist/assets/{sequenceDiagram-2WXFIKYE-q5jwhivG.js → sequenceDiagram-2WXFIKYE-B7O81Vih.js} +1 -1
  63. package/dist/assets/{stateDiagram-RAJIS63D-B_J9pE-2.js → stateDiagram-RAJIS63D-CcJaDrAK.js} +1 -1
  64. package/dist/assets/stateDiagram-v2-FVOUBMTO-B2goOPt-.js +1 -0
  65. package/dist/assets/{timeline-definition-YZTLITO2-dv0jgQ0z.js → timeline-definition-YZTLITO2-DSaQQqIU.js} +1 -1
  66. package/dist/assets/treemap-KZPCXAKY-9Hcrd8XD.js +162 -0
  67. package/dist/assets/{vennDiagram-LZ73GAT5-BdO5RgRZ.js → vennDiagram-LZ73GAT5-BqHNyca2.js} +1 -1
  68. package/dist/assets/{xychartDiagram-JWTSCODW-CpDVe-8v.js → xychartDiagram-JWTSCODW-BqeYf6Fk.js} +1 -1
  69. package/dist/index.html +1 -1
  70. package/package.json +1 -1
  71. package/dist/assets/channel-CiySTNoJ.js +0 -1
  72. package/dist/assets/classDiagram-VBA2DB6C-D7luWJQn.js +0 -1
  73. package/dist/assets/classDiagram-v2-RAHNMMFH-D7luWJQn.js +0 -1
  74. package/dist/assets/clone-ylgRbd3D.js +0 -1
  75. package/dist/assets/stateDiagram-v2-FVOUBMTO-Q_1GcybB.js +0 -1
  76. package/dist/assets/treemap-KZPCXAKY-Dt1dkIE7.js +0 -162
@@ -35,11 +35,13 @@ This creates a complete EAROS workspace with rubric files, JSON schemas, agent s
35
35
 
36
36
  ## Understanding the Workspace
37
37
 
38
+ ![The EAROS editor home screen with workflow options for governance teams, reviewers, and architects](/screenshots/editor-home.png)
39
+
38
40
  The `earos init` command creates a structured directory containing:
39
41
 
40
42
  - **Rubric files** --- the core meta-rubric and all built-in profiles and overlays (YAML)
41
43
  - **JSON schemas** --- for validating rubrics, evaluation records, and artifact documents
42
- - **Agent skills** --- 10 pre-configured skills for AI-assisted evaluation (in `.claude/skills/` and `.agents/skills/`)
44
+ - **Agent skills** --- 10 pre-configured skills for AI-assisted evaluation (in `.agents/skills/`)
43
45
  - **AGENTS.md** --- agent-agnostic instructions for AI tools like Cursor, Copilot, and Windsurf
44
46
  - **Manifest** --- an inventory of all available rubrics
45
47
 
@@ -78,6 +80,8 @@ Every criterion uses the same ordinal scale:
78
80
 
79
81
  ## Walkthrough: Scoring Your First Artifact
80
82
 
83
+ ![The New Assessment wizard — select the core rubric, then choose a profile and overlays](/screenshots/editor-new-assessment.png)
84
+
81
85
  Follow these steps for each of the 10 criteria:
82
86
 
83
87
  1. **Read the criterion question and scoring guide.** Open the core rubric YAML and find the criterion. Read the `question`, the `description`, and all five levels of the `scoring_guide`.
@@ -96,13 +100,13 @@ Not all criteria are equal. Some have **gates** --- threshold controls that can
96
100
 
97
101
  | Gate Severity | What Happens |
98
102
  |---------------|-------------|
99
- | **Critical** | If the score is below the gate threshold, the artifact is automatically **Rejected**. No amount of high scores elsewhere can override this. |
103
+ | **Critical** | If the score is below the gate threshold, the artifact is blocked from passing. The `failure_effect` determines the outcome --- typically **Reject**, or **Not Reviewable** when evidence is too incomplete to score. |
100
104
  | **Major** | A low score caps the maximum achievable status (e.g., cannot pass above Conditional Pass). |
101
105
  | **Advisory** | A low score triggers a recommendation but does not block any status. |
102
106
 
103
- In the core rubric, **SCP-01** (Scope and boundary clarity) has a **critical** gate: if the scope is so unclear that the artifact cannot be reviewed (score < 2), the result is "Not Reviewable" regardless of all other scores. **STK-01** (Stakeholder and purpose fit) and **TRC-01** (Traceability) have **major** gates.
107
+ In the core rubric, two criteria have **critical** gates: **SCP-01** (Scope and boundary clarity) if the scope is so unclear that the artifact cannot be reviewed (score < 2), the result is "Not Reviewable" regardless of all other scores; and **CMP-01** (Standards and policy compliance) — if mandatory control compliance cannot be determined, the result is "Reject". **STK-01** (Stakeholder and purpose fit) and **TRC-01** (Traceability) have **major** gates.
104
108
 
105
- > **Rule: Gates before averages.** Always check gate criteria first. If a critical gate fails, stop --- the result is Reject. Only then compute the weighted average for the remaining status thresholds.
109
+ > **Rule: Gates before averages.** Always check gate criteria first. If a critical gate fails, stop --- the result is determined by the gate's `failure_effect` (Reject or Not Reviewable). Only then compute the weighted average for the remaining status thresholds.
106
110
 
107
111
  ## Interpreting Your Results
108
112
 
@@ -116,6 +120,8 @@ After scoring all criteria and checking gates, compute the weighted average acro
116
120
  | **Reject** | Any critical gate failure, or mandatory control breach |
117
121
  | **Not Reviewable** | Evidence too incomplete to score responsibly |
118
122
 
123
+ ![Scoring a criterion — the editor shows the question, scoring guide, evidence fields, and assigned score](/screenshots/editor-evaluation-result.png)
124
+
119
125
  A Conditional Pass is not a failure --- it means the artifact is close but needs specific, named improvements before it is decision-ready. Record those improvements as actions in the evaluation record.
120
126
 
121
127
  ## Checkpoint: You Are at Level 2 When...
@@ -12,31 +12,37 @@ At Level 2, you used the core rubric and produced evidence-backed scores. At Lev
12
12
  2. **Overlays** inject cross-cutting concerns (security, data governance, regulatory) based on context
13
13
  3. **Calibration** ensures that different reviewers on your team produce substantially similar scores for the same artifact
14
14
 
15
+ ![The assessment wizard shows all available profiles — choose the one that matches your artifact type](/screenshots/editor-profile-selection.png)
16
+
15
17
  ## Choosing a Profile
16
18
 
17
- The core meta-rubric's 10 criteria are universal --- they apply to every architecture artifact. But a reference architecture has different quality expectations than an ADR, and a capability map is evaluated differently than a roadmap. Profiles add 5--12 artifact-specific criteria on top of the core.
19
+ The core meta-rubric's 10 criteria are universal --- they apply to every architecture artifact. But a reference architecture has different quality expectations than an ADR, and a capability map is evaluated differently than a roadmap. Profiles add artifact-specific criteria on top of the core --- typically 3 to 9, depending on the artifact type.
20
+
21
+ | Profile | Artifact Type | Status | What It Adds |
22
+ |---------|--------------|--------|-------------|
23
+ | `solution-architecture.yaml` | Solution designs, HLDs, LLDs | Approved | Implementation specificity, integration patterns, deployment readiness |
24
+ | `reference-architecture.yaml` | Reference architectures, platform blueprints | Draft | Architectural views, pattern reusability, adoption guidance, evolution strategy |
25
+ | `adr.yaml` | Architecture Decision Records | Approved | Decision context, options analysis, consequence tracking, revisit triggers |
26
+ | `capability-map.yaml` | Capability maps, business architecture | Approved | Capability decomposition, business alignment, gap analysis |
27
+ | `roadmap.yaml` | Architecture roadmaps, transition plans | Draft | Sequencing, dependency management, milestone definition, risk on timeline |
18
28
 
19
- | Profile | Artifact Type | What It Adds |
20
- |---------|--------------|-------------|
21
- | `solution-architecture.yaml` | Solution designs, HLDs, LLDs | Implementation specificity, integration patterns, deployment readiness |
22
- | `reference-architecture.yaml` | Reference architectures, platform blueprints | Architectural views, pattern reusability, adoption guidance, evolution strategy |
23
- | `adr.yaml` | Architecture Decision Records | Decision context, options analysis, consequence tracking, revisit triggers |
24
- | `capability-map.yaml` | Capability maps, business architecture | Capability decomposition, business alignment, gap analysis |
25
- | `roadmap.yaml` | Architecture roadmaps, transition plans | Sequencing, dependency management, milestone definition, risk on timeline |
29
+ > **Status key:** *Approved* profiles have been calibrated and are ready for governed use. *Draft* profiles are usable but have not completed the full calibration process (see [Calibrating with Your Team](#calibrating-with-your-team)).
26
30
 
27
- Every profile declares `inherits: [EAROS-CORE-002]`. This means when you evaluate a reference architecture, you score it against all 10 core criteria **plus** the profile's additional criteria --- typically 19--21 criteria total.
31
+ Every profile declares `inherits: [EAROS-CORE-002]`. This means when you evaluate a reference architecture, you score it against all 10 core criteria **plus** the profile's additional criteria --- 13--19 criteria total depending on the profile.
28
32
 
29
33
  > **How to choose:** Match the profile to the artifact's declared type. If the artifact does not fit any built-in profile, use the core rubric alone. Creating custom profiles is covered in [Scaling and Optimization](scaling-optimization.md).
30
34
 
31
35
  ## Applying Overlays
32
36
 
37
+ ![Select overlays for cross-cutting concerns — security, data governance, and regulatory compliance](/screenshots/editor-overlay-selection.png)
38
+
33
39
  Overlays inject cross-cutting concerns that apply across artifact types. Unlike profiles, overlays are applied **based on context**, not based on artifact type.
34
40
 
35
- | Overlay | Apply When... |
36
- |---------|--------------|
37
- | **Security** (`security.yaml`) | The design touches authentication, authorization, encryption, personal data, or network boundaries |
38
- | **Data Governance** (`data-governance.yaml`) | The artifact describes data flows, data retention, data classification, or data lineage |
39
- | **Regulatory** (`regulatory.yaml`) | The artifact operates in a regulated domain: payments, healthcare, financial reporting, privacy |
41
+ | Overlay | Status | Apply When... |
42
+ |---------|--------|--------------|
43
+ | **Security** (`security.yaml`) | Approved | The design touches authentication, authorization, encryption, personal data, or network boundaries |
44
+ | **Data Governance** (`data-governance.yaml`) | Approved | The artifact describes data flows, data retention, data classification, or data lineage |
45
+ | **Regulatory** (`regulatory.yaml`) | Draft | The artifact operates in a regulated domain: payments, healthcare, financial reporting, privacy |
40
46
 
41
47
  Overlays are additive --- they append criteria to the base rubric (core + profile). They cannot remove or weaken gates from the base. An overlay's critical gate adds to the gate model; it does not replace it.
42
48
 
@@ -71,7 +77,7 @@ Observed evidence is always preferred. If you find yourself relying heavily on i
71
77
 
72
78
  ## The Three Evaluation Types
73
79
 
74
- EAROS distinguishes three distinct judgment types that must never be merged into a single score:
80
+ EAROS distinguishes three distinct judgment types that should not be collapsed into a single opaque score:
75
81
 
76
82
  | Type | Question It Answers | Example |
77
83
  |------|-------------------|---------|
@@ -81,6 +87,10 @@ EAROS distinguishes three distinct judgment types that must never be merged into
81
87
 
82
88
  These are related but distinct. A beautifully written, complete document can describe an architecturally unsound system. A technically excellent architecture can be documented in an unmaintainable artifact. Collapsing these into one score hides critical information.
83
89
 
90
+ In practice, EAROS criteria map to these three types through the dimension structure --- the narrative summary in the evaluation record should address all three perspectives. The rubric's criterion scores provide the evidence base; the narrative synthesizes them into these three distinct judgments.
91
+
92
+ ![The rubric editor with file sidebar showing core, profiles, and overlays — the building blocks of governed review](/screenshots/editor-rubric-criteria.png)
93
+
84
94
  ## Calibrating with Your Team
85
95
 
86
96
  Calibration is what transforms individual scoring into a team capability. Without it, "a score of 3" means something different to each reviewer.
@@ -119,7 +129,7 @@ For more on evaluation record structure, see the [Getting Started guide](../gett
119
129
  - [ ] You have completed a calibration exercise with kappa > 0.70
120
130
  - [ ] Overlays are applied based on context (not arbitrarily or never)
121
131
  - [ ] Evaluation records are structured and conform to `evaluation.schema.json`
122
- - [ ] The three evaluation types (artifact quality, architectural fitness, governance fit) are reported separately in every evaluation
132
+ - [ ] The evaluation narrative addresses all three perspectives: artifact quality, architectural fitness, and governance fit
123
133
 
124
134
  ## Next Steps
125
135
 
@@ -23,8 +23,6 @@ No formal review process. Evaluation quality depends entirely on who happens to
23
23
  - **EAROS capabilities:** None (this is the baseline state)
24
24
  - **You are here when:** You recognize the problem --- reviews are inconsistent and reviewer-dependent
25
25
 
26
- ---
27
-
28
26
  ### Level 2 --- Rubric-Based
29
27
 
30
28
  The core rubric is adopted. Every assessment uses the same 9 dimensions and 10 criteria with the 0--4 scoring scale. Evidence is cited for every score. Results are reproducible across reviewers.
@@ -35,8 +33,6 @@ The core rubric is adopted. Every assessment uses the same 9 dimensions and 10 c
35
33
 
36
34
  > **Guide:** [Your First Assessment](first-assessment.md) walks you through this transition.
37
35
 
38
- ---
39
-
40
36
  ### Level 3 --- Governed
41
37
 
42
38
  Artifact-specific profiles and context-driven overlays are in use. Teams are calibrated against reference examples. The RULERS protocol ensures evidence-anchored scoring. Evaluation records are structured and auditable.
@@ -47,8 +43,6 @@ Artifact-specific profiles and context-driven overlays are in use. Teams are cal
47
43
 
48
44
  > **Guide:** [Governed Review](governed-review.md) walks you through this transition.
49
45
 
50
- ---
51
-
52
46
  ### Level 4 --- Hybrid
53
47
 
54
48
  AI agents augment human reviewers. Both evaluate independently and reconcile disagreements against level descriptors. Metrics track inter-rater reliability between human and agent evaluators.
@@ -59,8 +53,6 @@ AI agents augment human reviewers. Both evaluate independently and reconcile dis
59
53
 
60
54
  > **Guide:** [Agent-Assisted Evaluation](agent-assisted.md) walks you through this transition.
61
55
 
62
- ---
63
-
64
56
  ### Level 5 --- Optimized
65
57
 
66
58
  Architecture evaluation is continuous and integrated into delivery workflows. Calibration happens automatically. Executive reporting provides portfolio-level quality visibility. Rubrics are governed assets with version control and change management.
@@ -71,49 +63,9 @@ Architecture evaluation is continuous and integrated into delivery workflows. Ca
71
63
 
72
64
  > **Guide:** [Scaling and Optimization](scaling-optimization.md) walks you through this transition.
73
65
 
74
- ## Where Are You Today?
75
-
76
- Use this self-assessment to identify your current level. Answer each question honestly --- the goal is to find your starting point, not to score well.
77
-
78
- ### Level 1 -- Ad Hoc (you are here if most answers are "no")
79
-
80
- - [ ] Do you have a written set of criteria for architecture review?
81
- - [ ] Do two reviewers produce substantially similar feedback on the same artifact?
82
- - [ ] Can you explain what "good" looks like for an architecture artifact in your organization?
83
-
84
- ### Level 2 -- Rubric-Based (you are here if you can answer "yes" to these)
85
-
86
- - [ ] You use a defined rubric with explicit criteria and scoring levels
87
- - [ ] Every score has a cited evidence reference (not just "seems adequate")
88
- - [ ] You can explain the difference between a score of 2 and 3 for any criterion
89
- - [ ] You check gates before computing averages
90
-
91
- ### Level 3 -- Governed (you are here if you can answer "yes" to these)
92
-
93
- - [ ] You select profiles matched to artifact types (not just the core rubric)
94
- - [ ] You apply overlays based on context (security, data governance, regulatory)
95
- - [ ] Your team has completed a calibration exercise with inter-rater agreement measured
96
- - [ ] Evidence is classified as observed, inferred, or external
97
- - [ ] Artifact quality, architectural fitness, and governance fit are reported separately
98
-
99
- ### Level 4 -- Hybrid (you are here if you can answer "yes" to these)
100
-
101
- - [ ] AI agents evaluate artifacts using the full 8-step DAG evaluation flow
102
- - [ ] Human and agent evaluations are compared and reconciled
103
- - [ ] A challenge pass reviews the highest and lowest scores for every evaluation
104
- - [ ] You track inter-rater reliability metrics between human and agent evaluators
105
-
106
- ### Level 5 -- Optimized (you are here if you can answer "yes" to these)
107
-
108
- - [ ] Architecture evaluation is integrated into your CI/CD or delivery pipeline
109
- - [ ] Calibration runs continuously, not just at setup time
110
- - [ ] You create and maintain custom profiles for your organization's artifact types
111
- - [ ] Executive reporting provides portfolio-level quality visibility
112
- - [ ] Rubric changes follow a governed process with version bumps and re-calibration
113
-
114
66
  ## How to Use This Guide
115
67
 
116
- The onboarding guide is organized as five pages, one for each level transition:
68
+ The onboarding guide is organized as four transition guides, one for each level transition:
117
69
 
118
70
  1. [Your First Assessment](first-assessment.md) --- Level 1 to 2: Ad Hoc to Rubric-Based
119
71
  2. [Governed Review](governed-review.md) --- Level 2 to 3: Rubric-Based to Governed
@@ -46,7 +46,7 @@ The RULERS protocol uses the Wasserstein distance to measure how far an agent's
46
46
 
47
47
  ### Maintaining the gold set
48
48
 
49
- The gold set (`calibration/gold-set/`) contains reference artifacts with known scores. As your organization's standards evolve, the gold set must evolve too. Add new reference artifacts periodically and retire outdated ones. Every gold-set artifact needs scores from at least 2 calibrated human reviewers.
49
+ The gold set (`calibration/gold-set/`) is where your organization places reference artifacts with known scores. Start with the benchmark in `examples/aws-event-driven-order-processing/` and add your own. As your standards evolve, the gold set must evolve too. Add new reference artifacts periodically and retire outdated ones. Every gold-set artifact needs scores from at least 2 calibrated human reviewers.
50
50
 
51
51
  ## Creating Custom Profiles
52
52
 
@@ -60,7 +60,7 @@ The five built-in profiles (solution-architecture, reference-architecture, adr,
60
60
 
61
61
  3. **Start from the template.** Copy `templates/new-profile.template.yaml` and set the required fields: `kind: profile`, `inherits: [EAROS-CORE-002]`, and `design_method`.
62
62
 
63
- 4. **Write 5--12 criteria.** Each criterion needs all required fields: `question`, `description`, `scoring_guide` (all 5 levels), `required_evidence`, `anti_patterns`, `examples.good`, `examples.bad`, `decision_tree`, and `remediation_hints`.
63
+ 4. **Write up to 12 criteria.** Each criterion needs all required fields: `question`, `description`, `scoring_guide` (all 5 levels), `required_evidence`, `anti_patterns`, `examples.good`, `examples.bad`, `decision_tree`, and `remediation_hints`.
64
64
 
65
65
  5. **Calibrate before production.** Score 3--5 representative artifacts with 2+ reviewers. Target kappa > 0.70.
66
66
 
@@ -1,4 +1,4 @@
1
- # EaROS v2.0 Profile Authoring Guide
1
+ # EaROS Profile Authoring Guide
2
2
 
3
3
  ## Overview
4
4
 
@@ -8,7 +8,7 @@ Profiles extend the Core Meta-Rubric for specific artifact types. This guide exp
8
8
 
9
9
  1. Confirm the artifact type recurs enough to justify standardisation
10
10
  2. Verify the Core Meta-Rubric alone is insufficient
11
- 3. Choose a design method (A-E) from EaROS v2.0 Section 15
11
+ 3. Choose a design method (A-E) from the EaROS standard (Section 15)
12
12
  4. Gather 3-5 representative artifacts for calibration
13
13
 
14
14
  ## Profile Design Methods
@@ -24,23 +24,19 @@ Profiles extend the Core Meta-Rubric for specific artifact types. This guide exp
24
24
  ## Profile Rules
25
25
 
26
26
  - Inherit the core scale (0-4) and status model unless approved exception
27
- - Add no more than 5-12 specific criteria
27
+ - Add no more than 12 specific criteria (most built-in profiles use 3–9)
28
28
  - Map every criterion to a dimension
29
29
  - Define evidence anchors, gate types, and applicability rules
30
- - Include examples, anti-patterns, and remediation hints
31
- - Include at least one calibration artifact before approval
32
-
33
- ## v2.0 Additions
34
-
35
- - Include `examples.good` and `examples.bad` for AI disambiguation
30
+ - Include `examples.good`, `examples.bad`, anti-patterns, and remediation hints
36
31
  - Add `decision_tree` for ambiguous criteria
37
32
  - Specify `design_method` in metadata
38
33
  - Set `reliability_targets` for agent evaluation
39
34
  - Document `agent_scale` if collapsing to 0-3 for agent mode
35
+ - Include at least one calibration artifact before approval
40
36
 
41
37
  ## Workflow
42
38
 
43
- 1. Create proposal (see EaROS Section 16)
39
+ 1. Create proposal (see EaROS standard, Section 16)
44
40
  2. Classify as profile or overlay
45
41
  3. Choose design method (A-E)
46
42
  4. Draft using `templates/new-profile.template.yaml`
@@ -41,13 +41,13 @@ The rule that disagreements of exactly one score level (e.g., 3 vs. 4) are treat
41
41
  The universal evaluation foundation (`core/core-meta-rubric.yaml`, `rubric_id: EAROS-CORE-002`) defining nine dimensions and ten criteria applied to every architecture artifact regardless of type. All profiles inherit from the core. Used in: Section 5.1, all profile `inherits` fields.
42
42
 
43
43
  **Profile**
44
- An artifact-type extension that inherits the core meta-rubric and adds 5–12 criteria specific to a particular artifact type (e.g., solution architecture, reference architecture, ADR). Profiles use `kind: profile` and must declare `inherits: [EAROS-CORE-002]`. Used in: Section 5.2, `profiles/` directory.
44
+ An artifact-type extension that inherits the core meta-rubric and adds criteria specific to a particular artifact type (e.g., solution architecture, reference architecture, ADR). Profiles use `kind: profile` and must declare `inherits: [EAROS-CORE-002]`. Used in: Section 5.2, `profiles/` directory.
45
45
 
46
46
  **Overlay**
47
47
  A set of cross-cutting criteria injected on top of any core+profile combination, independent of artifact type. Overlays address concerns that recur across artifact types (security, data governance, regulatory compliance). They use `kind: overlay`, `artifact_type: any`, and `scoring.method: append_to_base_rubric`. Applied by context, not artifact type; they cannot remove or weaken base gates. Used in: Section 5.3, `overlays/` directory.
48
48
 
49
49
  **Gate**
50
- A criterion-level enforcement mechanism that prevents a poor score on a critical criterion being masked by high scores elsewhere. Gates are evaluated before any weighted average is computed. Gate severities: `none`, `advisory`, `major`, `critical` — a critical gate failure results in `Reject` regardless of the average. Used in: Section 7.3, all rubric YAML `gate` fields.
50
+ A criterion-level enforcement mechanism that prevents a poor score on a critical criterion being masked by high scores elsewhere. Gates are evaluated before any weighted average is computed. Gate severities: `none`, `advisory`, `major`, `critical` — a critical gate failure blocks a passing status regardless of the average --- the specific outcome (`Reject` or `Not Reviewable`) depends on the criterion's `failure_effect`. Used in: Section 7.3, all rubric YAML `gate` fields.
51
51
 
52
52
  **Evidence anchor**
53
53
  A direct pointer to the specific excerpt, diagram, section, or reference in the artifact that supports a score. Required for every scored criterion under the RULERS protocol. Anchors are classified as `observed`, `inferred`, or `external`. "The artifact seems to address this" is not a valid evidence anchor. Used in: Section 10.1, all evaluation record `evidence_anchor` fields.
@@ -56,7 +56,7 @@ A direct pointer to the specific excerpt, diagram, section, or reference in the
56
56
  The type of evidence behind a score: `observed` (directly quoted from the artifact), `inferred` (reasonably interpreted but not explicitly stated), or `external` (based on a standard or policy outside the artifact). Observed > inferred > external in credibility. Evidence class is mandatory in every evaluation record. Used in: Section 10.3, `outputs.require_evidence_class`.
57
57
 
58
58
  **RULERS protocol**
59
- An evidence-anchoring scoring procedure from the RULERS framework (2026) that requires extracting a direct quote or reference from the artifact before assigning any score. If no evidence can be found, the criterion is recorded as N/A with a written explanation never scored from impression alone. Addresses three LLM evaluation failure modes: instability under prompt variations, unverifiable reasoning, and distributional misalignment. Used in: Section 7 (agent mode), `earos-assess` skill.
59
+ An evidence-anchoring scoring procedure from the RULERS framework (2026) that requires extracting a direct quote or reference from the artifact before assigning any score. If no evidence can be found, the criterion is scored 0 (Absent) — never scored from impression alone. N/A is reserved for criteria that genuinely do not apply (see **N/A policy**). Addresses three LLM evaluation failure modes: instability under prompt variations, unverifiable reasoning, and distributional misalignment. Used in: Section 7 (agent mode), `earos-assess` skill.
60
60
 
61
61
  **DAG evaluation flow**
62
62
  The directed acyclic graph of eight ordered steps that agents must follow when evaluating an artifact: `structural_validation → content_extraction → criterion_scoring → cross_reference_validation → dimension_aggregation → challenge_pass → calibration → status_determination`. Steps cannot be skipped or reordered. Used in: Section 15 (agent operating pattern), `earos-assess` skill.
@@ -80,7 +80,7 @@ The authoritative inventory at the repo root listing every core rubric, profile,
80
80
  The five possible outcomes of an EaROS evaluation: `Pass` (no critical gate failure, overall ≥ 3.2, no dimension < 2.0), `Conditional Pass` (overall 2.4–3.19), `Rework Required` (overall < 2.4 or repeated weak dimensions), `Reject` (critical gate failure or mandatory control breach), `Not Reviewable` (insufficient evidence to score). Gates are evaluated first; averages are computed second. Used in: Section 7.4.
81
81
 
82
82
  **Three evaluation types**
83
- The three distinct judgments that must never be collapsed into a single score: (1) **artifact quality** — is the artifact complete, coherent, and fit for purpose? (2) **architectural fitness** — does the described architecture appear sound relative to business drivers and quality attributes? (3) **governance fit** — does it comply with mandatory standards and controls? A complete, well-written artifact can describe an architecturally unsound system. Used in: Section 1 (Purpose), all evaluation outputs.
83
+ The three distinct evaluation perspectives that should not be collapsed into a single opaque score: (1) **artifact quality** — is the artifact complete, coherent, and fit for purpose? (2) **architectural fitness** — does the described architecture appear sound relative to business drivers and quality attributes? (3) **governance fit** — does it comply with mandatory standards and controls? A complete, well-written artifact can describe an architecturally unsound system. These perspectives are addressed in the evaluation narrative (`decision_summary`) rather than as separately scored structured fields. Used in: Section 1 (Purpose), evaluation narratives.
84
84
 
85
85
  **N/A policy**
86
86
  The rule that a criterion may be scored N/A only when it genuinely does not apply in the artifact's scope or context, and that every N/A must be accompanied by a written justification. N/A criteria are excluded from the score denominator. N/A cannot be used to avoid a hard criterion. Used in: Section 7.1, all evaluation records.
@@ -420,7 +420,7 @@ change_log:
420
420
  date: "2026-03-18"
421
421
  author: "Thomas Rohde"
422
422
  changes:
423
- - Initial reference architecture profile for EAROS v2.0
423
+ - Initial reference architecture profile
424
424
  - 9 criteria across 6 dimensions (19 total when combined with the 10 core criteria)
425
425
  - Designed using pattern_library method
426
426
  - Incorporates golden path, diagram-as-code, and operational readiness research
@@ -1,7 +1,6 @@
1
1
  # Enterprise Architecture Rubric Operational Standard (EAROS)
2
2
 
3
- *Version: 2.0
4
- Status: Draft for review
3
+ *Status: Draft for review
5
4
  Audience: Enterprise architects, architecture boards, design authorities, reviewers, and LLM/automation teams*
6
5
 
7
6
  > See [docs/terminology.md](../docs/terminology.md) for definitions of all technical terms used in this standard.
@@ -29,18 +28,9 @@ This standard assumes a simple but important distinction:
29
28
  These must not be collapsed into one opaque score. They are related but distinct judgments.
30
29
 
31
30
 
32
- ### What is new in version 2.0
31
+ ### Research foundations
33
32
 
34
- Version 2.0 incorporates findings from a comprehensive research programme conducted in March 2026, covering 63 sources across academic literature, industry frameworks, and emerging AI evaluation methods. Key enhancements include:
35
-
36
- 1. **Strengthened design foundations** with explicit alignment to Microsoft's LLM-Rubric (ACL 2024), the RULERS framework (2026), and the CARO confusion-aware rubric optimization approach.
37
- 2. **New principle on artifact machine-readability** (Principle 8), establishing requirements for structured, parseable artifact formats.
38
- 3. **Expanded scoring guidance** with discussion of the 0–3 vs 0–4 scale tradeoff based on empirical evidence.
39
- 4. **Enhanced agentic operating pattern** with DAG-based evaluation flow, the RULERS evidence-anchoring protocol, and calibrated aggregation.
40
- 5. **New section on artifact format requirements** (Section 12) covering ArchiMate exchange format, ADR machine-readable formats, diagram-as-code, and metadata conventions.
41
- 6. **Expanded calibration methodology** with explicit inter-rater reliability targets and weighted kappa benchmarks.
42
- 7. **New section on rubric design for AI agents** (Section 13) with seven empirically grounded design principles.
43
- 8. **Updated references** with 63 additional sources.
33
+ This standard incorporates findings from a comprehensive research programme covering 63 sources across academic literature, industry frameworks, and emerging AI evaluation methods. Key foundations include alignment to Microsoft's LLM-Rubric (ACL 2024), the RULERS framework, and the CARO confusion-aware rubric optimization approach.
44
34
 
45
35
  ## 2. Design foundations
46
36
 
@@ -292,7 +282,7 @@ Do **not** multiply score by confidence. A low-confidence evaluation and a poor
292
282
 
293
283
  Empirical research on LLM-based evaluation suggests that smaller scales (0–3) produce higher inter-rater reliability between AI agents and human reviewers. The 0–3 scale reduces the ambiguous middle zone that plagues wider scales.
294
284
 
295
- However, the 0–4 scale used in EAROS v1 was chosen deliberately to distinguish between "good" (adequate with minor gaps) and "strong" (fully addressed and decision-ready). This distinction matters in architecture governance because the gap between "adequate" and "excellent" is precisely where reviewer judgment adds most value.
285
+ However, the 0–4 scale was chosen deliberately to distinguish between "good" (adequate with minor gaps) and "strong" (fully addressed and decision-ready). This distinction matters in architecture governance because the gap between "adequate" and "excellent" is precisely where reviewer judgment adds most value.
296
286
 
297
287
  **Recommended approach:** Retain the 0–4 scale for human and hybrid evaluation modes. For fully agentic evaluation, organisations may optionally collapse to a 0–3 scale by merging levels 3 and 4, provided the rubric profiles define the mapping explicitly. Any scale collapse must be recorded in the evaluation metadata.
298
288
 
@@ -1187,9 +1177,9 @@ The enterprise standard should be:
1187
1177
 
1188
1178
  All architecture rubrics shall be managed as governed, versioned, evidence-based evaluation assets composed from a common core meta-rubric, artifact-specific profiles, and context overlays. All scoring shall be explainable, evidence-linked, calibrated, and suitable for both human and agent-assisted application.
1189
1179
 
1190
- ## 33. Recommended next deliverables (updated for v2.0)
1180
+ ## 33. Recommended next deliverables
1191
1181
 
1192
- To operationalize this standard, create these next (additions for v2.0 marked with *):
1182
+ To operationalize this standard, create these next:
1193
1183
 
1194
1184
  1. core-meta-rubric.yaml
1195
1185
  2. solution-architecture.yaml
package/bin.js CHANGED
@@ -84,7 +84,7 @@ Usage:
84
84
  earos Open the editor in your browser
85
85
  earos <file.yaml> Open the editor with a file pre-loaded
86
86
  earos init [dir] [--icons] Scaffold a new EAROS workspace (default: current dir)
87
- earos validate <file.yaml> Validate a rubric or evaluation YAML (exit 0/1)
87
+ earos validate <file.yaml> Validate any EAROS YAML — rubric, evaluation, or artifact (exit 0/1)
88
88
  earos export <file.yaml> Export artifact YAML as Word document (.docx)
89
89
  earos manifest Regenerate earos.manifest.yaml
90
90
  earos manifest add <file> Add a file to the manifest
@@ -1 +1 @@
1
- import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-CWRzQDz_.js";import{aV as g,aC as $,aW as E,aX as F,aY as M,aZ as b,a_ as B,a$ as T,b0 as y,b1 as S}from"./index-BFFITMT8.js";var C=/\s/;function G(n){for(var r=n.length;r--&&C.test(n.charAt(r)););return r}var H=/^\s+/;function L(n){return n&&n.slice(0,G(n)+1).replace(H,"")}var o=NaN,R=/^[-+]0x[0-9a-f]+$/i,W=/^0b[01]+$/i,X=/^0o[0-7]+$/i,Y=parseInt;function q(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=L(n);var t=W.test(n);return t||X.test(n)?Y(n.slice(2),t?2:8):R.test(n)?o:+n}var v=1/0,z=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=q(n),n===v||n===-v){var r=n<0?-1:1;return r*z}return n===n?n:0}function Z(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var l=Object.prototype,D=l.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,l[u])&&!D.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function J(n){return function(r,t,i){var a=Object(r);if(!b(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var Q=Math.max;function U(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:Z(t);return a<0&&(a=Q(i+a,0)),p(n,m(r),a)}var hn=J(U);function V(n,r){var t=-1,i=b(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,T,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,Z as j,un as l,gn as m,K as t};
1
+ import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-HuZouVIz.js";import{aV as g,aC as $,aW as E,aX as F,aY as M,aZ as b,a_ as B,a$ as T,b0 as y,b1 as S}from"./index-DMt1cpG6.js";var C=/\s/;function G(n){for(var r=n.length;r--&&C.test(n.charAt(r)););return r}var H=/^\s+/;function L(n){return n&&n.slice(0,G(n)+1).replace(H,"")}var o=NaN,R=/^[-+]0x[0-9a-f]+$/i,W=/^0b[01]+$/i,X=/^0o[0-7]+$/i,Y=parseInt;function q(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=L(n);var t=W.test(n);return t||X.test(n)?Y(n.slice(2),t?2:8):R.test(n)?o:+n}var v=1/0,z=17976931348623157e292;function K(n){if(!n)return n===0?n:0;if(n=q(n),n===v||n===-v){var r=n<0?-1:1;return r*z}return n===n?n:0}function Z(n){var r=K(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var l=Object.prototype,D=l.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,l[u])&&!D.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function J(n){return function(r,t,i){var a=Object(r);if(!b(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var Q=Math.max;function U(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:Z(t);return a<0&&(a=Q(i+a,0)),p(n,m(r),a)}var hn=J(U);function V(n,r){var t=-1,i=b(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,T,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,Z as j,un as l,gn as m,K as t};
@@ -1 +1 @@
1
- import{bi as E,bj as Rn,a_ as T,bk as w,aZ as sn,bl as xn,bm as mn,bn as Cn,bo as un,bp as x,aX as B,bq as Mn,br as on,bs as Fn,bt as S,bg as gn,bu as R,aV as ln,bv as Dn,bw as D,bx as Gn,by as Bn,bz as _,b1 as Un,bA as Nn,aY as Kn,bB as X,bC as jn,bD as Hn,b0 as qn,a$ as cn,be as Yn,bE as C}from"./index-BFFITMT8.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||E(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,B(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,B,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Er(n){return k?Object(k.call(n)):{}}var Sr="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Br="[object Int16Array]",Ur="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Sr:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Br:case Ur:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Er(n)}}var Yr="[object Map]";function Zr(n){return E(n)&&S(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return E(n)&&S(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",En="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[En]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=S(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==En||o==$n||c&&!f){if(a=u||c?{}:Bn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?B:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Ee(n){return this.__data__.set(n,_e),this}function Se(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Ee;I.prototype.has=Se;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function Sn(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!Sn(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Be="[object Set]",Ue="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Be:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:S(n),b=s?fn:S(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!E(n)&&!E(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r==null?void 0:r[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function Et(n){return n==null?[]:pt(n,$(n))}function St(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=Sn,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,U as e,_t as f,Ln as g,Jn as h,St as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,Et as v,Vn as w,Sn as x,zn as y,yr as z};
1
+ import{bi as E,bj as Rn,a_ as T,bk as w,aZ as sn,bl as xn,bm as mn,bn as Cn,bo as un,bp as x,aX as B,bq as Mn,br as on,bs as Fn,bt as S,bg as gn,bu as R,aV as ln,bv as Dn,bw as D,bx as Gn,by as Bn,bz as _,b1 as Un,bA as Nn,aY as Kn,bB as X,bC as jn,bD as Hn,b0 as qn,a$ as cn,be as Yn,bE as C}from"./index-DMt1cpG6.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||E(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,B(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,B,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Er(n){return k?Object(k.call(n)):{}}var Sr="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Br="[object Int16Array]",Ur="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Sr:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Br:case Ur:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Er(n)}}var Yr="[object Map]";function Zr(n){return E(n)&&S(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return E(n)&&S(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",En="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[En]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=S(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==En||o==$n||c&&!f){if(a=u||c?{}:Bn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?B:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Ee(n){return this.__data__.set(n,_e),this}function Se(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Ee;I.prototype.has=Se;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function Sn(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!Sn(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Be="[object Set]",Ue="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Be:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:S(n),b=s?fn:S(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!E(n)&&!E(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r==null?void 0:r[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function Et(n){return n==null?[]:pt(n,$(n))}function St(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=Sn,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,U as e,_t as f,Ln as g,Jn as h,St as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,Et as v,Vn as w,Sn as x,zn as y,yr as z};
@@ -1 +1 @@
1
- import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-BFFITMT8.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-DMt1cpG6.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};