@sagargupta1610/orrery 0.0.0-stage → 0.6.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.
- package/LICENSE +21 -0
- package/README.md +188 -2
- package/SKILL.md +143 -0
- package/THIRD_PARTY_NOTICES.md +38 -0
- package/assets/fonts/Inter-OFL.txt +92 -0
- package/assets/fonts/Inter-Regular.ttf +0 -0
- package/assets/fonts/Inter-SemiBold.ttf +0 -0
- package/assets/fonts/metrics.json +1 -0
- package/assets/icons/aws.json +1 -0
- package/assets/icons/azure.json +1 -0
- package/assets/icons/gcp.json +1 -0
- package/assets/icons/index.json +1 -0
- package/assets/icons/k8s.json +1 -0
- package/assets/icons/simple-icons-licenses.json +1174 -0
- package/examples/ai-agent-mcp.yaml +51 -0
- package/examples/aws-data-lake.yaml +52 -0
- package/examples/aws-event-driven.yaml +45 -0
- package/examples/aws-genai-rag.yaml +44 -0
- package/examples/aws-hybrid-landing-zone.yaml +85 -0
- package/examples/aws-hybrid-network.yaml +48 -0
- package/examples/aws-serverless-api.yaml +34 -0
- package/examples/aws-three-tier-dark.yaml +55 -0
- package/examples/aws-three-tier.yaml +53 -0
- package/examples/azure-aks-platform.yaml +40 -0
- package/examples/azure-hub-spoke.yaml +58 -0
- package/examples/azure-openai-rag.yaml +60 -0
- package/examples/azure-web-app.yaml +45 -0
- package/examples/c4-container.yaml +33 -0
- package/examples/data-platform-oss.yaml +53 -0
- package/examples/gcp-gke-platform.yaml +50 -0
- package/examples/gcp-streaming-analytics.yaml +34 -0
- package/examples/gcp-vertex-mlops.yaml +65 -0
- package/examples/gcp-web-app.yaml +36 -0
- package/examples/github-actions-cicd.yaml +36 -0
- package/examples/gitops-kubernetes.yaml +56 -0
- package/examples/ibm-cloud-openshift.yaml +71 -0
- package/examples/k8s-workload.yaml +35 -0
- package/examples/ml-platform.yaml +39 -0
- package/examples/modern-web-stack.yaml +54 -0
- package/examples/multi-cloud.yaml +53 -0
- package/examples/observability-stack.yaml +38 -0
- package/examples/rag-open-source.yaml +48 -0
- package/examples/starter.yaml +26 -0
- package/examples/system-design-chat.yaml +42 -0
- package/examples/system-design-url-shortener.yaml +42 -0
- package/examples/system-design-video-streaming.yaml +53 -0
- package/package.json +30 -4
- package/references/diagram.schema.json +170 -0
- package/references/icons.md +87 -0
- package/references/outputs.md +86 -0
- package/references/patterns.md +138 -0
- package/references/review/conventions-aws.md +101 -0
- package/references/review/conventions-azure.md +100 -0
- package/references/review/conventions-c4.md +70 -0
- package/references/review/conventions-gcp.md +46 -0
- package/references/review/flow.md +53 -0
- package/references/review/legibility.md +53 -0
- package/references/review/loop.md +189 -0
- package/references/spec.md +170 -0
- package/references/styles.md +121 -0
- package/scripts/orrery.mjs +15239 -0
- package/scripts/vendor/README.md +8 -0
- package/scripts/vendor/elk.LICENSE.md +263 -0
- package/scripts/vendor/elk.bundled.cjs +6605 -0
- package/scripts/vendor/resvg/index.mjs +584 -0
- package/scripts/vendor/resvg/index_bg.wasm +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sagar Gupta
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,189 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/hero-dark.svg">
|
|
5
|
+
<source media="(prefers-color-scheme: light)" srcset="docs/hero-light.svg">
|
|
6
|
+
<img alt="GitOps delivery drawn by orrery: GitHub Actions bumps the manifests repository, Argo CD syncs GKE, AKS and EKS behind Cloudflare, and Grafana queries them, in official icons" src="docs/hero-light.svg" width="100%">
|
|
7
|
+
</picture>
|
|
8
|
+
|
|
9
|
+
# orrery
|
|
10
|
+
|
|
11
|
+
**Animated architecture and system design diagrams with official AWS, Azure, Google Cloud, Kubernetes, GitHub and IBM icons.**<br>
|
|
12
|
+
One YAML spec in; SVG, PNG, editable draw.io, a React component and an HTML viewer out.<br>
|
|
13
|
+
**[sagargupta.online/orrery](https://sagargupta.online/orrery/)**: every example in light and dark, with its spec and downloads.
|
|
14
|
+
|
|
15
|
+
[](https://github.com/Sagargupta16/orrery/actions/workflows/ci.yml)
|
|
16
|
+

|
|
17
|
+

|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
The diagram above is [docs/hero.yaml](docs/hero.yaml): 42 lines of YAML, laid out and rendered by orrery in the `stage` skin (`skin: stage`): each line draws itself in step order and every node lights up as its line arrives, on a loop. The rest of this README is the `classic` skin, the vendors' own diagram style, which animates a packet along each edge. GitHub keeps the animation; the PNG of the same spec is a still frame.
|
|
23
|
+
|
|
24
|
+
## What you get
|
|
25
|
+
|
|
26
|
+
- **Official, current icons only.** 16,682 icons: AWS (810), Azure (636), Google Cloud (233), Kubernetes (40), GitHub Octicons (399) and IBM Carbon (2,776), plus 5,502 tech logos and 6,286 neutral symbols for system design. The cloud packs are rebuilt from each vendor's own download, pinned by checksum. Google Cloud products get the icon Google's 2026 guide assigns them; deprecated sets and unofficial redraws of cloud icons are left out.
|
|
27
|
+
- **Official conventions.** AWS groups follow the AWS Architecture Icons deck (borders, dashes, corner tiles, label placement, open arrowheads, numbered callouts); Google Cloud and Azure groups are measured from their own reference diagrams. Every value cites its source in [styles.md](skills/orrery/references/styles.md).
|
|
28
|
+
- **Automatic layout.** The Eclipse Layout Kernel places nested boundaries, routes edges at right angles, joins fan-in and fan-out into trunks and keeps the order you wrote unless that would cross edges. No coordinates to write.
|
|
29
|
+
- **Diagrams that move.** Animated SVG by default: packets travel every edge at one speed, numbered steps play as a story, line styles stay as drawn. `animate: flow` for marching dashes, `--static` for a still file.
|
|
30
|
+
- **Two skins, one layout.** `classic` follows each vendor's diagram style; `skin: stage` (or `--skin stage`) draws the same boxes and lines on a dark or light showcase canvas with a dot texture and one tint, and animates them with `relay`: each line draws itself in turn and the node it reaches lights up. Vendor colors and every position stay the same.
|
|
31
|
+
- **Five outputs from one spec.** SVG for READMEs and docs, PNG for slides and chat (3x by default, sharp when zoomed), `.drawio` you can keep editing, a TSX component for React sites, and a standalone HTML viewer with dark mode, pan and pinch zoom.
|
|
32
|
+
- **Made for agents.** A skill with a fast path and authoring rules, a JSON Schema, 392 short aliases (`aws:s3`, `azure:aks`, `k8s:deploy`), ranked icon search, and a validator whose every finding names the subject and the fix.
|
|
33
|
+
- **No install.** The CLI, layout engine, PNG renderer, fonts and the official cloud packs ship in the skill folder (9 MB). Logo and glyph sets are not copied in: they load from their own npm libraries the first time a diagram uses them, verified by checksum and cached. Node.js 22 or newer is all it needs.
|
|
34
|
+
|
|
35
|
+
## How it works
|
|
36
|
+
|
|
37
|
+
<picture>
|
|
38
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/how-it-works-dark.svg">
|
|
39
|
+
<img alt="A YAML spec is validated, laid out by ELK, checked and rendered with the icon packs to SVG, PNG, draw.io, TSX and HTML" src="docs/how-it-works-light.svg" width="100%">
|
|
40
|
+
</picture>
|
|
41
|
+
|
|
42
|
+
## Install
|
|
43
|
+
|
|
44
|
+
Claude Code plugin:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
/plugin marketplace add Sagargupta16/orrery
|
|
48
|
+
/plugin install orrery@orrery
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Any agent that reads [Agent Skills](https://agentskills.io) (Codex, Cursor, Gemini CLI, Kiro and others):
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npx skills add Sagargupta16/orrery
|
|
55
|
+
gh skill install Sagargupta16/orrery orrery # GitHub CLI, any supported agent
|
|
56
|
+
gemini extensions install https://github.com/Sagargupta16/orrery # Gemini CLI extension
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Only the CLI, from npm:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npx @sagargupta1610/orrery doctor
|
|
63
|
+
npx @sagargupta1610/orrery render diagram.yaml -f all --theme both
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Or from a clone: `node orrery/skills/orrery/scripts/orrery.mjs doctor`.
|
|
67
|
+
|
|
68
|
+
## Quick start
|
|
69
|
+
|
|
70
|
+
Ask your agent for a diagram ("draw the architecture of this repo", "a three-tier web app on AWS across two Availability Zones", "turn this Mermaid flowchart into a Google Cloud diagram"). It writes a spec, validates it, renders it and checks the picture. Or write one yourself:
|
|
71
|
+
|
|
72
|
+
```yaml
|
|
73
|
+
title: Orders API
|
|
74
|
+
direction: right
|
|
75
|
+
groups:
|
|
76
|
+
cloud: { type: aws:cloud }
|
|
77
|
+
region: { type: aws:region, label: eu-west-1, in: cloud }
|
|
78
|
+
nodes:
|
|
79
|
+
users: { icon: aws:users, label: Customers }
|
|
80
|
+
api: { icon: aws:api-gateway, in: region }
|
|
81
|
+
fn: { icon: aws:lambda, label: Create order, in: region }
|
|
82
|
+
table: { icon: aws:dynamodb, label: Orders, in: region }
|
|
83
|
+
edges:
|
|
84
|
+
- users -> api: HTTPS
|
|
85
|
+
- api -> fn -> table
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
node skills/orrery/scripts/orrery.mjs render orders.yaml -f svg,png
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Labels default to the official service names, so `{ icon: aws:lambda }` reads "AWS Lambda". Edges use arrows: `->` solid, `-->` dashed, `..>` dotted, `==>` thick, `<->` both ways, `a -> b, c` to fan out. The full format is in [spec.md](skills/orrery/references/spec.md).
|
|
93
|
+
|
|
94
|
+
## Examples
|
|
95
|
+
|
|
96
|
+
[`aws-three-tier`](skills/orrery/examples/aws-three-tier.yaml): a VPC across two Availability Zones with public, web and data subnets and an Auto Scaling group drawn across both zones, in the AWS deck's own group styles.
|
|
97
|
+
|
|
98
|
+
<a href="examples/aws-three-tier.svg"><img src="examples/aws-three-tier.svg" alt="Three-tier web application on AWS across two Availability Zones"></a>
|
|
99
|
+
|
|
100
|
+
That is one of 32 reference diagrams across AWS, Azure, Google Cloud, IBM Cloud, Kubernetes, AI and ML, data platforms, CI/CD, C4 and system design, each rendered from a spec in [skills/orrery/examples](skills/orrery/examples) and checked against the renderer by CI. Browse them all in light and dark, with each spec and every output to download, at **[sagargupta.online/orrery/gallery](https://sagargupta.online/orrery/gallery/)**, or in [examples/README.md](examples/README.md) with the command that renders each one. `orrery init <name>` copies any of them as a starting point.
|
|
101
|
+
|
|
102
|
+
## Validation that tells you the fix
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
$ orrery validate orders.yaml
|
|
106
|
+
error DG101 node "fn" uses unknown icon "aws:lamda" {"node":"fn","icon":"aws:lamda"}
|
|
107
|
+
fix: use icon "aws:lambda"
|
|
108
|
+
fix: run `orrery icons search lamda`
|
|
109
|
+
error DG108 unknown key "lable" in node "db" {"where":"node \"db\"","key":"lable"}
|
|
110
|
+
fix: rename "lable" to "label"
|
|
111
|
+
failed: 2 error(s), 0 warning(s)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Spec errors (DG1xx) stop the render; composition warnings (DG2xx: an edge through a node, colliding labels, a diagram too wide to read) keep it going unless `--strict` is set. `render --json` writes every file atomically and prints a receipt with the size and SHA-256 of each output.
|
|
115
|
+
|
|
116
|
+
## A review board that measures before it judges
|
|
117
|
+
|
|
118
|
+
`orrery review` looks at the diagram at the width readers see it (880 px for a README column) and scores six dimensions: official conventions, layout, grid, arrows and flow, overlap, and size and quality.
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
$ git show v0.2.1:skills/orrery/examples/gitops-kubernetes.yaml > gitops-0.2.yaml
|
|
122
|
+
$ orrery review gitops-0.2.yaml --width 880
|
|
123
|
+
review gitops-0.2: 1964x786 in a 880px column, seen at 880x352 (scale 0.45, light)
|
|
124
|
+
score 85.3/100 FAIL (pass = no blocker or major and score >= 85)
|
|
125
|
+
...
|
|
126
|
+
blocker quality.label-size node labels render at 5.82px at this width (1964px canvas shown at 0.45x)
|
|
127
|
+
fix: use direction: down so the diagram is narrower
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The review loop took that diagram to 98.5 and passing: it now runs top to bottom, so its labels show at full size in the README column.
|
|
131
|
+
|
|
132
|
+
In Claude Code, `/orrery:review <spec>` runs the full loop. Code measures everything that can be counted: overlaps, crossings, alignment, text size and contrast at display width. Three read-only agents run in parallel and judge what cannot be counted:
|
|
133
|
+
|
|
134
|
+
- `conventions-reviewer` checks the vendor's own rules, quoted from the AWS deck, Azure Well-Architected, Google's icon guide and the C4 notation.
|
|
135
|
+
- `flow-reviewer` checks the story the arrows tell.
|
|
136
|
+
- `legibility-reviewer` reads the PNG at display size.
|
|
137
|
+
|
|
138
|
+
A finding counts only if it cites a measured value or a vendor rule. Each round applies one to three spec patches, and a round is kept only when the score goes up and no hard count does; the loop stops after three rounds or two without progress. Vision models are weak at counting overlaps and intersections, so they never decide those. The rubrics live in [references/review](skills/orrery/references/review/loop.md), so the same passes run inline anywhere the skill is installed without subagents.
|
|
139
|
+
|
|
140
|
+
## Commands
|
|
141
|
+
|
|
142
|
+
| Command | Does |
|
|
143
|
+
| --- | --- |
|
|
144
|
+
| `render <spec> [-o base] [-f svg,png,drawio,tsx,html\|all] [--theme light\|dark\|both] [--skin classic\|stage] [--animate packets\|flow\|relay\|none] [--static]` | Validate, lay out, render. |
|
|
145
|
+
| `validate <spec> [--strict] [--json]` | Spec errors and composition warnings, each with fixes. |
|
|
146
|
+
| `review <spec> [--width 880] [--theme light\|dark] [--strict] [--json]` | Score the diagram at the width readers see it; writes `<base>.review.json` and a PNG at that width. |
|
|
147
|
+
| `icons search <words> [--pack aws]` | Ranked icon ids with official names. |
|
|
148
|
+
| `icons show <id>`, `icons list`, `icons packs` | Browse the catalog and its sources. |
|
|
149
|
+
| `icons fetch` | Download and cache the logo and glyph libraries for offline renders. |
|
|
150
|
+
| `styles` | Every group type and node shape. |
|
|
151
|
+
| `init [template]` | Start from one of the examples. |
|
|
152
|
+
| `import mermaid <flowchart.mmd>` | Turn an existing Mermaid flowchart into a spec, with official icons where the labels name real products. |
|
|
153
|
+
| `doctor`, `demo` | Check the install; render every example. |
|
|
154
|
+
|
|
155
|
+
## Icon packs
|
|
156
|
+
|
|
157
|
+
| Pack | Icons | Source | Ships |
|
|
158
|
+
| --- | ---: | --- | --- |
|
|
159
|
+
| `aws` | 810 | [AWS Architecture Icons](https://aws.amazon.com/architecture/icons/), 2026-07-31 package | bundled |
|
|
160
|
+
| `azure` | 636 | [Azure Architecture Icons](https://learn.microsoft.com/en-us/azure/architecture/icons/) V24 | bundled |
|
|
161
|
+
| `gcp` | 233 | [Google Cloud icons](https://cloud.google.com/icons), core and category icons mapped to products as in Google's May 2026 guide | bundled |
|
|
162
|
+
| `k8s` | 40 | [Kubernetes community icons](https://github.com/kubernetes/community/tree/master/icons) | bundled |
|
|
163
|
+
| `github` | 399 | [GitHub Octicons](https://primer.style/octicons) | npm `@primer/octicons` |
|
|
164
|
+
| `ibm` | 2,776 | [IBM Carbon icons](https://carbondesignsystem.com/elements/icons/library/), IBM's diagram node icons and product glyphs | npm `@iconify-json/carbon` |
|
|
165
|
+
| `logos` | 2,151 | [SVG Logos](https://github.com/gilbarbara/logos) | npm `@iconify-json/logos` |
|
|
166
|
+
| `si` | 3,351 | [Simple Icons](https://simpleicons.org) | npm `@iconify-json/simple-icons` |
|
|
167
|
+
| `tabler` | 6,286 | [Tabler Icons](https://tabler.io/icons) | npm `@iconify-json/tabler` |
|
|
168
|
+
|
|
169
|
+
Bundled packs exist only as vendor downloads, so they ship with the skill and work offline. The npm sets load at render time from a local `node_modules`, the user cache or jsDelivr, checked against a pinned SHA-256; `orrery icons fetch` caches them ahead of time, and [icons.md](skills/orrery/references/icons.md#where-icons-load-from) has the details. Renovate's monthly dependency PR also checks the vendors' pages for new releases and carries the updated packs. Icons, logos and trademarks belong to their owners and are used under the terms listed in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md); the AWS, Microsoft and Google terms allow them in architecture diagrams.
|
|
170
|
+
|
|
171
|
+
## Development
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
pnpm install
|
|
175
|
+
pnpm lint
|
|
176
|
+
pnpm typecheck
|
|
177
|
+
pnpm test
|
|
178
|
+
pnpm build # src/ -> skills/orrery/scripts/orrery.mjs
|
|
179
|
+
pnpm gallery # re-render examples/ and docs/
|
|
180
|
+
node scripts/check-repo.mjs # dashes, links, counts, doc snippets, gallery freshness
|
|
181
|
+
pnpm sync-icons # rebuild icon catalogs (--latest re-pins new vendor releases)
|
|
182
|
+
node scripts/pack-npm.mjs # stage the npm package in out/npm (a GitHub release publishes it)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for how the pieces fit and [SECURITY.md](SECURITY.md) for reporting issues.
|
|
186
|
+
|
|
187
|
+
## License
|
|
188
|
+
|
|
189
|
+
Code and docs: [MIT](LICENSE). Icons, fonts and the vendored engines keep their own licenses: [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
|
package/SKILL.md
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orrery
|
|
3
|
+
description: >-
|
|
4
|
+
Draws professional architecture and system design diagrams with official icons (AWS, Azure,
|
|
5
|
+
Google Cloud, Kubernetes, GitHub Octicons, 5,500 tech logos and 6,000 generic symbols) and
|
|
6
|
+
renders them to SVG and PNG for docs and READMEs, plus an editable draw.io file, a React TSX
|
|
7
|
+
component and a standalone HTML viewer. Use when the user asks for an architecture diagram, a
|
|
8
|
+
cloud, infrastructure or network diagram, a system design diagram, a data, ML or CI/CD pipeline,
|
|
9
|
+
a Kubernetes layout, a C4 container view, "diagram this repo", "draw the architecture for the
|
|
10
|
+
README", or to turn a description, Terraform, Kubernetes manifests, docker-compose or a Mermaid
|
|
11
|
+
flowchart into a clean diagram with real vendor icons.
|
|
12
|
+
license: MIT
|
|
13
|
+
metadata:
|
|
14
|
+
version: "0.6.0"
|
|
15
|
+
author: Sagar Gupta
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# orrery
|
|
19
|
+
|
|
20
|
+
Write a small YAML spec (nodes with official icons, nested groups, labelled edges); the bundled CLI lays it out with ELK and renders it. No install: the CLI, the layout engine, the PNG renderer, the fonts and the official AWS, Azure, Google Cloud and Kubernetes packs ship in this folder; the logo and glyph sets (16,682 icons in all) load from their npm libraries the first time a diagram uses them and are cached. Node.js 22 or newer is the only requirement.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
node <this-skill-folder>/scripts/orrery.mjs <command>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Below, `orrery` means that command.
|
|
27
|
+
|
|
28
|
+
## Fast path
|
|
29
|
+
|
|
30
|
+
Follow this order. Write the spec early and let the validator steer; do not plan coordinates, layout is automatic.
|
|
31
|
+
|
|
32
|
+
1. **Pin the brief** in one line before drawing: what the diagram must show, for whom (README, design doc, slide), which cloud or vendor style, light/dark, which outputs. Default: SVG + PNG, light theme, `direction: right` (`down` for tiered stacks and long chains).
|
|
33
|
+
2. **Find every icon id**, never guess one:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
orrery icons search api gateway
|
|
37
|
+
orrery icons search postgres
|
|
38
|
+
orrery icons search load balancer --pack azure
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Official vendor icons for vendor services (`aws:`, `azure:`, `gcp:`, `k8s:`, `github:`), `logos:` (color) or `si:` (one-color brand) for third-party products, `generic:` aliases or `tabler:` for neutral concepts (user, browser, server, queue, cache). Short aliases work: `aws:s3`, `aws:alb`, `azure:aks`, `gcp:bq`, `k8s:deploy`, `generic:database`.
|
|
42
|
+
3. **Start from the nearest example** when one fits (`orrery init --list`, then `orrery init aws-three-tier -o docs/architecture.yaml`), otherwise write the spec from scratch. The format is in [references/spec.md](references/spec.md); a minimal one:
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
title: Orders API
|
|
46
|
+
direction: right
|
|
47
|
+
groups:
|
|
48
|
+
cloud: { type: aws:cloud }
|
|
49
|
+
region: { type: aws:region, label: eu-west-1, in: cloud }
|
|
50
|
+
nodes:
|
|
51
|
+
users: { icon: aws:users, label: Customers }
|
|
52
|
+
api: { icon: aws:api-gateway, in: region }
|
|
53
|
+
fn: { icon: aws:lambda, label: Create order, in: region }
|
|
54
|
+
table: { icon: aws:dynamodb, label: Orders, in: region }
|
|
55
|
+
edges:
|
|
56
|
+
- users -> api: HTTPS
|
|
57
|
+
- api -> fn -> table
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
4. **Validate and repair**: `orrery validate docs/architecture.yaml --strict`. Each finding has a code, a subject and `fix:` lines; apply the first fix that keeps the meaning, change only the reported subject, and re-run. Two rounds without improvement means stop and report what is left.
|
|
61
|
+
5. **Render**: `orrery render docs/architecture.yaml -o docs/architecture -f svg,png` (add `drawio`, `tsx`, `html` or `-f all` when asked; `--theme both` writes `-light` and `-dark` files). A non-zero exit means nothing usable was written; never describe it as success.
|
|
62
|
+
6. **Review at the width readers see it**, then improve. Measure first:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
orrery review docs/architecture.yaml --width 880 --json -o docs/architecture
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
It scores six dimensions (conventions, layout, grid, flow, overlap, quality), lists findings with evidence and fixes, and writes `docs/architecture.review.json` plus `docs/architecture.review.png`, the diagram at that width (README 880, a docs column 720 to 1000, a slide 1280, a phone 360). Then run the review loop in [references/review/loop.md](references/review/loop.md):
|
|
69
|
+
- With subagents, launch `orrery:conventions-reviewer`, `orrery:flow-reviewer` and `orrery:legibility-reviewer` in one message. Without them, run the three passes inline, one after another, each reading only its rubric. Skip the reviewers when the measured review passes with no findings.
|
|
70
|
+
- Only you edit the spec. Apply 1 to 3 non-overlapping patches per round, re-run the review, and keep the round only if the score went up and no hard count did; otherwise restore the spec.
|
|
71
|
+
- Stop when it passes, after 3 rounds, or after 2 rounds without a kept patch. Never trust a reviewer's claim of an overlap or crossing that the measurement does not show.
|
|
72
|
+
7. **Report** the written paths, node/group/edge counts, the review score and pass, the patches kept, any findings that remain with their evidence, and the embed snippet if it goes into a README.
|
|
73
|
+
|
|
74
|
+
## What makes it look professional
|
|
75
|
+
|
|
76
|
+
- One obvious main flow. List nodes in the order data moves through them; ELK keeps that order where it can.
|
|
77
|
+
- Boundaries from the outside in, with the vendor's group types: `aws:cloud` > `aws:account` > `aws:region` > `aws:vpc` > `aws:az` > `aws:public-subnet` / `aws:private-subnet`; Google Cloud `gcp:cloud` > `gcp:project` > `gcp:region` > `gcp:zone`; Azure `azure:subscription` > `azure:resource-group` > `azure:vnet` > `azure:subnet`; Kubernetes `k8s:cluster` > `k8s:namespace`. Neutral diagrams use `zone`, `box`, `dashed` and `boundary`. Run `orrery styles` for all of them.
|
|
78
|
+
- Official names, short. Labels default to the icon's official name; override with the name readers know ("Amazon SQS", "Orders queue") and put specifics in `note` ("t3.medium x3", "PostgreSQL 16").
|
|
79
|
+
- Label an edge only when it says something the endpoints do not: protocol, action, sync vs async, cross-boundary mechanism. Numbered `step:` edges for walkthroughs.
|
|
80
|
+
- Dashed edges for async or optional paths, thick for the hot path, `<->` for request/response only when both directions matter.
|
|
81
|
+
- 6 to 25 nodes. Beyond that, draw an overview plus detail diagrams; repeated workers become one node with `badge: x3`.
|
|
82
|
+
- `look: card` gives the boxed product-card style of Google Cloud diagrams; `shape:` nodes (cylinder, queue, person, document) give whiteboard and C4 views.
|
|
83
|
+
- Vendor colors are built in; do not recolor official icons. `color:` is for neutral shapes and cards.
|
|
84
|
+
|
|
85
|
+
## Outputs
|
|
86
|
+
|
|
87
|
+
| Format | Use for |
|
|
88
|
+
| --- | --- |
|
|
89
|
+
| `svg` | READMEs, docs sites, wikis. Self-contained, scalable, with `<title>`/`<desc>` for screen readers. Animated by default: packets travel the edges, numbered steps play in order (`animate: none` or `--static` for a still file). `skin: stage` (or `--skin stage`) draws the same layout on a showcase canvas and animates it with `relay`; keep the default `classic` for vendor architecture docs and use `stage` for a README hero, a slide or a project page. |
|
|
90
|
+
| `png` | Slides, chat, tickets, anywhere SVG is not accepted. Always a still frame. Rendered with the bundled Inter font at 3x by default (`--scale`), so it stays sharp when zoomed or projected. |
|
|
91
|
+
| `drawio` | Hand-editing in diagrams.net or the VS Code Draw.io extension; every node, group and edge is an editable cell with the official icon embedded. |
|
|
92
|
+
| `tsx` | A React component (`export default function Name(props)`) for docs sites and apps. |
|
|
93
|
+
| `html` | A standalone viewer with light/dark switch, pan, pinch zoom and SVG/PNG download; opens offline. |
|
|
94
|
+
|
|
95
|
+
For a README that follows the reader's theme, render `--theme both` and embed:
|
|
96
|
+
|
|
97
|
+
```html
|
|
98
|
+
<picture>
|
|
99
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/architecture-dark.svg">
|
|
100
|
+
<img alt="Orders API architecture on AWS" src="docs/architecture-light.svg">
|
|
101
|
+
</picture>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Details, the JSON receipt and per-format notes: [references/outputs.md](references/outputs.md).
|
|
105
|
+
|
|
106
|
+
## Diagrams from existing material
|
|
107
|
+
|
|
108
|
+
- **A repository**: read the deploy and infra files (Terraform, CDK, CloudFormation, Kubernetes manifests, Helm values, docker-compose, serverless.yml, workflow files) and draw what they create. Every node must trace to a file; when something is inferred, say so in your report rather than inventing a component.
|
|
109
|
+
- **Terraform**: one node per meaningful resource (`aws_lambda_function` -> `aws:lambda`, `aws_db_instance` -> `aws:rds`), groups from VPC/subnet/region/account structure; skip glue resources (policies, attachments) unless they are the point.
|
|
110
|
+
- **Kubernetes**: `k8s:` icons for kinds, `k8s:namespace` groups, Ingress -> Service -> Deployment -> Pods edges.
|
|
111
|
+
- **Mermaid flowchart**: `orrery import mermaid flow.mmd -o docs/architecture.yaml` converts nodes, subgraphs, edge styles and shapes, and sets an official icon where a label is exactly a product name (listed in a comment to check). Then swap the remaining shapes for icons, turn the `zone` groups into vendor groups and validate. Mermaid styling (`classDef`, `style`) is dropped on purpose.
|
|
112
|
+
|
|
113
|
+
Patterns with spec fragments (three-tier, serverless, event-driven, data lake, streaming, RAG, CI/CD, hybrid network, Kubernetes, system design primitives): [references/patterns.md](references/patterns.md).
|
|
114
|
+
|
|
115
|
+
## Commands
|
|
116
|
+
|
|
117
|
+
| Command | Does |
|
|
118
|
+
| --- | --- |
|
|
119
|
+
| `render <spec> [-o base] [-f svg,png,drawio,tsx,html\|all] [--theme light\|dark\|both] [--scale 3] [--skin classic\|stage] [--animate packets\|flow\|relay\|none] [--static] [--font extra.ttf] [--strict] [--json]` | Validate, lay out, render, write atomically; `--json` prints a receipt with sha256 and size per file. |
|
|
120
|
+
| `validate <spec> [--strict] [--json]` | Spec errors plus layout warnings (edge through a node, label collisions, too wide). |
|
|
121
|
+
| `review <spec> [--width 880] [--theme light\|dark] [--skin classic\|stage] [--json] [-o base]` | Scores the diagram at a display width on six dimensions, writes `<base>.review.json` and a PNG at that width (`/orrery:review` in Claude Code runs the whole loop). |
|
|
122
|
+
| `icons search <words> [--pack aws] [--type service]` | Ranked icon ids with official names. |
|
|
123
|
+
| `icons show <id> [-o icon.png]` | One icon's metadata, optionally rendered. |
|
|
124
|
+
| `icons list [--pack gcp] [--category Databases]`, `icons packs` | Browse the catalog and its sources. |
|
|
125
|
+
| `icons fetch [pack...]` | Download and cache the logo and glyph libraries now, for offline renders later. |
|
|
126
|
+
| `styles` | Group types and node shapes. |
|
|
127
|
+
| `init [template] [-o file] [--list]` | Copy an example spec as a starting point. |
|
|
128
|
+
| `import mermaid <file.mmd\|-> [-o file]` | Convert a Mermaid flowchart into a spec. |
|
|
129
|
+
| `doctor` | Checks Node, the catalogs, the icon libraries, the layout engine and the PNG renderer. |
|
|
130
|
+
| `demo [dir]` | Renders every bundled example. |
|
|
131
|
+
|
|
132
|
+
Labels in scripts Inter lacks (CJK, Devanagari, Arabic) need a font for the PNG: `--font path/to/NotoSansDevanagari-Regular.ttf`. SVG output uses the viewer's fonts.
|
|
133
|
+
|
|
134
|
+
## References
|
|
135
|
+
|
|
136
|
+
- [references/spec.md](references/spec.md): every spec field, the edge syntax and all diagnostic codes.
|
|
137
|
+
- [references/icons.md](references/icons.md): the icon packs, id rules, aliases, the `generic:` vocabulary, licenses.
|
|
138
|
+
- [references/styles.md](references/styles.md): group styles per vendor, with the colors and where they come from.
|
|
139
|
+
- [references/patterns.md](references/patterns.md): reference architectures as spec fragments.
|
|
140
|
+
- [references/outputs.md](references/outputs.md): formats, embedding, the receipt.
|
|
141
|
+
- [references/review/loop.md](references/review/loop.md): the review loop, the finding and patch format, scores and every measured finding id. Its rubrics, one per reviewer pass: conventions for [AWS](references/review/conventions-aws.md), [Azure](references/review/conventions-azure.md), [Google Cloud](references/review/conventions-gcp.md) and [C4](references/review/conventions-c4.md) (vendor rules with ids, quotes and sources), [flow](references/review/flow.md), [legibility](references/review/legibility.md).
|
|
142
|
+
- [references/diagram.schema.json](references/diagram.schema.json): JSON Schema for editors (`# yaml-language-server: $schema=...`).
|
|
143
|
+
- `examples/*.yaml`: complete specs for each pattern, used by `init` and `demo`.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
orrery's own code and documentation are MIT licensed ([LICENSE](LICENSE)). The icons, fonts and two runtime engines it ships belong to their owners and keep their own terms, listed here. Product names, logos and icons are trademarks of their owners; their inclusion does not imply endorsement of, or affiliation with, this project.
|
|
4
|
+
|
|
5
|
+
## Icon packs
|
|
6
|
+
|
|
7
|
+
The `aws`, `azure`, `gcp` and `k8s` packs live in `skills/orrery/assets/icons/` and are rebuilt from the sources below by `scripts/sync-icons.mjs` (download URLs and SHA-256 checksums are pinned in `scripts/icon-sources.json`). Their SVGs are normalized (inlined styles, prefixed ids); shapes and colors are not changed. The `github`, `ibm`, `logos`, `si` and `tabler` sets are not redistributed by this repository: only their names and search keywords are in `assets/icons/index.json`, and the renderer loads the icons from each set's own npm package at the pinned version, at render time (ids prefixed and monochrome glyphs colored as they are drawn).
|
|
8
|
+
|
|
9
|
+
| Pack | Source | Terms |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| `aws` | [AWS Architecture Icons](https://aws.amazon.com/architecture/icons/), 2026-07-31 package | "We allow customers and partners to use these toolkits and assets to create architecture diagrams." AWS site terms apply. |
|
|
12
|
+
| `azure` | [Azure Architecture Icons](https://learn.microsoft.com/en-us/azure/architecture/icons/), V24 | "Microsoft permits the use of these icons in architectural diagrams, training materials, or documentation. You can copy, distribute, and display the icons only for the permitted use unless granted explicit permission by Microsoft. Microsoft reserves all other rights." |
|
|
13
|
+
| `gcp` | [Google Cloud icons](https://cloud.google.com/icons): core product icons and category icons, with products mapped to them as in Google's icon guide (the legacy console icons are not included) | The official library of Google Cloud product icons "for your diagrams, technical documentation, and more". Google brand guidelines apply. |
|
|
14
|
+
| `k8s` | [kubernetes/community icons](https://github.com/kubernetes/community/tree/master/icons) at 70a4bb2, and the [Kubernetes logo](https://github.com/kubernetes/kubernetes/tree/master/logo) | Apache License 2.0. Kubernetes is a registered trademark of The Linux Foundation. |
|
|
15
|
+
| `github` | [Primer Octicons](https://github.com/primer/octicons) 19.40.0, loaded from npm `@primer/octicons` | MIT License, Copyright (c) GitHub Inc. GitHub's [logo policy](https://github.com/logos) applies to the GitHub marks. |
|
|
16
|
+
| `ibm` | [IBM Carbon icons](https://github.com/carbon-design-system/carbon/tree/main/packages/icons) 11.89.0, loaded from npm `@iconify-json/carbon` 1.2.28 | Apache License 2.0, Copyright IBM Corp. IBM and watsonx are trademarks of IBM; the license grants no trademark rights. |
|
|
17
|
+
| `logos` | [SVG Logos](https://github.com/gilbarbara/logos) by Gil Barbara, loaded from npm `@iconify-json/logos` 1.2.16 | CC0 1.0 for the collection. Every logo remains its owner's trademark. |
|
|
18
|
+
| `si` | [Simple Icons](https://github.com/simple-icons/simple-icons) 16.35.0, loaded from npm `@iconify-json/simple-icons` 1.2.100 | CC0 1.0 for the collection ([disclaimer](https://github.com/simple-icons/simple-icons/blob/develop/DISCLAIMER.md)). Entries whose own recorded license is non-commercial, no-derivatives, share-alike, GPL, AGPL, MPL or custom are excluded. Kept entries with a recorded attribution license (CC-BY, Apache-2.0, MIT, BSD) are listed with their source in `skills/orrery/assets/icons/simple-icons-licenses.json` under `attributed`; the excluded ones under `skipped`. |
|
|
19
|
+
| `tabler` | [Tabler Icons](https://github.com/tabler/tabler-icons) 3.49.0, loaded from npm `@iconify-json/tabler` 1.2.42 | MIT License, Copyright (c) 2020-2024 Pawel Kuna. |
|
|
20
|
+
|
|
21
|
+
## Fonts
|
|
22
|
+
|
|
23
|
+
| File | Source | License |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| `skills/orrery/assets/fonts/Inter-Regular.ttf`, `Inter-SemiBold.ttf` | [Inter 4.1](https://github.com/rsms/inter) by Rasmus Andersson | SIL Open Font License 1.1, full text in `skills/orrery/assets/fonts/Inter-OFL.txt`. |
|
|
26
|
+
|
|
27
|
+
## Runtime engines
|
|
28
|
+
|
|
29
|
+
Both are copied unmodified into `skills/orrery/scripts/vendor/` by `scripts/build.mjs`.
|
|
30
|
+
|
|
31
|
+
| File | Source | License |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| `elk.bundled.cjs` | [elkjs](https://github.com/kieler/elkjs) 0.12.0, the Eclipse Layout Kernel compiled to JavaScript | Eclipse Public License 2.0 (`elk.LICENSE.md`). Source code: https://github.com/kieler/elkjs and https://github.com/eclipse-elk/elk |
|
|
34
|
+
| `resvg/index.mjs`, `resvg/index_bg.wasm` | [@resvg/resvg-wasm](https://github.com/thx/resvg-js) 2.6.2, built from [resvg](https://github.com/linebender/resvg) | Mozilla Public License 2.0, https://www.mozilla.org/MPL/2.0/. Source code: https://github.com/thx/resvg-js |
|
|
35
|
+
|
|
36
|
+
## Bundled into the CLI
|
|
37
|
+
|
|
38
|
+
`skills/orrery/scripts/orrery.mjs` includes [yaml](https://github.com/eemeli/yaml) 2.9.1 (ISC License, Copyright Eemeli Aro).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
-----------------------------------------------------------
|
|
8
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
9
|
+
-----------------------------------------------------------
|
|
10
|
+
|
|
11
|
+
PREAMBLE
|
|
12
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
13
|
+
development of collaborative font projects, to support the font creation
|
|
14
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
15
|
+
open framework in which fonts may be shared and improved in partnership
|
|
16
|
+
with others.
|
|
17
|
+
|
|
18
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
19
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
20
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
21
|
+
redistributed and/or sold with any software provided that any reserved
|
|
22
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
23
|
+
however, cannot be released under any other type of license. The
|
|
24
|
+
requirement for fonts to remain under this license does not apply
|
|
25
|
+
to any document created using the fonts or their derivatives.
|
|
26
|
+
|
|
27
|
+
DEFINITIONS
|
|
28
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
29
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
30
|
+
include source files, build scripts and documentation.
|
|
31
|
+
|
|
32
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
33
|
+
copyright statement(s).
|
|
34
|
+
|
|
35
|
+
"Original Version" refers to the collection of Font Software components as
|
|
36
|
+
distributed by the Copyright Holder(s).
|
|
37
|
+
|
|
38
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
39
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
40
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
41
|
+
new environment.
|
|
42
|
+
|
|
43
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
44
|
+
writer or other person who contributed to the Font Software.
|
|
45
|
+
|
|
46
|
+
PERMISSION AND CONDITIONS
|
|
47
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
48
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
49
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
50
|
+
Software, subject to the following conditions:
|
|
51
|
+
|
|
52
|
+
1) Neither the Font Software nor any of its individual components,
|
|
53
|
+
in Original or Modified Versions, may be sold by itself.
|
|
54
|
+
|
|
55
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
56
|
+
redistributed and/or sold with any software, provided that each copy
|
|
57
|
+
contains the above copyright notice and this license. These can be
|
|
58
|
+
included either as stand-alone text files, human-readable headers or
|
|
59
|
+
in the appropriate machine-readable metadata fields within text or
|
|
60
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
61
|
+
|
|
62
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
63
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
64
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
65
|
+
presented to the users.
|
|
66
|
+
|
|
67
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
68
|
+
Software shall not be used to promote, endorse or advertise any
|
|
69
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
70
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
71
|
+
permission.
|
|
72
|
+
|
|
73
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
74
|
+
must be distributed entirely under this license, and must not be
|
|
75
|
+
distributed under any other license. The requirement for fonts to
|
|
76
|
+
remain under this license does not apply to any document created
|
|
77
|
+
using the Font Software.
|
|
78
|
+
|
|
79
|
+
TERMINATION
|
|
80
|
+
This license becomes null and void if any of the above conditions are
|
|
81
|
+
not met.
|
|
82
|
+
|
|
83
|
+
DISCLAIMER
|
|
84
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
85
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
86
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
87
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
88
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
89
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
90
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
91
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
92
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"family":"Inter","version":"4.1","weights":{"400":"0:1200,32:576,589,954,1297,1314,2011,1319,614,747,747,1026,1355,590,942,590,738,1292,833,1249,1265,1323,1215,1270,1159,1267,1270,590,618,1355,1355,1355,1047,1978,1413,1340,1496,1478,1231,1209,1528,1522,550,1169,1376,1158,1850,1543,1566,1308,1566,1318,1314,1322,1524,1413,2018,1397,1390,1288,747,738,747,965,934,661,1150,1254,1170,1254,1194,758,1256,1211,496,496,1124,496,1794,1210,1228,1254,1254,771,1081,670,1211,1151,1676,1118,1151,1131,873,681,873,1355,160:576,589,1170,1251,1484,1126,553,1164,1210,1872,929,1193,1355,174:1364,978,933,1355,905,913,661,1200,1234,590,549,623,988,1193,1643,1735,1806,1047,1413,1413,1413,1413,1413,1413,2035,1496,1231,1231,1231,1231,550,550,550,550,1505,1543,1566,1566,1566,1566,1566,1355,1566,1524,1524,1524,1524,1390,1302,1262,1150,1150,1150,1150,1150,1150,1879,1170,1194,1194,1194,1194,496,496,496,496,1193,1210,1228,1228,1228,1228,1228,1355,1228,1211,1211,1211,1211,1151,1254,1151,1413,1150,1413,1150,1413,1150,1496,1170,1496,1170,1496,1170,1496,1170,1478,1454,1505,1254,1231,1194,1231,1194,1231,1194,1231,1194,1231,1194,1528,1256,1528,1256,1528,1256,1528,1256,1522,1211,1590,1211,550,496,550,496,550,496,550,496,550,496,1719,992,1169,496,1376,1124,1076,1158,496,1158,496,1158,696,1152,736,1218,496,1543,1210,1543,1210,1543,1210,330:1543,1210,1566,1228,1566,1228,1566,1228,2058,2047,1318,771,1318,771,1318,771,1314,1081,1314,1081,1314,1081,1314,1081,1322,670,1322,770,1322,670,1524,1211,1524,1211,1524,1211,1524,1211,1524,1211,1524,1211,2018,1676,1390,1151,1390,1288,1131,1288,1131,1288,1131,644,1254,1620,1344,1254,1611,1420,1496,1496,1185,1505,1758,1298,1254,1112,1231,1528,1265,1209,798,1528,1302,1949,564,690,1389,1124,496,1314,1859,1543,1211,1566,1560,1222,1784,1307,1588,1254,1486,1314,1081,1292,1120,670,1327,661,1322,1518,1269,1567,1299,1460,1390,1288,1131,1402,1402,1270,1109,1249,1247,1115,1112,1298,546,734,496,589,453:2609,2385,2327,1654,992,2712,2039,1706,1413,1150,550,496,1566,1228,1524,1211,1524,1211,1524,1211,1524,1211,1524,1211,1194,1413,1150,1413,1150,2035,1879,1528,1376,1528,1256,1376,1124,1566,1228,1566,1228,1402,1270,496,2766,2609,2385,1528,1256,2290,1302,1543,1210,1413,1150,2035,1879,1566,1228,1413,1150,1413,1150,1231,1194,1231,1194,550,496,550,496,1566,1228,1566,1228,1318,771,1318,771,1524,1211,1524,1211,1314,1081,1322,670,1298,1113,1522,1211,1295,1574,1295,1294,1288,1131,1413,1150,1231,1194,1566,1228,1566,1228,1566,1228,1566,1228,1390,1151,816,1530,836,496,1853,1853,1413,1496,1170,1185,1322,1081,1131,1112,1113,1340,1518,1486,1231,1194,1239,496,1566,1254,1326,771,1368,1151,1150,1254,1254,1246,1111,598:1254,1254,1113,1194,1538,1100,1100,1426,1158,496,1256,1256,1148,1225,1481,1211,1210,1210,496,564,701,496,855,496,1313,1794,1794,1794,1210,1210,1298,1228,1642,1673,1309,771,742,771,638:704,704,1135,1135,1081,748,748,646:1054,670,668,1300,1294,1116,1151,1676,1151,1160,1131,658:1270,1279,1111,1111,1111,1111,1566,1157,1158,1218,1205,710,1124,988,1254,1111,1111,2229,2052,678:1530,1145,1636,1723,1511,1493,924,1108,1294,1292,891,925,406,585,550,741,923,1196,862,495,983,549,534,551,337,360,920,920,924,924,923,923,846,846,363,976,734,734,363,978,734,734,551,551,337,360,741,741,741,552,778,495,610,551,1034,1016,576,740,925,405,798,821,919,744,744,744,744,744,744,748,934,922,902,736,736,737,737,580,734,1116,1116,925,590,548,548,548,548,924,919,922,0,0,0,0,0,774:0,0,0,0,0,780:0,783:0,787:0,789:0,795:0,803:495,806:0,0,0,812:0,823:0,0,834:0,0,838:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,884:546,551,1543,890:549,1170,1170,1170,618,1169,900:553,1378,1413,590,1512,1803,831,908:1765,910:1799,1783,564,1413,1340,1185,1395,1231,1288,1522,1566,550,1376,1413,1850,1543,1344,1566,1522,1308,931:1411,1322,1390,1803,1397,1802,1577,550,1390,1360,1100,1211,564,1211,1360,1220,1151,1196,1100,1043,1211,1272,564,1076,1314,1200,1202,1144,1228,1239,1254,1166,1278,954,1211,1476,1165,1593,1648,564,1211,1228,1211,1648,1376,1298,1300,1375,1730,1375,1403,1680,1076,988:1215,1093,1008:1484,1298,1170,496,1566,922,922,1017:1496,1850,1020:1254,1496,1496,1496,1231,1231,1723,1185,1496,1314,550,550,1169,2280,2304,1811,1376,1543,1287,1479,1413,1323,1340,1185,1678,1231,1966,1265,1543,1543,1376,1532,1850,1522,1566,1522,1308,1496,1322,1287,1696,1397,1476,1434,1961,1991,1672,1808,1330,1496,2078,1318,1150,1216,1157,893,1256,1194,1659,1012,1211,1211,1110,1178,1577,1205,1228,1204,1254,1170,954,1151,1407,1118,1223,1183,1684,1714,1318,1508,1144,1170,1726,1135,1194,1194,1211,893,1170,1081,496,496,496,1893,1836,1211,1110,1211,1151,1204,1836,1652,1410,1260,1958,1601,1413,1169,1919,1589,1747,1422,2345,1963,1115,1070,1802,1593,1566,1228,1442,1214,1442,1214,2717,2339,1152:1455,1158,1294,0,0,0,0,0,0,0,1543,1211,1410,1260,1300,1248,1185,893,1185,893,1335,1109,2006,1699,1265,1012,1446,1150,1365,1199,1184:1718,1284,1552,1235,2018,1387,2269,1888,2018,1594,1496,1170,1322,954,1390,1151,1390,1151,1437,1158,1875,1350,1464,1213,1434,1183,1434,1211,1719,1462,1719,1462,550,1966,1659,1398,1202,1532,1178,1522,1205,1522,1205,1464,1213,1850,1577,496,1413,1150,1413,1150,2035,1879,1231,1194,1527,1194,1527,1194,1966,1659,1265,1012,1270,1270,1543,1211,1543,1211,1566,1228,1566,1228,1566,1228,1496,1170,1287,1151,1287,1151,1287,1151,1434,1183,1185,893,1808,1508,1212,893,1437,1067,1397,1118,1327:1208,3647:1340,7424:1097,7437:1577,7451:954,7491:822,7495:894,894,854,7501:896,7503:812,1278,7506:875,7510:894,502,891,7515:858,7522:405,585,891,858,7580:835,7584:562,7611:823,7615:925,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7676:0,0,0,0,1413,1150,1340,1254,1340,1254,1340,1254,1496,1170,1478,1254,1478,1254,1478,1254,1478,1254,1478,1254,1231,1194,1231,1194,1231,1194,1231,1194,1231,1194,1209,758,1528,1256,1522,1211,1522,1211,1522,1211,1522,1211,1522,1211,550,496,550,496,1376,1124,1376,1124,1376,1124,1158,496,1158,496,1158,496,1158,496,1850,1794,1850,1794,1850,1794,1543,1210,1543,1210,1543,1210,1543,1210,1566,1228,1566,1228,1566,1228,1566,1228,1308,1254,1308,1254,1318,771,1318,771,1318,771,1318,771,1314,1081,1314,1081,1314,1081,1314,1081,1314,1081,1322,670,1322,670,1322,670,1322,670,1524,1211,1524,1211,1524,1211,1524,1211,1524,1211,1413,1151,1413,1151,2018,1676,2018,1676,2018,1676,2018,1676,2018,1676,1397,1118,1397,1118,1390,1151,1288,1131,1288,1131,1288,1131,1211,670,1676,1151,1150,644,7837:739,1452,1106,1413,1150,1413,1150,1413,1150,1413,1150,1413,1150,1413,1150,1413,1150,1413,1150,1413,1150,1413,1150,1413,1150,1413,1150,1231,1194,1231,1194,1231,1194,1231,1194,1231,1194,1231,1194,1231,1194,1231,1194,550,496,550,496,1566,1228,1566,1228,1566,1228,1566,1228,1566,1228,1566,1228,1566,1228,1560,1222,1560,1222,1560,1222,1560,1222,1560,1222,1524,1211,1524,1211,1518,1269,1518,1269,1518,1269,1518,1269,1518,1269,1390,1151,1390,1151,1390,1151,1390,1151,1550,1128,1116,1115,1491,1304,1360,1360,1360,1360,1360,1360,1360,1360,1459,1459,1770,1794,1774,1782,1609,1609,1100,1100,1100,1100,1100,1100,7960:1577,1585,1901,1925,1905,1913,7968:1211,1211,1211,1211,1211,1211,1211,1211,1868,1876,2192,2216,2196,2204,2031,2031,564,564,564,564,564,564,564,564,896,904,1220,1244,1224,1232,1059,1059,1228,1228,1228,1228,1228,1228,8008:1830,1838,2154,2178,2158,2166,8016:1211,1211,1211,1211,1211,1211,1211,1211,8025:1872,8027:2212,8029:2200,8031:2027,1648,1648,1648,1648,1648,1648,1648,1648,1848,1856,2172,2196,2176,2184,2011,2011,1360,1360,1100,1100,1211,1211,564,564,1228,1228,1211,1211,1648,1648,8064:1360,1360,1360,1360,1360,1360,1360,1360,1459,1459,1770,1794,1774,1782,1609,1609,1211,1211,1211,1211,1211,1211,1211,1211,1868,1876,2192,2216,2196,2204,2031,2031,1648,1648,1648,1648,1648,1648,1648,1648,1848,1856,2172,2196,2176,2184,2011,2011,1360,1360,1360,1360,1360,8118:1360,1360,1413,1413,1413,1459,1413,434,549,434,1024,896,1211,1211,1211,8134:1211,1211,1411,1512,1702,1803,1522,669,743,582,564,564,564,564,8150:564,564,550,550,730,831,8157:701,751,582,1211,1211,1211,1211,1254,1254,1211,1211,1390,1390,1540,1799,1695,1378,1378,307,8178:1648,1648,1648,8182:1648,1648,1566,1765,1697,1783,1577,553,434,8192:1118,2234,1024,2048,684,512,340,1328,590,372,186,0,8208:734,734,1328,1024,2048,2048,981,927,534,534,494,534,902,902,862,902,1006,1006,1152,1152,590,1180,1770,590,8239:372,2735,3459,456,906,1356,456,906,1356,932,787,787,1310,1178,1038,1106,1673,1673,926,1481,1152,393,747,747,2094,1636,1636,910,1234,1212,1212,1026,618,1664,1106,1513,1486,1673,1125,8279:1806,8287:576,8304:941,405,8308:942,901,909,831,922,909,878,879,878,551,551,891,941,623,905,913,942,901,909,831,922,909,878,879,878,551,551,8336:822,854,875,821,923,891,812,405,1278,891,894,798,502,8352:1494,1496,1494,1236,1251,1759,1576,1978,2295,1954,1674,1254,1365,1454,1322,2848,8369:1361,1528,1413,1295,1496,8376:1322,1109,1217,8380:1488,1436,1486,1340,1028,8411:0,0,2846,2828,8424:0,8432:0,8448:1978,1941,8451:2406,8453:1991,2055,8457:2142,8467:910,8470:2237,1872,8478:1415,1310,1230,1428,1251,8486:1577,8490:1376,1413,8494:1294,8498:1209,8507:1510,8525:1808,8528:1802,1762,2305,1763,1957,1764,1958,1927,1976,1762,1935,1755,1918,1928,1681,982,550,1100,1650,1963,1413,1963,2513,3063,1947,1397,1947,2497,1158,1496,1478,1850,546,992,1488,1647,1106,1478,2143,2639,1614,1106,1614,2110,496,1170,1292,1794,8579:1299,1111,1485,1681,8585:1958,8592:1954,1708,1954,1708,2746,1708,1588,1588,1588,1588,8617:2343,2343,8624:2022,2022,8627:2022,1709,2022,8634:1954,1954,8656:1954,8658:1954,8660:2746,8670:1245,1245,8676:2078,2078,8679:2111,8682:2111,8706:1298,8709:1402,1395,8719:1480,8721:1299,1355,8730:1289,8734:1917,8747:748,8758:590,8776:1355,8800:1355,8804:1355,1355,8853:2846,2846,2846,2846,8963:1600,1600,1600,8984:2050,8997:2094,2490,2124,9003:2490,9088:1630,9095:2094,9099:1954,9166:2022,1768,9251:1486,9312:2846,2846,2846,2846,2846,2846,2846,2846,2846,9398:2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,9450:2846,9632:1872,1872,1872,9642:1152,9650:2070,2070,9654:1877,1877,9658:1877,1877,2070,2070,9664:1877,1877,9668:1877,1877,2152,2152,9674:1128,1872,9679:1872,9702:1152,9711:2846,9728:2188,9733:2140,2140,9788:2188,9825:2094,9829:2094,9834:1596,2033,9888:2100,10003:1811,10007:1815,10070:2152,10084:2094,10112:2846,2846,2846,2846,2846,2846,2846,2846,2846,10223:550,10229:2746,2746,3584,2746,2746,3584,10515:1714,10808:2846,11014:2111,11026:1872,1872,11036:2828,11044:2846,11388:406,11391:1305,11775:0,11800:1038,42655:0,43007:2415,43310:1112,57344:2152,57346:1550,1550,1550,1550,1550,1550,1550,1550,1550,1550,903,903,903,903,903,903,903,903,903,903,903,903,903,903,903,903,903,903,1321,1329,1645,1669,1649,1657,1484,1484,903,903,1083,1256,903,903,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,1254,496,496,496,496,710,564,610,686,622,850,804,564,564,664,564,564,564,564,771,771,57450:1302,1292,816,1270,1323,1191,1191,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,747,747,747,747,873,873,1978,942,1024,1328,2048,1152,1152,1152,1152,1212,1212,590,550,550,550,550,1355,1355,1355,1355,1355,1355,1355,1355,1355,1355,1355,1355,1355,1321,405,891,551,551,894,835,894,562,896,894,1196,862,823,551,551,784,539,753,781,801,762,780,710,773,780,57544:793,781,794,491,491,57564:784,539,753,781,801,762,780,710,773,780,768,57587:496,363,367,57606:1200,57609:846,1554,57612:495,1210,1200,1083,57617:978,1024,1200,57623:1200,1210,57633:1200,495,57636:1200,57642:1024,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,57699:894,57795:1152,57810:1954,2746,5492,1954,2746,1954,2746,5492,1954,2746,2746,3584,2746,3584,57825:589,1413,1413,1413,1413,1413,1413,1340,1340,1496,1478,1478,1231,1231,1231,1231,1209,1528,1522,1522,1522,550,550,550,550,1376,1158,1158,1850,1850,1543,1543,1566,1566,1566,1566,1566,1560,1566,1308,1318,1318,1318,1314,1314,1314,1314,1322,1322,1524,1524,1524,1524,1524,1524,1524,1518,1524,1413,2018,2018,2018,1397,1397,1390,1390,1390,1288,1288,1550,903,903,903,903,1150,1150,1150,1150,1150,1150,1254,1254,1170,1254,1254,1194,1194,1194,1194,758,1256,1211,1211,1211,496,496,496,496,496,496,496,1124,736,496,496,1794,1794,1210,1210,1228,1228,1228,1228,1228,1222,1228,1254,771,771,771,1081,1081,1081,1081,1081,670,670,670,1211,1211,1211,1211,1211,1211,1211,1269,1211,1151,1676,1676,1676,1118,1118,1151,1151,1151,1131,1131,1254,1254,1254,1254,1254,1254,496,676,804,564,564,640,640,640,1211,1211,1211,1211,1211,1211,1211,1278,1211,1231,550,1527,1966,1265,1543,1566,1496,1287,1434,1808,903,1194,1659,1012,1211,1228,1170,1183,1508,1375,564,1211,1211,564,564,1211,1211,1211,590,590,590,590,590,1770,554,1047,590,590,1180,590,550,550,550,550,550,590,1366,1366,1366,896,0,0,0,0,0,0,1210,496,1630,1366,1210,530,828,828,1200,1200,1200,1200,1200,1200,1210,1210,978,978,1024,1024,710,644,496,590,60929:590,1413,1390,1150,1151,640,0,60937:2828,1100,60940:1319,676,688,608,676,1644,746,60948:992,60951:1124,60957:640,640,740,640,640,640,640,640,640,1211,1211,1300,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1211,1278,1278,1278,1278,1278,1278,1211,1211,1211,1211,1211,1211,1211,1211,1211,60999:550,800,800,800,800,800,800,800,800,800,800,800,800,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1328,1629,2846,2828,2828,1528,1376,1158,1543,1318,1314,1550,1124,496,1210,771,1081,670,564,640,61063:1479,590,590,590,1047,1047,612,612,612,0,1106,434,669,701,743,751,582,582,307,553,0,0,661,661,553,820,819,551,582,583,514,583,1016,661,0,0,840,840,0,0,0,0,0,0,0,1378,1210,661,0,514,0,0,0,0,0,0,978,0,0,0,337,0,0,0,0,0,0,0,530,828,828,608,608,1024,1024,1024,1204,0,0,926,61144:0,0,0,0,0,0,913,1047,518,745,63171:0,65279:0","600":"0:1200,32:516,658,1071,1318,1332,2057,1357,667,764,764,1105,1378,653,953,653,776,1351,866,1276,1303,1364,1254,1310,1180,1311,1310,653,674,1378,1378,1378,1113,2046,1490,1350,1509,1479,1240,1204,1534,1527,567,1187,1440,1158,1889,1555,1574,1321,1583,1336,1332,1352,1507,1490,2089,1474,1461,1336,764,776,764,986,961,719,1176,1278,1193,1278,1211,796,1281,1254,536,536,1166,536,1844,1253,1247,1278,1278,813,1125,723,1254,1202,1719,1165,1205,1159,931,735,931,1378,160:516,658,1193,1289,1534,1154,647,1164,1253,1872,943,1299,1378,174:1359,925,938,1378,929,949,719,1258,1229,653,680,663,998,1299,1702,1781,1858,1113,1490,1490,1490,1490,1490,1490,2075,1509,1240,1240,1240,1240,567,567,567,567,1539,1555,1574,1574,1574,1574,1574,1378,1574,1507,1507,1507,1507,1461,1347,1318,1176,1176,1176,1176,1176,1176,1869,1193,1211,1211,1211,1211,536,536,536,536,1216,1253,1247,1247,1247,1247,1247,1378,1247,1254,1254,1254,1254,1205,1278,1205,1490,1176,1490,1176,1490,1176,1509,1193,1509,1193,1509,1193,1509,1193,1479,1514,1539,1278,1240,1211,1240,1211,1240,1211,1240,1211,1240,1211,1534,1281,1534,1281,1534,1281,1534,1281,1527,1254,1632,1254,567,536,567,536,567,536,567,536,567,536,1754,1071,1187,536,1440,1166,1160,1158,536,1158,536,1158,772,1173,858,1232,536,1555,1253,1555,1253,1555,1253,330:1555,1253,1574,1247,1574,1247,1574,1247,2076,2031,1336,813,1336,813,1336,813,1332,1125,1332,1125,1332,1125,1332,1125,1352,723,1352,859,1352,723,1507,1254,1507,1254,1507,1254,1507,1254,1507,1254,1507,1254,2089,1719,1461,1205,1461,1336,1159,1336,1159,1336,1159,685,1278,1702,1343,1278,1694,1500,1509,1509,1241,1539,1831,1345,1278,1251,1240,1534,1303,1204,897,1534,1439,1990,610,728,1454,1166,536,1370,1918,1555,1254,1574,1584,1243,1865,1440,1673,1278,1534,1332,1125,1341,1253,723,1429,718,1352,1504,1323,1585,1343,1557,1440,1336,1159,1406,1406,1306,1152,1276,1283,1253,1154,1349,587,778,536,658,453:2637,2437,2345,1694,1071,2742,2090,1789,1490,1176,567,536,1574,1247,1507,1254,1507,1254,1507,1254,1507,1254,1507,1254,1211,1490,1176,1490,1176,2075,1869,1534,1400,1534,1281,1440,1166,1574,1247,1574,1247,1406,1306,536,2815,2637,2437,1534,1281,2298,1443,1555,1253,1490,1176,2075,1869,1574,1247,1490,1176,1490,1176,1240,1211,1240,1211,567,536,567,536,1574,1247,1574,1247,1336,813,1336,813,1507,1254,1507,1254,1332,1125,1352,723,1344,1155,1527,1254,1344,1598,1343,1342,1336,1159,1490,1176,1240,1211,1574,1247,1574,1247,1574,1247,1574,1247,1461,1205,856,1573,912,536,1912,1912,1490,1509,1193,1218,1352,1125,1159,1154,1155,1379,1541,1534,1240,1211,1268,536,1578,1278,1361,813,1439,1205,1176,1278,1278,1273,1152,598:1278,1278,1152,1211,1619,1128,1128,1524,1183,536,1281,1281,1155,1305,1436,1254,1253,1253,536,610,753,536,945,536,1403,1844,1844,1844,1253,1253,1307,1247,1649,1822,1445,813,774,813,638:743,743,1167,1167,1125,783,783,646:1128,723,718,1367,1342,1156,1202,1719,1205,1172,1159,658:1306,1337,1152,1152,1152,1152,1574,1173,1183,1254,1250,864,1166,996,1278,1152,1152,2305,2072,678:1661,1356,1729,1834,1600,1575,1061,1057,1365,1367,928,967,441,623,580,772,962,1225,908,508,1011,584,602,585,337,350,967,967,1063,1063,962,962,910,910,394,924,770,771,394,925,771,770,585,585,337,350,779,779,779,679,844,558,701,543,1030,1094,585,773,963,440,835,869,962,775,775,775,775,775,872,873,1064,965,1027,773,773,774,774,667,771,1176,1176,964,653,680,680,680,680,965,965,1062,0,0,0,0,0,774:0,0,0,0,0,780:0,783:0,787:0,789:0,795:0,803:558,806:0,0,0,812:0,823:0,0,834:0,0,838:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,884:581,584,1555,890:585,1193,1193,1193,674,1187,900:650,1444,1490,653,1589,1877,916,908:1845,910:1911,1857,610,1490,1350,1190,1479,1240,1336,1527,1574,567,1440,1490,1889,1555,1386,1574,1527,1321,931:1417,1352,1461,1821,1474,1821,1593,567,1461,1401,1128,1254,610,1253,1401,1239,1202,1225,1128,1077,1254,1280,610,1160,1370,1258,1240,1144,1247,1285,1278,1191,1315,1014,1253,1582,1210,1665,1688,610,1253,1247,1253,1688,1440,1347,1345,1426,1835,1426,1491,1826,1160,988:1220,1098,1008:1534,1347,1193,536,1574,961,961,1017:1509,1889,1020:1278,1509,1509,1509,1240,1240,1746,1190,1509,1332,567,567,1187,2286,2306,1825,1440,1555,1377,1486,1490,1324,1350,1190,1745,1240,2114,1303,1555,1555,1440,1534,1889,1527,1574,1527,1321,1509,1352,1377,1706,1474,1539,1444,2004,2052,1691,1857,1348,1509,2116,1336,1176,1238,1173,916,1321,1211,1733,1046,1254,1254,1166,1217,1634,1250,1247,1239,1278,1193,1014,1205,1530,1165,1303,1215,1735,1783,1366,1604,1186,1193,1759,1167,1211,1211,1254,916,1193,1125,536,536,536,1920,1874,1254,1166,1254,1205,1239,1947,1754,1440,1299,2021,1666,1490,1197,1994,1667,1788,1493,2398,2050,1151,1098,1821,1665,1574,1247,1515,1248,1515,1248,2779,2414,1152:1465,1187,1344,0,0,0,0,0,0,0,1555,1254,1440,1299,1332,1251,1190,916,1190,916,1352,1153,2176,1791,1303,1046,1521,1224,1437,1265,1184:1783,1345,1575,1298,2044,1431,2297,1912,2100,1677,1509,1193,1352,1014,1461,1202,1461,1202,1535,1223,1923,1421,1492,1263,1444,1215,1444,1254,1788,1517,1788,1517,567,2114,1733,1414,1250,1534,1217,1527,1250,1527,1250,1492,1263,1889,1634,536,1490,1176,1490,1176,2075,1869,1240,1211,1531,1211,1531,1211,2114,1733,1303,1046,1306,1306,1555,1254,1555,1254,1574,1247,1574,1247,1574,1247,1509,1193,1377,1205,1377,1205,1377,1205,1444,1215,1190,916,1857,1604,1251,916,1557,1094,1474,1165,1327:1265,3647:1350,7424:1174,7437:1634,7451:1014,7491:852,7495:924,924,879,7501:926,7503:854,1316,7506:899,7510:924,543,928,7515:902,7522:440,623,928,902,7580:865,7584:596,7611:854,7615:963,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7676:0,0,0,0,1490,1176,1350,1278,1350,1278,1350,1278,1509,1193,1479,1278,1479,1278,1479,1278,1479,1278,1479,1278,1240,1211,1240,1211,1240,1211,1240,1211,1240,1211,1204,796,1534,1281,1527,1254,1527,1254,1527,1254,1527,1254,1527,1254,567,536,567,536,1440,1166,1440,1166,1440,1166,1158,536,1158,536,1158,536,1158,536,1889,1844,1889,1844,1889,1844,1555,1253,1555,1253,1555,1253,1555,1253,1574,1247,1574,1247,1574,1247,1574,1247,1321,1278,1321,1278,1336,813,1336,813,1336,813,1336,813,1332,1125,1332,1125,1332,1125,1332,1125,1332,1125,1352,723,1352,723,1352,723,1352,723,1507,1254,1507,1254,1507,1254,1507,1254,1507,1254,1490,1202,1490,1202,2089,1719,2089,1719,2089,1719,2089,1719,2089,1719,1474,1165,1474,1165,1461,1205,1336,1159,1336,1159,1336,1159,1254,723,1719,1205,1176,685,7837:770,1476,1246,1490,1176,1490,1176,1490,1176,1490,1176,1490,1176,1490,1176,1490,1176,1490,1176,1490,1176,1490,1176,1490,1176,1490,1176,1240,1211,1240,1211,1240,1211,1240,1211,1240,1211,1240,1211,1240,1211,1240,1211,567,536,567,536,1574,1247,1574,1247,1574,1247,1574,1247,1574,1247,1574,1247,1574,1247,1584,1243,1584,1243,1584,1243,1584,1243,1584,1243,1507,1254,1507,1254,1504,1323,1504,1323,1504,1323,1504,1323,1504,1323,1461,1205,1461,1205,1461,1205,1461,1205,1762,1348,1251,1252,1532,1342,1401,1401,1401,1401,1401,1401,1401,1401,1534,1545,1891,1924,1900,1922,1713,1729,1128,1128,1128,1128,1128,1128,7960:1612,1629,1978,2010,1986,2008,7968:1254,1254,1254,1254,1254,1254,1254,1254,1899,1916,2265,2298,2273,2296,2086,2102,610,610,610,610,610,610,610,610,939,955,1305,1337,1313,1335,1126,1142,1247,1247,1247,1247,1247,1247,8008:1868,1884,2234,2266,2242,2264,8016:1253,1253,1253,1253,1253,1253,1253,1253,8025:1950,8027:2332,8029:2330,8031:2136,1688,1688,1688,1688,1688,1688,1688,1688,1879,1896,2245,2278,2253,2276,2066,2082,1401,1401,1128,1128,1254,1254,610,610,1247,1247,1253,1253,1688,1688,8064:1401,1401,1401,1401,1401,1401,1401,1401,1534,1545,1891,1924,1900,1922,1713,1729,1254,1254,1254,1254,1254,1254,1254,1254,1899,1916,2265,2298,2273,2296,2086,2102,1688,1688,1688,1688,1688,1688,1688,1688,1879,1896,2245,2278,2253,2276,2066,2082,1401,1401,1401,1401,1401,8118:1401,1401,1490,1490,1490,1553,1490,457,585,457,1024,919,1254,1254,1254,8134:1254,1254,1517,1589,1804,1877,1527,721,801,658,610,610,610,610,8150:610,610,567,567,844,916,8157:754,818,658,1253,1253,1253,1253,1278,1278,1253,1253,1461,1461,1611,1911,1738,1444,1444,358,8178:1688,1688,1688,8182:1688,1688,1574,1845,1760,1857,1593,650,457,8192:1149,2285,1024,2048,684,512,340,1325,653,339,169,0,8208:864,864,1325,1024,2048,2048,1099,959,602,602,558,602,1038,1027,983,1027,1131,1131,1031,1031,653,1305,1958,653,8239:339,2809,3561,527,1049,1572,527,1049,1572,1059,851,851,1541,1316,1107,1049,1718,1718,961,1536,1031,419,764,764,2226,1771,1771,941,1229,1235,1235,1105,674,1713,1155,1625,1534,1718,1354,8279:2095,8287:595,8304:990,440,8308:979,948,951,856,964,951,935,936,935,581,581,928,990,663,929,949,979,948,951,856,964,951,935,936,935,581,581,8336:852,879,899,869,964,928,854,440,1316,928,924,835,543,8352:1536,1509,1490,1250,1289,1766,1559,2044,2367,2071,1817,1278,1390,1578,1352,2944,8369:1430,1534,1490,1440,1509,8376:1353,1150,1286,8380:1536,1491,1534,1350,1004,8411:0,0,2846,2828,8424:0,8432:0,8448:2050,2021,8451:2416,8453:2053,2151,8457:2143,8467:997,8470:2250,1872,8478:1511,1338,1273,1492,1291,8486:1593,8490:1440,1490,8494:1347,8498:1204,8507:1576,8525:1913,8528:1843,1817,2386,1823,2025,1824,2026,1980,2031,1817,1997,1816,1972,1996,1739,1023,567,1133,1700,2057,1490,2057,2624,3190,2040,1474,2040,2607,1158,1509,1479,1889,568,1071,1607,1738,1141,1630,2274,2809,1700,1157,1700,2236,536,1193,1239,1844,8579:1440,1152,1536,1822,8585:2030,8592:1954,1805,1954,1805,2746,1740,1598,1598,1598,1598,8617:2363,2363,8624:2055,2055,8627:2055,1793,2055,8634:1954,1954,8656:1954,8658:1954,8660:2746,8670:1282,1282,8676:2126,2126,8679:2206,8682:2206,8706:1347,8709:1408,1479,8719:1540,8721:1443,1378,8730:1343,8734:1978,8747:783,8758:653,8776:1378,8800:1378,8804:1378,1378,8853:2846,2846,2846,2846,8963:1632,1632,1632,8984:2005,8997:2094,2490,2048,9003:2490,9088:1630,9095:2094,9099:1954,9166:2055,1768,9251:1534,9312:2846,2846,2846,2846,2846,2846,2846,2846,2846,9398:2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,9450:2846,9632:1872,1872,1872,9642:1031,9650:2118,2118,9654:1926,1926,9658:1926,1926,2118,2118,9664:1926,1926,9668:1926,1926,2165,2165,9674:1195,1872,9679:1872,9702:1031,9711:2846,9728:2188,9733:2140,2140,9788:2188,9825:2094,9829:2094,9834:1565,2020,9888:2100,10003:1808,10007:1811,10070:2165,10084:2094,10112:2846,2846,2846,2846,2846,2846,2846,2846,2846,10223:679,10229:2746,2746,3584,2746,2746,3584,10515:1746,10808:2846,11014:2206,11026:1872,1872,11036:2828,11044:2846,11388:441,11391:1349,11775:0,11800:1107,42655:0,43007:2482,43310:1249,57344:2165,57346:1554,1554,1554,1554,1554,1554,1554,1554,1554,1554,952,952,952,952,952,952,952,952,952,952,952,952,952,952,952,952,952,952,1384,1400,1749,1782,1758,1780,1571,1587,952,952,1229,1361,952,952,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,1278,536,536,536,536,864,610,665,735,769,946,933,610,610,746,610,610,610,610,813,813,57450:1327,1351,848,1306,1364,1236,1236,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,764,764,764,764,931,931,2046,953,1024,1325,2048,1031,1031,1031,1031,1235,1235,653,550,550,550,550,1378,1378,1378,1378,1378,1378,1378,1378,1378,1378,1378,1378,1378,1360,440,928,581,581,924,865,924,596,926,924,1225,908,854,581,581,811,551,758,789,812,785,793,710,793,793,57544:802,790,803,488,488,57564:811,551,758,789,812,785,793,710,793,793,863,57587:536,493,488,57606:1247,57609:910,1614,57612:558,1253,1247,1108,57617:925,1024,1247,57623:1247,1253,57633:1247,558,57636:1247,57642:1024,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2846,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,2828,57699:924,57795:1031,57810:1954,2746,5492,1954,2746,1954,2746,5492,1954,2746,2746,3584,2746,3584,57825:658,1490,1490,1490,1490,1490,1490,1350,1350,1509,1479,1479,1240,1240,1240,1240,1204,1534,1527,1527,1527,567,567,567,567,1440,1158,1158,1889,1889,1555,1555,1574,1574,1574,1574,1574,1584,1574,1321,1336,1336,1336,1332,1332,1332,1332,1352,1352,1507,1507,1507,1507,1507,1507,1507,1504,1507,1490,2089,2089,2089,1474,1474,1461,1461,1461,1336,1336,1554,952,952,952,952,1176,1176,1176,1176,1176,1176,1278,1278,1193,1278,1278,1211,1211,1211,1211,796,1281,1254,1254,1254,536,536,536,536,536,536,536,1166,858,536,536,1844,1844,1253,1253,1247,1247,1247,1247,1247,1243,1247,1278,813,813,813,1125,1125,1125,1125,1125,723,723,723,1254,1254,1254,1254,1254,1254,1254,1323,1254,1202,1719,1719,1719,1165,1165,1205,1205,1205,1159,1159,1278,1278,1278,1278,1278,1278,536,709,933,610,610,682,682,682,1253,1253,1253,1253,1253,1253,1253,1329,1253,1240,567,1531,2114,1303,1555,1574,1509,1377,1444,1857,952,1211,1733,1046,1254,1247,1193,1215,1604,1426,610,1253,1253,610,610,1253,1253,1253,653,653,653,653,653,1958,634,1113,653,653,1305,653,550,550,550,550,550,653,1447,1447,1447,919,0,0,0,0,0,0,1253,559,1688,1447,1253,589,943,943,1247,1247,1247,1247,1247,1247,1253,1253,925,925,1024,1024,864,685,559,653,60929:653,1490,1461,1176,1205,682,0,60937:2828,1133,60940:1350,709,730,644,709,1749,780,60948:1071,60951:1166,60957:682,682,818,682,682,682,682,682,682,1253,1253,1367,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1253,1329,1329,1329,1329,1329,1329,1253,1253,1253,1253,1253,1253,1253,1253,1253,60999:550,800,800,800,800,800,800,800,800,800,800,800,800,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1325,1688,2846,2828,2828,1534,1440,1158,1555,1336,1332,1554,1166,536,1253,813,1125,723,610,682,61063:1486,653,653,653,1127,1127,635,635,635,0,1152,457,721,754,801,818,658,658,431,650,0,0,719,719,545,856,855,543,593,593,564,593,1094,719,12,11,906,906,11,9,0,11,0,0,17,1444,1253,719,12,553,3,0,18,20,14,20,925,6,9,0,337,0,11,11,11,6,9,17,589,943,943,700,700,1024,1024,1024,1239,12,2,966,61144:16,0,14,0,14,19,952,1127,566,814,63171:0,65279:0"},"unitsPerEm":2048,"ascender":1984,"descender":-494}
|