@celilo/e2e 0.7.11 → 0.7.12

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 (30) hide show
  1. package/.celilo-website-cache/_astro/docs.DwsUauWZ.css +1 -0
  2. package/.celilo-website-cache/_astro/network.BB0RR2mM.css +1 -0
  3. package/.celilo-website-cache/diagrams/physical.svg +1 -0
  4. package/.celilo-website-cache/diagrams/zone-topology.svg +1 -0
  5. package/.celilo-website-cache/docs/index.html +250 -0
  6. package/.celilo-website-cache/docs/network/index.html +300 -0
  7. package/.celilo-website-cache/favicon.svg +4 -0
  8. package/.celilo-website-cache/fonts/theia-300.otf +0 -0
  9. package/.celilo-website-cache/fonts/theia-400.otf +0 -0
  10. package/.celilo-website-cache/fonts/theia-500.otf +0 -0
  11. package/.celilo-website-cache/index.html +93 -0
  12. package/.celilo-website-cache/install.sh +330 -0
  13. package/.celilo-website-cache/modules/index.html +86 -0
  14. package/.celilo-website-cache/modules/view/index.html +69 -0
  15. package/.celilo-website-cache/vision/index.html +121 -0
  16. package/.npm-registry-cache/celilo-capabilities-0.1.10.tgz +0 -0
  17. package/.npm-registry-cache/celilo-cli-0.3.30.tgz +0 -0
  18. package/.npm-registry-cache/celilo-cli-display-0.1.9.tgz +0 -0
  19. package/.npm-registry-cache/celilo-e2e-0.7.12.tgz +0 -0
  20. package/.npm-registry-cache/celilo-event-bus-0.1.4.tgz +0 -0
  21. package/netapps/authentik.netapp +0 -0
  22. package/netapps/caddy.netapp +0 -0
  23. package/netapps/celilo-website.netapp +0 -0
  24. package/netapps/greenwave.netapp +0 -0
  25. package/netapps/homebridge.netapp +0 -0
  26. package/netapps/iptables.netapp +0 -0
  27. package/netapps/knot-unbound-internal.netapp +0 -0
  28. package/netapps/namecheap.netapp +0 -0
  29. package/netapps/technitium.netapp +0 -0
  30. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ @font-face{font-family:Theia;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/theia-300.otf) format("opentype")}@font-face{font-family:Theia;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/theia-400.otf) format("opentype")}@font-face{font-family:Theia;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/theia-500.otf) format("opentype")}[data-astro-cid-5hce7sga],[data-astro-cid-5hce7sga]:before,[data-astro-cid-5hce7sga]:after{box-sizing:border-box;margin:0;padding:0}:root,[data-astro-cid-5hce7sga][data-theme=dark]{--bg: #0a0a13;--bg-rgb: 10, 10, 19;--surface: #181c27;--border: #252b3b;--text: #e2e8f0;--muted: #8892a4;--accent: #6366f1;--accent-light: #818cf8;--link: #a5b4fc;--green: #34d399;--bg-pattern-color: #a5b4fc;--bg-pattern-opacity: .1;--font-mono: "Theia", "Fira Code", "Cascadia Code", "JetBrains Mono", ui-monospace, monospace;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--max-w: 72rem}[data-astro-cid-5hce7sga][data-theme=light]{--bg: #f8fafc;--bg-rgb: 248, 250, 252;--surface: #ffffff;--border: #e2e8f0;--text: #0f172a;--muted: #475569;--accent: #4f46e5;--accent-light: #6366f1;--link: #4338ca;--green: #047857;--bg-pattern-color: #4f46e5;--bg-pattern-opacity: 0}html{font-family:var(--font-sans);background:var(--bg);color:var(--text);line-height:1.6;color-scheme:dark}[data-astro-cid-5hce7sga][data-theme=light] html,html[data-theme=light]{color-scheme:light}body{min-height:100vh;position:relative;z-index:0}.bg-pattern[data-astro-cid-5hce7sga]{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;color:var(--bg-pattern-color);opacity:var(--bg-pattern-opacity)}a[data-astro-cid-5hce7sga]{color:var(--accent-light);text-decoration:none}a[data-astro-cid-5hce7sga]:hover{text-decoration:underline}nav[data-astro-cid-5hce7sga]{position:sticky;top:0;z-index:10;background:rgba(var(--bg-rgb),.85);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.nav-inner[data-astro-cid-5hce7sga]{max-width:var(--max-w);margin:0 auto;padding:0 1.5rem;height:3.5rem;display:flex;align-items:center;gap:2rem}.nav-logo[data-astro-cid-5hce7sga]{font-family:var(--font-mono);font-size:1.1rem;font-weight:700;color:var(--accent-light);letter-spacing:-.02em}.nav-logo[data-astro-cid-5hce7sga]:hover{text-decoration:none;color:var(--accent-light)}.nav-links[data-astro-cid-5hce7sga]{display:flex;gap:1.25rem;margin-left:auto;list-style:none}.nav-links[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga]{color:var(--muted);font-size:.9rem;transition:color .15s;display:inline-flex;align-items:center;gap:.4rem}.nav-links[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga]:hover,.nav-links[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga].active{color:var(--text);text-decoration:none}.nav-links[data-astro-cid-5hce7sga] svg[data-astro-cid-5hce7sga]{width:1rem;height:1rem;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.theme-toggle[data-astro-cid-5hce7sga]{background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--muted);cursor:pointer;padding:.35rem;margin-left:.5rem;display:inline-flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s}.theme-toggle[data-astro-cid-5hce7sga]:hover{color:var(--text);border-color:var(--text)}.theme-toggle[data-astro-cid-5hce7sga] svg[data-astro-cid-5hce7sga]{width:1.05rem;height:1.05rem;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}[data-astro-cid-5hce7sga][data-theme=dark] .theme-toggle[data-astro-cid-5hce7sga] .icon-sun[data-astro-cid-5hce7sga]{display:inline}[data-astro-cid-5hce7sga][data-theme=dark] .theme-toggle[data-astro-cid-5hce7sga] .icon-moon[data-astro-cid-5hce7sga],[data-astro-cid-5hce7sga][data-theme=light] .theme-toggle[data-astro-cid-5hce7sga] .icon-sun[data-astro-cid-5hce7sga]{display:none}[data-astro-cid-5hce7sga][data-theme=light] .theme-toggle[data-astro-cid-5hce7sga] .icon-moon[data-astro-cid-5hce7sga]{display:inline}main[data-astro-cid-5hce7sga]{max-width:var(--max-w);margin:0 auto;padding:1.5rem 1.5rem 4rem}footer[data-astro-cid-5hce7sga]{border-top:1px solid var(--border);padding:2rem 1.5rem;text-align:center;color:var(--muted);font-size:.85rem}h1[data-astro-cid-5hce7sga],h2[data-astro-cid-5hce7sga],h3[data-astro-cid-5hce7sga],h4[data-astro-cid-5hce7sga]{line-height:1.2}code[data-astro-cid-5hce7sga]{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--border);padding:.15em .4em;border-radius:4px;font-size:.9em}pre[data-astro-cid-5hce7sga]{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1.25rem 1.5rem;overflow-x:auto;font-size:.875rem;line-height:1.7}pre[data-astro-cid-5hce7sga] code[data-astro-cid-5hce7sga]{background:none;border:none;padding:0;font-size:inherit}
@@ -0,0 +1 @@
1
+ .breadcrumb[data-astro-cid-ppabjpgh]{padding:1rem 0 0;font-size:.9rem;color:var(--muted)}.breadcrumb[data-astro-cid-ppabjpgh] a[data-astro-cid-ppabjpgh]{color:var(--muted);text-decoration:none;transition:color .1s}.breadcrumb[data-astro-cid-ppabjpgh] a[data-astro-cid-ppabjpgh]:hover{color:var(--text)}.page-header[data-astro-cid-ppabjpgh]{padding:.75rem 0 1.5rem;border-bottom:1px solid var(--border);margin-bottom:2rem}.page-header[data-astro-cid-ppabjpgh] h1[data-astro-cid-ppabjpgh]{font-size:2.5rem;font-weight:800;letter-spacing:-.03em;margin-bottom:.75rem}.page-header[data-astro-cid-ppabjpgh] p[data-astro-cid-ppabjpgh]{color:var(--muted);font-size:1.05rem}.docs-layout[data-astro-cid-ppabjpgh]{display:grid;grid-template-columns:16rem 1fr;gap:3rem;align-items:start}@media(max-width:680px){.docs-layout[data-astro-cid-ppabjpgh]{grid-template-columns:1fr}}.docs-nav[data-astro-cid-ppabjpgh]{position:sticky;top:5rem;list-style:none}.docs-nav[data-astro-cid-ppabjpgh] li[data-astro-cid-ppabjpgh]{margin-bottom:.15rem}.docs-nav[data-astro-cid-ppabjpgh] a[data-astro-cid-ppabjpgh]{display:block;padding:.45rem .85rem;border-radius:6px;color:var(--muted);font-size:1rem;line-height:1.4;text-decoration:none;transition:all .1s}.docs-nav[data-astro-cid-ppabjpgh] a[data-astro-cid-ppabjpgh]:hover,.docs-nav[data-astro-cid-ppabjpgh] a[data-astro-cid-ppabjpgh].active{color:var(--text);background:var(--surface);text-decoration:none}.docs-nav[data-astro-cid-ppabjpgh] .nav-section[data-astro-cid-ppabjpgh]{font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:.35rem .85rem;margin-top:1.5rem}.docs-content[data-astro-cid-ppabjpgh] a[data-astro-cid-ppabjpgh]{color:var(--link);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--link) 45%,transparent);text-underline-offset:2px;transition:text-decoration-color .1s}.docs-content[data-astro-cid-ppabjpgh] a[data-astro-cid-ppabjpgh]:hover{text-decoration-color:var(--link)}.docs-content[data-astro-cid-ppabjpgh] h2[data-astro-cid-ppabjpgh]{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin:2.5rem 0 1rem;padding-top:2.5rem;border-top:1px solid var(--border)}.docs-content[data-astro-cid-ppabjpgh] h2[data-astro-cid-ppabjpgh]:first-child{margin-top:0;padding-top:0;border-top:none}.docs-content[data-astro-cid-ppabjpgh] h3[data-astro-cid-ppabjpgh]{font-size:1.1rem;font-weight:600;margin:1.75rem 0 .75rem}.docs-content[data-astro-cid-ppabjpgh] p[data-astro-cid-ppabjpgh]{color:var(--muted);margin-bottom:1rem;line-height:1.75}.docs-content[data-astro-cid-ppabjpgh] ul[data-astro-cid-ppabjpgh],.docs-content[data-astro-cid-ppabjpgh] ol[data-astro-cid-ppabjpgh]{color:var(--muted);padding-left:1.5rem;margin-bottom:1rem;line-height:1.75}.docs-content[data-astro-cid-ppabjpgh] li[data-astro-cid-ppabjpgh]{margin-bottom:.25rem}.docs-content[data-astro-cid-ppabjpgh] pre[data-astro-cid-ppabjpgh]{margin:1.25rem 0}.docs-content[data-astro-cid-ppabjpgh] p[data-astro-cid-ppabjpgh]+pre[data-astro-cid-ppabjpgh],.docs-content[data-astro-cid-ppabjpgh] ul[data-astro-cid-ppabjpgh]+pre[data-astro-cid-ppabjpgh],.docs-content[data-astro-cid-ppabjpgh] ol[data-astro-cid-ppabjpgh]+pre[data-astro-cid-ppabjpgh]{margin-top:-.25rem}.docs-content[data-astro-cid-ppabjpgh] p[data-astro-cid-ppabjpgh]:has(+pre),.docs-content[data-astro-cid-ppabjpgh] ul[data-astro-cid-ppabjpgh]:has(+pre),.docs-content[data-astro-cid-ppabjpgh] ol[data-astro-cid-ppabjpgh]:has(+pre){margin-bottom:.6rem}.docs-content[data-astro-cid-ppabjpgh] pre[data-astro-cid-ppabjpgh]+pre[data-astro-cid-ppabjpgh]{margin-top:.4rem}.callout[data-astro-cid-ppabjpgh]{background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:8px;padding:1rem 1.25rem;margin:1.25rem 0;font-size:.9rem;color:var(--text)}.callout[data-astro-cid-ppabjpgh] strong[data-astro-cid-ppabjpgh]{color:var(--accent)}.diagram[data-astro-cid-ppabjpgh]{margin:1.5rem 0 .5rem;padding:1rem;background:#f7f4e4;border:1px solid var(--border);border-radius:8px;text-align:center}.diagram[data-astro-cid-ppabjpgh] img[data-astro-cid-ppabjpgh]{max-width:100%;height:auto;display:block;margin:0 auto}.diagram[data-astro-cid-ppabjpgh] figcaption[data-astro-cid-ppabjpgh]{margin-top:.5rem;font-size:.85rem;color:#555;font-style:italic}.docs-content[data-astro-cid-ppabjpgh] table[data-astro-cid-ppabjpgh]{width:100%;border-collapse:collapse;margin:1rem 0 1.5rem;font-size:.95rem}.docs-content[data-astro-cid-ppabjpgh] th[data-astro-cid-ppabjpgh],.docs-content[data-astro-cid-ppabjpgh] td[data-astro-cid-ppabjpgh]{text-align:left;padding:.55rem .85rem;border-bottom:1px solid var(--border)}.docs-content[data-astro-cid-ppabjpgh] th[data-astro-cid-ppabjpgh]{color:var(--text);font-weight:600;background:var(--surface)}.docs-content[data-astro-cid-ppabjpgh] td[data-astro-cid-ppabjpgh]{color:var(--muted)}.docs-content[data-astro-cid-ppabjpgh] td[data-astro-cid-ppabjpgh] code[data-astro-cid-ppabjpgh]{font-size:.9em}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:lucid="lucid" width="1002" height="1052.86"><g transform="translate(174.33333333333331 -21.68678977272714)" lucid:page-tab-id="EwMTfdZm.M50"><path d="M66.67 589.8a6 6 0 0 1 6-6h148a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-148a6 6 0 0 1-6-6z" stroke="#000" stroke-width="2" fill="#fff"/><use xlink:href="#a" transform="matrix(1,0,0,1,71.66666666666669,588.7890625) translate(34.76019965277778 83.05121527777777)"/><path d="M66.67 809.8a6 6 0 0 1 6-6h148a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-148a6 6 0 0 1-6-6z" stroke="#000" stroke-width="2" fill="#fff"/><use xlink:href="#b" transform="matrix(1,0,0,1,71.66666666666669,808.7890625) translate(40.90711805555556 83.05121527777777)"/><path d="M266.67 809.8a6 6 0 0 1 6-6h148a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-148a6 6 0 0 1-6-6z" stroke="#000" stroke-width="2" fill="#fff"/><use xlink:href="#c" transform="matrix(1,0,0,1,271.6666666666667,808.7890625) translate(29.50846354166667 83.05121527777777)"/><path d="M466.67 809.8a6 6 0 0 1 6-6h148a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-148a6 6 0 0 1-6-6z" stroke="#000" stroke-width="2" fill="#fff"/><use xlink:href="#c" transform="matrix(1,0,0,1,471.6666666666667,808.7890625) translate(29.50846354166667 83.05121527777777)"/><path d="M666.67 809.8a6 6 0 0 1 6-6h148a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-148a6 6 0 0 1-6-6z" stroke="#000" stroke-width="2" fill="#fff"/><use xlink:href="#c" transform="matrix(1,0,0,1,671.6666666666667,808.7890625) translate(29.50846354166667 83.05121527777777)"/><path d="M-173.33 809.8a6 6 0 0 1 6-6h148a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-148a6 6 0 0 1-6-6z" stroke="#000" stroke-width="2" fill="#fff"/><use xlink:href="#d" transform="matrix(1,0,0,1,-168.33333333333331,808.7890625) translate(45.08463541666667 83.05121527777777)"/><path d="M-93.33 965.3v33.5a6 6 0 0 0 6 6H83.33a6 6 0 0 0 6-6v-33.5" stroke="#3a414a" fill="none"/><path d="M-92.86 965.3h-.95v-.5h.94zM89.8 965.3h-.94v-.5h.95zM174.97 998.67l.05.6.1.45.2.44.24.4.3.36.37.3.4.26.44.18.46.1.6.05h13.32v5.96h-13.57l-1.28-.1-1.38-.33-1.3-.54-1.2-.74-1.07-.92-.92-1.07-.73-1.2-.54-1.3-.33-1.38-.1-1.3v-31.1h5.94zm174.67.24l-.1 1.3-.33 1.37-.53 1.3-.74 1.2-.9 1.07-1.08.92-1.2.73-1.3.53-1.38.33-1.3.1H237.66v-5.95h102.9l.6-.03.45-.1.44-.2.4-.24.36-.3.3-.37.25-.4.2-.44.1-.46.04-.6V967.8h5.94z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M349.64 967.87h-5.95v-3.08h5.94z" fill="#3a414a"/><path stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M174.97 967.87h-5.94v-3.08h5.94z" fill="#3a414a"/><path stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><use xlink:href="#e" transform="matrix(1,0,0,1,191.44838383915052,994.0338541666666) translate(0.004999999999999005 17.22222222222222)"/><path d="M149.64 1027.67l.05.6.1.45.18.44.25.4.3.36.36.3.4.26.44.18.45.1.58.05H290.4v5.96H152.56l-1.3-.1-1.36-.33-1.3-.54-1.2-.74-1.1-.92-.9-1.07-.74-1.2-.54-1.3-.33-1.38-.1-1.3v-60.1h5.94zm400 .24l-.1 1.3-.33 1.37-.53 1.3-.74 1.2-.9 1.07-1.08.92-1.2.73-1.3.53-1.38.33-1.3.1H336.62v-5.95h203.95l.6-.03.45-.1.44-.2.4-.24.36-.3.3-.37.25-.4.18-.44.12-.46.04-.6V967.8h5.94z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M549.64 967.87h-5.95v-3.08h5.94z" fill="#3a414a"/><path stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M149.64 967.87h-5.95v-3.08h5.94z" fill="#3a414a"/><path stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><use xlink:href="#e" transform="matrix(1,0,0,1,290.41422585161433,1023.0338541666666) translate(0.004999999999999005 17.22222222222222)"/><path d="M122.97 1057.67l.05.6.1.45.2.44.24.4.3.36.37.3.4.26.44.18.46.1.6.05h230.26v5.96H125.87l-1.28-.1-1.38-.33-1.3-.54-1.2-.74-1.07-.92-.92-1.07-.73-1.2-.54-1.3-.33-1.38-.1-1.3v-90.1h5.94zm626.67.24l-.1 1.3-.33 1.37-.53 1.3-.74 1.2-.9 1.07-1.08.92-1.2.73-1.3.53-1.38.33-1.3.1H402.6v-5.95h337.95l.6-.03.45-.1.44-.2.4-.24.36-.3.3-.37.25-.4.18-.44.12-.46.04-.6V967.8h5.94z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M749.64 967.87h-5.95v-3.08h5.94z" fill="#3a414a"/><path stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M122.97 967.87h-5.94v-3.08h5.94z" fill="#3a414a"/><path stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><use xlink:href="#e" transform="matrix(1,0,0,1,356.39145385992344,1053.0338541666667) translate(0.004999999999999005 17.22222222222222)"/><path d="M149.64 799.8h-5.95v-15.26h5.94zm0-36.77h-5.95V747.8h5.94z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M149.64 747.87h-5.95v-3.08h5.94z" fill="#3a414a"/><path stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M149.64 802.8h-5.95v-3.1h5.94z" fill="#3a414a"/><path stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><use xlink:href="#e" transform="matrix(1,0,0,1,123.56770833333334,763.0338541666666) translate(0.004999999999999005 17.22222222222222)"/><path d="M66.67 369.8a6 6 0 0 1 6-6h148a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-148a6 6 0 0 1-6-6z" stroke="#000" stroke-width="2" fill="#fff"/><use xlink:href="#f" transform="matrix(1,0,0,1,71.66666666666669,368.7890625) translate(23.24761284722223 66.93793402777777)"/><use xlink:href="#g" transform="matrix(1,0,0,1,71.66666666666669,368.7890625) translate(63.916015625 66.93793402777777)"/><use xlink:href="#h" transform="matrix(1,0,0,1,71.66666666666669,368.7890625) translate(56.412760416666664 99.20355902777777)"/><path d="M146.67 525.3v57" stroke="#3a414a" fill="none"/><path d="M147.14 525.3h-.95v-.5h.94zM147.14 582.8h-.95v-.52h.94z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M-173.33 369.8a6 6 0 0 1 6-6h148a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-148a6 6 0 0 1-6-6z" stroke="#000" stroke-width="2" fill="#fff"/><use xlink:href="#i" transform="matrix(1,0,0,1,-168.33333333333331,368.7890625) translate(3.092447916666657 50.82465277777778)"/><use xlink:href="#j" transform="matrix(1,0,0,1,-168.33333333333331,368.7890625) translate(100.10850694444444 50.82465277777778)"/><use xlink:href="#k" transform="matrix(1,0,0,1,-168.33333333333331,368.7890625) translate(11.409505208333329 83.09027777777777)"/><use xlink:href="#l" transform="matrix(1,0,0,1,-168.33333333333331,368.7890625) translate(101.94769965277777 83.09027777777777)"/><use xlink:href="#m" transform="matrix(1,0,0,1,-168.33333333333331,368.7890625) translate(34.309895833333336 115.35590277777777)"/><path d="M65.17 443.8h-77" stroke="#3a414a" fill="none"/><path d="M65.67 444.26h-.52v-.95h.52zM-11.82 444.26h-.5v-.95h.5z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M1.3 219.16c-34.42 0-62.3-25.26-62.3-56.42 0-24.93 16.86-45.96 43.04-53.66-1.52-73.3 102.32-87.4 143.86-59.18C146.67 7.58 250.5 21.7 250.5 64c62.3-14.1 124.62 42.32 83.08 112.84 41.54 56.42 0 126.95-83.07 98.74-20.76 36.67-103.83 36.67-124.6 0-41.54 28.2-124.6 14.1-124.6-56.42z" stroke="#000" fill="#f7f4e4"/><g><use xlink:href="#n" transform="matrix(1,0,0,1,-56.014080459769986,26.68678977272714) translate(154.3827160493827 140.94769965277777)"/></g><path d="M146.67 362.3v-67.12" stroke="#3a414a" fill="none"/><path d="M147.14 362.8h-.95v-.52h.94zM147.14 294.93v.26h-.95v-.76z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><defs><path d="M180 0v-1490h901v168H370v510h643v168H370V0H180" id="o"/><path d="M158 0v-1118h180V0H158zm91-1301c-68 0-125-53-125-119s57-119 125-119c69 0 126 53 126 119s-57 119-126 119" id="p"/><path d="M158 0v-1118h174v172h12c41-113 157-188 290-188 26 0 70 2 91 3v181c-11-2-60-10-108-10-161 0-279 109-279 260V0H158" id="q"/><path d="M628 24c-324 0-524-230-524-574 0-343 198-582 503-582 237 0 487 146 487 559v75H286c9 234 145 362 343 362 132 0 231-58 273-172l174 48C1024-91 857 24 628 24zM287-650h624c-17-190-120-322-304-322-192 0-309 151-320 322" id="r"/><path d="M409 0L70-1118h191c89 329 165 560 243 925 75-353 154-601 240-925h192c85 325 161 564 235 922 77-354 157-598 244-922h191L1267 0h-179c-86-307-176-590-250-913C763-588 675-308 588 0H409" id="s"/><path d="M471 26C259 26 90-98 90-318c0-256 228-303 435-329 202-27 287-16 287-108 0-139-79-219-234-219-161 0-248 86-283 164l-173-57c86-203 278-265 451-265 150 0 419 46 419 395V0H815v-152h-12C765-73 660 26 471 26zm31-159c199 0 310-134 310-271v-155c-30 35-226 55-295 64-131 17-246 59-246 186 0 116 97 176 231 176" id="t"/><path d="M338-1490V0H158v-1490h180" id="u"/><g id="a"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#o"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.118489583333332,0)" xlink:href="#p"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,18.50043402777778,0)" xlink:href="#q"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,26.497395833333336,0)" xlink:href="#r"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,39.05164930555556,0)" xlink:href="#s"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,57.23741319444444,0)" xlink:href="#t"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,69.71571180555556,0)" xlink:href="#u"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,75.09765625,0)" xlink:href="#u"/></g><path d="M538 24C308 24 148-78 108-271l171-41c32 123 123 178 257 178 156 0 256-77 256-169 0-77-54-128-164-154l-186-44c-203-48-300-148-300-305 0-192 176-326 414-326 230 0 351 112 402 269l-163 42c-31-80-94-158-238-158-133 0-233 69-233 162 0 83 57 129 188 160l169 40c203 48 298 149 298 302 0 196-179 339-441 339" id="v"/><path d="M598-1118v154H368v674c0 100 37 144 132 144 23 0 62-6 92-12L629-6c-37 13-88 20-134 20-193 0-307-107-307-290v-688H20v-154h168v-266h180v266h230" id="w"/><path d="M613 24c-304 0-509-231-509-576 0-350 205-580 509-580 216 0 392 114 453 309l-173 49c-33-115-133-197-280-197-223 0-326 196-326 419 0 220 103 415 326 415 150 0 252-85 285-206l172 49C1010-95 832 24 613 24" id="x"/><path d="M338-670V0H158v-1490h180v566c73-149 190-208 336-208 226 0 379 139 379 422V0H872v-695c0-172-96-275-252-275-161 0-282 109-282 300" id="y"/><g id="b"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#v"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,11.729600694444445,0)" xlink:href="#s"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,29.915364583333336,0)" xlink:href="#p"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,35.29730902777778,0)" xlink:href="#w"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,42.35026041666667,0)" xlink:href="#x"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,55.04557291666667,0)" xlink:href="#y"/></g><path d="M158 418v-1536h174v179h20c37-59 106-193 324-193 279 0 474 222 474 576 0 356-194 580-473 580-213 0-288-135-325-197h-14v591H158zm492-555c209 0 317-186 317-421 0-232-105-413-317-413-206 0-314 166-314 413 0 249 111 421 314 421" id="z"/><path d="M613 24c-304 0-509-231-509-576 0-350 205-580 509-580 305 0 511 230 511 580 0 345-206 576-511 576zm0-161c226 0 329-195 329-415 0-222-103-419-329-419-223 0-326 196-326 419 0 220 103 415 326 415" id="A"/><path d="M65 0l393-574-370-544h210c88 136 192 297 267 435 67-142 176-302 264-435h206L661-564 1053 0H844c-94-144-206-310-287-458C484-308 366-142 273 0H65" id="B"/><path d="M158 0v-1118h175l1 205c55-151 181-225 313-225 147 0 245 90 285 228 53-141 190-228 352-228 194 0 352 125 352 384V0h-181v-749c0-161-105-225-225-225-151 0-243 103-243 244V0H807v-767c0-124-93-207-219-207-131 0-250 92-250 270V0H158" id="C"/><g id="c"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#z"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.606770833333332,0)" xlink:href="#q"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,21.603732638888886,0)" xlink:href="#A"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,34.42925347222222,0)" xlink:href="#B"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,46.56032986111111,0)" xlink:href="#C"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,66.02647569444444,0)" xlink:href="#A"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,78.85199652777777,0)" xlink:href="#B"/></g><path d="M611 442c-248 0-391-105-460-228l146-94c47 65 117 165 314 165 178 0 307-82 307-266v-224h-17C863-141 792-18 576-18c-268 0-472-195-472-546 0-346 197-568 476-568 216 0 288 133 326 193h17v-179h175V29c0 289-215 413-487 413zm-5-620c203 0 314-146 314-390 0-237-108-403-314-403-213 0-319 180-319 403 0 230 109 390 319 390" id="D"/><g id="d"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#C"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,19.466145833333332,0)" xlink:href="#D"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,33.09461805555556,0)" xlink:href="#C"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,52.560763888888886,0)" xlink:href="#w"/></g><path fill="#333" d="M683-1118v229H474v562c0 71 29 104 102 104 23 0 73-7 95-13l43 225C647 9 580 16 520 16 296 16 174-96 174-301v-588H20v-229h154v-266h300v266h209" id="E"/><path fill="#333" d="M128 0v-1118h290v195h12c54-169 184-238 367-200v268c-27-8-86-15-130-15-138 0-239 95-239 234V0H128" id="F"/><path fill="#333" d="M513 14c-232 0-385-159-385-421v-711h300v659c0 139 76 222 202 222 127 0 217-86 217-234v-647h301V0H864l-4-232C797-74 683 14 513 14" id="G"/><path fill="#333" d="M428-647V0H128v-1118h283l4 231c63-156 176-245 348-245 232 0 384 159 384 421V0H847v-659c0-139-76-222-202-222-128 0-217 86-217 234" id="H"/><path fill="#333" d="M128 0v-1490h300v802h17l366-430h347L740-633 1179 0H826L514-456l-86 97V0H128" id="I"/><g id="e"><use transform="matrix(0.008680555555555556,0,0,0.008680555555555556,0,0)" xlink:href="#E"/><use transform="matrix(0.008680555555555556,0,0,0.008680555555555556,6.510416666666667,0)" xlink:href="#F"/><use transform="matrix(0.008680555555555556,0,0,0.008680555555555556,13.75,0)" xlink:href="#G"/><use transform="matrix(0.008680555555555556,0,0,0.008680555555555556,24.817708333333336,0)" xlink:href="#H"/><use transform="matrix(0.008680555555555556,0,0,0.008680555555555556,35.88541666666667,0)" xlink:href="#I"/></g><path d="M370-1490V0H180v-1490h190" id="J"/><path d="M657 26c-323 0-524-166-541-416h195c15 169 171 246 346 246 202 0 356-106 356-265 5-203-294-238-475-293-239-73-380-191-380-389 0-252 224-419 512-419 294 0 499 171 508 396H992c-17-145-151-228-328-228-193 0-321 102-321 242 0 156 175 211 284 241l149 41c160 44 422 134 422 412 0 244-197 432-541 432" id="K"/><path d="M180 0v-1490h510c348 0 508 209 508 474 0 266-160 477-507 477H370V0H180zm190-706h312c236 0 327-133 327-310 0-176-91-307-329-307H370v617" id="L"/><g id="f"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#J"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,5.967881944444445,0)" xlink:href="#K"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,20.225694444444443,0)" xlink:href="#L"/></g><path d="M537 14c-226 0-379-139-379-422v-710h180v695c0 172 97 275 253 275 160 0 281-109 281-300v-670h181V0H879v-209C806-46 684 14 537 14" id="M"/><g id="g"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#q"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,7.996961805555555,0)" xlink:href="#A"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,21.321614583333332,0)" xlink:href="#M"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,34.46180555555556,0)" xlink:href="#w"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,41.51475694444445,0)" xlink:href="#r"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,54.47048611111112,0)" xlink:href="#q"/></g><path d="M678-1118v154H420V0H240v-964H20v-154h220v-149c0-194 155-293 318-293 85 0 141 18 168 30l-50 154c-19-6-47-17-97-17-111 0-159 58-159 166v109h258" id="N"/><g id="h"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#s"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,18.18576388888889,0)" xlink:href="#p"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,23.567708333333336,0)" xlink:href="#N"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,31.792534722222225,0)" xlink:href="#p"/></g><path d="M180 0v-1490h190v1322h690V0H180" id="O"/><path d="M128 359l88-567h206L266 359H128" id="P"/><g id="i"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#O"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,12.565104166666666,0)" xlink:href="#t"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,25.04340277777778,0)" xlink:href="#z"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,38.650173611111114,0)" xlink:href="#w"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,45.70312500000001,0)" xlink:href="#A"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,59.027777777777786,0)" xlink:href="#z"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,72.63454861111111,0)" xlink:href="#v"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,84.36414930555556,0)" xlink:href="#P"/></g><path d="M98-1322v-168h1126v168H757V0H567v-1322H98" id="Q"/><path d="M600 0L52-1490h200c166 485 304 806 458 1336 156-533 285-846 449-1336h202L819 0H600" id="R"/><g id="j"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#Q"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,14.344618055555555,0)" xlink:href="#R"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,28.66753472222222,0)" xlink:href="#v"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,40.397135416666664,0)" xlink:href="#P"/></g><path d="M338-670V0H158v-1118h173l1 207c72-158 192-221 342-221 226 0 378 139 378 422V0H872v-695c0-172-96-275-252-275-161 0-282 109-282 300" id="S"/><g id="k"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#z"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.606770833333332,0)" xlink:href="#y"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,26.746961805555554,0)" xlink:href="#A"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,40.07161458333333,0)" xlink:href="#S"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,53.20095486111111,0)" xlink:href="#r"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,66.15668402777777,0)" xlink:href="#v"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,77.88628472222221,0)" xlink:href="#P"/></g><path d="M784 20c-382 0-662-292-662-764 0-473 280-766 662-766s660 293 660 766c0 472-278 764-660 764zm0-176c266 0 475-207 475-588 0-383-209-590-475-590-268 0-477 208-477 590 0 380 209 588 477 588" id="T"/><g id="l"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#J"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,5.967881944444445,0)" xlink:href="#T"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,22.298177083333336,0)" xlink:href="#Q"/></g><path d="M577 24c-279 0-473-224-473-580 0-354 195-576 474-576 218 0 287 134 324 193h14v-551h180V0H922v-173h-20C865-111 790 24 577 24zm27-161c203 0 314-172 314-421 0-247-108-413-314-413-212 0-317 181-317 413 0 235 108 421 317 421" id="U"/><path d="M481 0L54-1118h197c107 314 236 620 325 951 87-331 217-637 324-951h197L670 0H481" id="V"/><g id="m"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#U"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.606770833333332,0)" xlink:href="#r"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,26.12847222222222,0)" xlink:href="#V"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,38.61762152777778,0)" xlink:href="#p"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,43.99956597222222,0)" xlink:href="#x"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,56.69487847222222,0)" xlink:href="#r"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,69.65060763888889,0)" xlink:href="#v"/></g><path d="M24 0v-248h52V0H24" id="W"/><path d="M135-194c87-1 58 113 63 194h-50c-7-57 23-157-34-157-59 0-34 97-39 157H25l-1-190h47c2 12-1 28 3 38 12-26 28-41 61-42" id="X"/><path d="M115-3C79 11 28 4 28-45v-112H4v-33h27l15-45h31v45h36v33H77v99c-1 23 16 31 38 25v30" id="Y"/><path d="M185-48c-13 30-37 53-82 52C43 2 14-33 14-96s30-98 90-98c62 0 83 45 84 108H66c0 31 8 55 39 56 18 0 30-7 34-22zm-45-69c5-46-57-63-70-21-2 6-4 13-4 21h74" id="Z"/><path d="M135-150c-39-12-60 13-60 57V0H25l-1-190h47c2 13-1 29 3 40 6-28 27-53 61-41v41" id="aa"/><g id="n"><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,0,0)" xlink:href="#W"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,6.172839506172839,0)" xlink:href="#X"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,19.691358024691358,0)" xlink:href="#Y"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,27.037037037037038,0)" xlink:href="#Z"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,39.382716049382715,0)" xlink:href="#aa"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,48.02469135802469,0)" xlink:href="#X"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,61.54320987654321,0)" xlink:href="#Z"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,73.88888888888889,0)" xlink:href="#Y"/></g></defs></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:lucid="lucid" width="1041.54" height="1062.15"><g transform="translate(251.54166668885924 -440)" lucid:page-tab-id="e7LT1BTcV0j4"><path d="M-56.42 806a6 6 0 0 1 6-6H74a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6H-50.42a6 6 0 0 1-6-6z" stroke="#3a414a" stroke-width="2" fill="#fff"/><use xlink:href="#a" transform="matrix(1,0,0,1,-51.416666666666515,805) translate(35.939236111111114 83.05121527777777)"/><path d="M-14.17 989.4h435" stroke="#282c33" stroke-width="5" stroke-linecap="round" fill="none"/><path d="M80 937.9a6 6 0 0 1 6-6h228a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6H86a6 6 0 0 1-6-6z" fill="none"/><use xlink:href="#b" transform="matrix(1,0,0,1,80,931.8958083333342) translate(27.459852430555557 38.083767361111114)"/><use xlink:href="#c" transform="matrix(1,0,0,1,80,931.8958083333342) translate(123.13042534722223 38.083767361111114)"/><use xlink:href="#d" transform="matrix(1,0,0,1,80,931.8958083333342) translate(174.53016493055554 38.083767361111114)"/><path d="M303.33 821.27a6 6 0 0 1 6-6h28a6 6 0 0 0 6-6v-28a6 6 0 0 1 6-6h68a6 6 0 0 1 6 6v28a6 6 0 0 0 6 6h28a6 6 0 0 1 6 6v68a6 6 0 0 1-6 6h-28a6 6 0 0 0-6 6v28a6 6 0 0 1-6 6h-68a6 6 0 0 1-6-6v-28a6 6 0 0 0-6-6h-28a6 6 0 0 1-6-6z" stroke="#3a414a" stroke-width="2" fill="#fff"/><use xlink:href="#e" transform="matrix(1,0,0,1,308.33333333333337,780.2708083333337) translate(6.233723958333329 83.05121527777777)"/><path d="M11.8 961.5v24.89" stroke="#3a414a" fill="none"/><path d="M12.27 961.5h-.95v-.5h.95z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M11.8 986.38v3.5M383.33 936.77v49.63" stroke="#3a414a" fill="none"/><path d="M383.8 936.78h-.94v-.5h.95z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M383.33 986.38v3.52" stroke="#3a414a" fill="none"/><path d="M113.58 1130.9a6 6 0 0 1 6-6h28a6 6 0 0 0 6-6v-28a6 6 0 0 1 6-6h68a6 6 0 0 1 6 6v28a6 6 0 0 0 6 6h28a6 6 0 0 1 6 6v68a6 6 0 0 1-6 6h-28a6 6 0 0 0-6 6v28a6 6 0 0 1-6 6h-68a6 6 0 0 1-6-6v-28a6 6 0 0 0-6-6h-28a6 6 0 0 1-6-6z" stroke="#3a414a" stroke-width="2" fill="#fff"/><use xlink:href="#f" transform="matrix(1,0,0,1,118.58333333333337,1089.8958083333341) translate(33.740234375 83.05121527777777)"/><path d="M193.58 1083.4v-91" stroke="#3a414a" fill="none"/><path d="M194.06 1083.9h-.95v-.52h.96z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M193.58 992.4v-3.5" stroke="#3a414a" fill="none"/><path d="M-14.17 1303.65h435" stroke="#282c33" stroke-width="5" stroke-linecap="round" fill="none"/><path d="M63.33 1307.15a6 6 0 0 1 6-6h228a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6h-228a6 6 0 0 1-6-6z" fill="none"/><use xlink:href="#g" transform="matrix(1,0,0,1,63.33333333333337,1301.1458583333329) translate(52.16688368055556 38.083767361111114)"/><use xlink:href="#h" transform="matrix(1,0,0,1,63.33333333333337,1301.1458583333329) translate(111.86740451388889 38.083767361111114)"/><use xlink:href="#i" transform="matrix(1,0,0,1,63.33333333333337,1301.1458583333329) translate(163.26714409722223 38.083767361111114)"/><path d="M193.58 1246.4v54.25" stroke="#3a414a" fill="none"/><path d="M194.06 1246.4h-.95v-.5h.96z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M193.58 1300.63v3.52" stroke="#3a414a" fill="none"/><path d="M296.67 1347.15a6 6 0 0 1 6-6h94.66a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-94.66a6 6 0 0 1-6-6z" stroke="#3a414a" stroke-width="2" fill="#fff"/><use xlink:href="#j" transform="matrix(1,0,0,1,301.66666666666686,1346.1458583333329) translate(15.899088541666671 83.05121527777777)"/><path d="M350 1339.65v-33" stroke="#3a414a" fill="none"/><path d="M350.48 1340.15h-.96v-.52h.96z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M350 1306.66v-3.5" stroke="#3a414a" fill="none"/><path d="M473.58 781.27a6 6 0 0 1 6-6H604.5a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6H479.58a6 6 0 0 1-6-6z" fill="none"/><use xlink:href="#k" transform="matrix(1,0,0,1,473.58333333333337,775.2708083333337) translate(0 38.083767361111114)"/><path d="M240 1072.9a6 6 0 0 1 6-6h88a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6h-88a6 6 0 0 1-6-6z" fill="none"/><use xlink:href="#k" transform="matrix(1,0,0,1,240,1066.8958083333341) translate(0 38.083767361111114)"/><path d="M-245.9 1167.4h198.33" stroke="#282c33" stroke-width="5" stroke-linecap="round" fill="none"/><path d="M-251.54 1175.9a6 6 0 0 1 6-6h228a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6h-228a6 6 0 0 1-6-6z" fill="none"/><use xlink:href="#l" transform="matrix(1,0,0,1,-251.54166668885924,1169.8958083333341) translate(53.0078125 38.083767361111114)"/><use xlink:href="#m" transform="matrix(1,0,0,1,-251.54166668885924,1169.8958083333341) translate(106.61024305555556 38.083767361111114)"/><use xlink:href="#n" transform="matrix(1,0,0,1,-251.54166668885924,1169.8958083333341) translate(158.00998263888889 38.083767361111114)"/><path d="M352.5 1167.4h435" stroke="#282c33" stroke-width="5" stroke-linecap="round" fill="none"/><path d="M420 1175.9a6 6 0 0 1 6-6h228a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6H426a6 6 0 0 1-6-6z" fill="none"/><use xlink:href="#o" transform="matrix(1,0,0,1,420,1169.8958083333341) translate(36.12413194444444 38.083767361111114)"/><use xlink:href="#p" transform="matrix(1,0,0,1,420,1169.8958083333341) translate(123.14670138888889 38.083767361111114)"/><use xlink:href="#q" transform="matrix(1,0,0,1,420,1169.8958083333341) translate(174.54644097222223 38.083767361111114)"/><path d="M275.08 1164.9h93.32" stroke="#3a414a" fill="none"/><path d="M275.1 1165.37h-.52v-.95h.52z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M368.4 1164.9h3.5M112.08 1164.9H-77.6" stroke="#3a414a" fill="none"/><path d="M112.58 1165.37h-.5v-.95h.5z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M-77.6 1164.9h-3.5" stroke="#3a414a" fill="none"/><path d="M423.33 1392.15a6 6 0 0 1 6-6h124.92a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6H429.33a6 6 0 0 1-6-6z" fill="none"/><use xlink:href="#r" transform="matrix(1,0,0,1,423.33333333333337,1386.1458583333329) translate(0 38.083767361111114)"/><path d="M-191.54 967.9a6 6 0 0 1 6-6h94.66a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6h-94.66a6 6 0 0 1-6-6z" stroke="#3a414a" stroke-width="2" fill="#fff"/><use xlink:href="#s" transform="matrix(1,0,0,1,-186.54166666666663,966.8958083333341) translate(0.019097222222228538 83.05121527777777)"/><path d="M-247.96 1017.9a6 6 0 0 1 6-6h41.34a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6h-41.34a6 6 0 0 1-6-6z" fill="none"/><use xlink:href="#t" transform="matrix(1,0,0,1,-247.95833333333314,1011.8958083333341) translate(0 38.083767361111114)"/><path d="M-138.2 1123.4v41" stroke="#3a414a" fill="none"/><path d="M-137.73 1123.4h-.95v-.5h.95z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M-138.2 1164.38v3.52" stroke="#3a414a" fill="none"/><path d="M231.5 638.55c-31.64 0-57.3-25.4-57.3-56.73 0-25.06 15.52-46.2 39.6-53.95-1.4-73.7 94.12-87.87 132.32-59.5 19.1-42.55 114.62-28.37 114.62 14.18 57.3-14.2 114.6 42.54 76.4 113.45 38.2 56.73 0 127.65-76.4 99.28-19.1 36.88-95.5 36.88-114.62 0-38.2 28.37-114.6 14.18-114.6-56.73z" stroke="#000" fill="#f7f4e4"/><use xlink:href="#u" transform="matrix(1,0,0,1,179.20365615911874,445) translate(136.46913580246914 141.39887152777777)"/><path d="M383.33 773.77V721.7" stroke="#3a414a" fill="none"/><path d="M383.8 774.27h-.94v-.5h.95zM383.8 721.3v.4h-.94v-.63z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M488.7 972.9a6 6 0 0 1 6-6h94.68a6 6 0 0 1 6 6v148a6 6 0 0 1-6 6H494.7a6 6 0 0 1-6-6z" stroke="#3a414a" stroke-width="2" fill="#fff"/><g><use xlink:href="#v" transform="matrix(1,0,0,1,493.7083333333335,971.8958083333342) translate(2.4876302083333357 83.05121527777777)"/></g><path d="M542.04 1128.4v36" stroke="#3a414a" fill="none"/><path d="M542.52 1128.4h-.95v-.5h.95z" stroke="#3a414a" stroke-width=".05" fill="#3a414a"/><path d="M542.04 1164.38v3.52" stroke="#3a414a" fill="none"/><defs><path d="M613 24c-304 0-509-231-509-576 0-350 205-580 509-580 216 0 392 114 453 309l-173 49c-33-115-133-197-280-197-223 0-326 196-326 419 0 220 103 415 326 415 150 0 252-85 285-206l172 49C1010-95 832 24 613 24" id="w"/><path d="M628 24c-324 0-524-230-524-574 0-343 198-582 503-582 237 0 487 146 487 559v75H286c9 234 145 362 343 362 132 0 231-58 273-172l174 48C1024-91 857 24 628 24zM287-650h624c-17-190-120-322-304-322-192 0-309 151-320 322" id="x"/><path d="M338-1490V0H158v-1490h180" id="y"/><path d="M158 0v-1118h180V0H158zm91-1301c-68 0-125-53-125-119s57-119 125-119c69 0 126 53 126 119s-57 119-126 119" id="z"/><path d="M613 24c-304 0-509-231-509-576 0-350 205-580 509-580 305 0 511 230 511 580 0 345-206 576-511 576zm0-161c226 0 329-195 329-415 0-222-103-419-329-419-223 0-326 196-326 419 0 220 103 415 326 415" id="A"/><g id="a"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#w"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,12.6953125,0)" xlink:href="#x"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,25.651041666666664,0)" xlink:href="#y"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,31.032986111111104,0)" xlink:href="#z"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,36.41493055555555,0)" xlink:href="#y"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,41.79687499999999,0)" xlink:href="#A"/></g><path fill="#d916a8" d="M128 0v-1118h300V0H128zm150-1264c-91 0-165-68-165-154 0-85 74-154 165-154 90 0 165 69 165 154 0 86-75 154-165 154" id="B"/><path fill="#d916a8" d="M428-647V0H128v-1118h283l4 231c63-156 176-245 348-245 232 0 384 159 384 421V0H847v-659c0-139-76-222-202-222-128 0-217 86-217 234" id="C"/><path fill="#d916a8" d="M683-1118v229H474v562c0 71 29 104 102 104 23 0 73-7 95-13l43 225C647 9 580 16 520 16 296 16 174-96 174-301v-588H20v-229h154v-266h300v266h209" id="D"/><path fill="#d916a8" d="M633 22C291 22 81-200 81-553c0-345 210-579 537-579 292 0 525 185 525 567v84H378c7 183 109 277 260 277 105 0 184-46 216-132l272 51C1071-99 893 22 633 22zM380-669h474c-15-146-94-237-233-237-143 0-229 99-241 237" id="E"/><path fill="#d916a8" d="M128 0v-1118h290v195h12c54-169 184-238 367-200v268c-27-8-86-15-130-15-138 0-239 95-239 234V0H128" id="F"/><path fill="#d916a8" d="M440 22C227 22 68-92 68-313c0-250 202-322 422-343 195-21 271-24 271-105 0-95-63-149-175-149-116 0-187 57-211 129l-275-46c57-194 237-305 487-305 240 0 474 108 474 379V0H777v-155h-10C713-51 605 22 440 22zm85-211c140 0 238-93 238-211v-121c-37 26-156 42-222 51-111 16-185 59-185 149 0 87 70 132 169 132" id="G"/><path fill="#d916a8" d="M428-1490V0H128v-1490h300" id="H"/><path fill="#d916a8" d="M342-723c-98 0-173-75-173-172s75-172 173-172 173 75 173 172-75 172-173 172zm0 742c-98 0-173-75-173-172s75-172 173-172 173 75 173 172S440 19 342 19" id="I"/><g id="b"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#B"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,6.022135416666666,0)" xlink:href="#C"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,19.856770833333332,0)" xlink:href="#D"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,27.77777777777778,0)" xlink:href="#E"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,41.015625,0)" xlink:href="#F"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,50.22786458333333,0)" xlink:href="#C"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,64.0625,0)" xlink:href="#G"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,76.96397569444444,0)" xlink:href="#H"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,82.98611111111111,0)" xlink:href="#I"/></g><path fill="#d916a8" d="M443 0L31-1118h319c90 293 199 572 268 885 66-313 175-593 264-885h315L784 0H443" id="J"/><g id="c"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#J"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.378906249999996,0)" xlink:href="#H"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,19.401041666666664,0)" xlink:href="#G"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,32.30251736111111,0)" xlink:href="#C"/></g><path fill="#d916a8" d="M749-1490V0H444v-1221h-10L93-980v-279l329-231h327" id="K"/><path fill="#d916a8" d="M636 22c-294 0-497-190-527-437h302c24 106 107 174 225 174 196 0 302-184 302-479h-10c-68 129-211 209-374 209-265 0-460-202-460-482 0-301 224-521 555-519 300 2 588 186 588 731 0 502-235 803-601 803zm11-757c147 0 260-121 260-268 0-144-109-265-258-265-147 0-258 117-258 267 0 151 108 266 256 266" id="L"/><path fill="#d916a8" d="M124 0v-220l528-495c135-132 210-216 210-336 0-133-98-215-231-215-139 0-229 88-229 233H110c0-290 214-477 523-477 315 0 525 182 525 440 0 167-80 305-385 586L548-262v11h630V0H124" id="M"/><g id="d"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#K"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,9.581163194444445,0)" xlink:href="#L"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,24.012586805555554,0)" xlink:href="#M"/></g><path d="M158 418v-1536h174v179h20c37-59 106-193 324-193 279 0 474 222 474 576 0 356-194 580-473 580-213 0-288-135-325-197h-14v591H158zm492-555c209 0 317-186 317-421 0-232-105-413-317-413-206 0-314 166-314 413 0 249 111 421 314 421" id="N"/><path d="M158 0v-1118h174v172h12c41-113 157-188 290-188 26 0 70 2 91 3v181c-11-2-60-10-108-10-161 0-279 109-279 260V0H158" id="O"/><path d="M158 0v-1118h175l1 205c55-151 181-225 313-225 147 0 245 90 285 228 53-141 190-228 352-228 194 0 352 125 352 384V0h-181v-749c0-161-105-225-225-225-151 0-243 103-243 244V0H807v-767c0-124-93-207-219-207-131 0-250 92-250 270V0H158" id="P"/><path d="M598-1118v154H368v674c0 100 37 144 132 144 23 0 62-6 92-12L629-6c-37 13-88 20-134 20-193 0-307-107-307-290v-688H20v-154h168v-266h180v266h230" id="Q"/><path d="M798-719v166H144v-166h654" id="R"/><path d="M678-1118v154H420V0H240v-964H20v-154h220v-149c0-194 155-293 318-293 85 0 141 18 168 30l-50 154c-19-6-47-17-97-17-111 0-159 58-159 166v109h258" id="S"/><path d="M409 0L70-1118h191c89 329 165 560 243 925 75-353 154-601 240-925h192c85 325 161 564 235 922 77-354 157-598 244-922h191L1267 0h-179c-86-307-176-590-250-913C763-588 675-308 588 0H409" id="T"/><g id="e"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#N"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.606770833333332,0)" xlink:href="#x"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,26.5625,0)" xlink:href="#O"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,35.275607638888886,0)" xlink:href="#z"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,40.65755208333333,0)" xlink:href="#P"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,60.12369791666666,0)" xlink:href="#x"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,73.07942708333333,0)" xlink:href="#Q"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,80.13237847222221,0)" xlink:href="#x"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,93.08810763888889,0)" xlink:href="#O"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,100.57508680555556,0)" xlink:href="#R"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,110.79644097222224,0)" xlink:href="#S"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,119.34678819444444,0)" xlink:href="#T"/></g><path d="M471 26C259 26 90-98 90-318c0-256 228-303 435-329 202-27 287-16 287-108 0-139-79-219-234-219-161 0-248 86-283 164l-173-57c86-203 278-265 451-265 150 0 419 46 419 395V0H815v-152h-12C765-73 660 26 471 26zm31-159c199 0 310-134 310-271v-155c-30 35-226 55-295 64-131 17-246 59-246 186 0 116 97 176 231 176" id="U"/><path d="M677 24c-213 0-288-135-325-197h-20V0H158v-1490h180v551h14c37-59 106-193 324-193 279 0 474 222 474 576 0 356-194 580-473 580zm-27-161c209 0 317-186 317-421 0-232-105-413-317-413-206 0-314 166-314 413 0 249 111 421 314 421" id="V"/><path d="M538 24C308 24 148-78 108-271l171-41c32 123 123 178 257 178 156 0 256-77 256-169 0-77-54-128-164-154l-186-44c-203-48-300-148-300-305 0-192 176-326 414-326 230 0 351 112 402 269l-163 42c-31-80-94-158-238-158-133 0-233 69-233 162 0 83 57 129 188 160l169 40c203 48 298 149 298 302 0 196-179 339-441 339" id="W"/><g id="f"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#z"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,5.381944444444445,0)" xlink:href="#N"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,18.98871527777778,0)" xlink:href="#Q"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,26.3671875,0)" xlink:href="#U"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,38.845486111111114,0)" xlink:href="#V"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,52.45225694444444,0)" xlink:href="#y"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,57.834201388888886,0)" xlink:href="#x"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,70.78993055555556,0)" xlink:href="#W"/></g><path fill="#ba23f6" d="M537 19C279 19 81-185 81-557c0-382 206-575 454-575 190 0 278 113 318 202h10v-560h300V0H868v-179h-15C812-89 719 19 537 19zm92-241c153 0 240-134 240-336 0-203-86-334-240-334-158 0-240 138-240 334 0 197 84 336 240 336" id="X"/><path fill="#ba23f6" d="M128 0v-1118h278l12 217c60-163 185-234 319-234 143 0 236 81 288 251 63-172 205-251 359-251 205 0 357 138 357 381V0h-301v-697c0-126-76-187-177-187-114 0-184 79-184 196V0H789v-705c0-109-72-179-174-179-106 0-187 74-187 208V0H128" id="Y"/><path fill="#ba23f6" d="M120 0v-182l551-686v-8H137v-242h897v199L514-250v8h539V0H120" id="Z"/><path fill="#ba23f6" d="M342-723c-98 0-173-75-173-172s75-172 173-172 173 75 173 172-75 172-173 172zm0 742c-98 0-173-75-173-172s75-172 173-172 173 75 173 172S440 19 342 19" id="aa"/><g id="g"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#X"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,14.008246527777777,0)" xlink:href="#Y"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,34.28819444444444,0)" xlink:href="#Z"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,47.01605902777778,0)" xlink:href="#aa"/></g><path fill="#ba23f6" d="M443 0L31-1118h319c90 293 199 572 268 885 66-313 175-593 264-885h315L784 0H443" id="ab"/><path fill="#ba23f6" d="M428-1490V0H128v-1490h300" id="ac"/><path fill="#ba23f6" d="M440 22C227 22 68-92 68-313c0-250 202-322 422-343 195-21 271-24 271-105 0-95-63-149-175-149-116 0-187 57-211 129l-275-46c57-194 237-305 487-305 240 0 474 108 474 379V0H777v-155h-10C713-51 605 22 440 22zm85-211c140 0 238-93 238-211v-121c-37 26-156 42-222 51-111 16-185 59-185 149 0 87 70 132 169 132" id="ad"/><path fill="#ba23f6" d="M428-647V0H128v-1118h283l4 231c63-156 176-245 348-245 232 0 384 159 384 421V0H847v-659c0-139-76-222-202-222-128 0-217 86-217 234" id="ae"/><g id="h"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#ab"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.378906249999996,0)" xlink:href="#ac"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,19.401041666666664,0)" xlink:href="#ad"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,32.30251736111111,0)" xlink:href="#ae"/></g><path fill="#ba23f6" d="M749-1490V0H444v-1221h-10L93-980v-279l329-231h327" id="af"/><path fill="#ba23f6" d="M690 20C314 20 94-261 94-744c0-482 221-766 596-766 376 0 597 284 597 766 0 483-219 764-597 764zm0-253c184 0 286-184 286-511 0-328-102-514-286-514-183 0-285 187-285 514s101 511 285 511" id="ag"/><g id="i"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#af"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,9.581163194444445,0)" xlink:href="#ag"/></g><path d="M577 24c-279 0-473-224-473-580 0-354 195-576 474-576 218 0 287 134 324 193h14v-551h180V0H922v-173h-20C865-111 790 24 577 24zm27-161c203 0 314-172 314-421 0-247-108-413-314-413-212 0-317 181-317 413 0 235 108 421 317 421" id="ah"/><path d="M140 405l46-156c120 36 205 19 263-150l32-93L54-1118h197c107 313 237 620 324 950 87-331 219-637 326-950h196L606 167c-68 178-176 259-334 259-64 0-113-12-132-21" id="ai"/><g id="j"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#w"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,12.91232638888889,0)" xlink:href="#U"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,25.390625,0)" xlink:href="#ah"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,38.99739583333333,0)" xlink:href="#ah"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,52.7126736111111,0)" xlink:href="#ai"/></g><path fill="#82755b" d="M750-1118v229H516V0H217v-889H20v-229h197v-86c0-238 156-356 363-356 94 0 178 20 215 31l-54 226c-25-7-61-15-100-15-123-3-131 84-125 200h234" id="aj"/><path fill="#82755b" d="M128 0v-1118h300V0H128zm150-1264c-91 0-165-68-165-154 0-85 74-154 165-154 90 0 165 69 165 154 0 86-75 154-165 154" id="ak"/><path fill="#82755b" d="M128 0v-1118h290v195h12c54-169 184-238 367-200v268c-27-8-86-15-130-15-138 0-239 95-239 234V0H128" id="al"/><path fill="#82755b" d="M633 22C291 22 81-200 81-553c0-345 210-579 537-579 292 0 525 185 525 567v84H378c7 183 109 277 260 277 105 0 184-46 216-132l272 51C1071-99 893 22 633 22zM380-669h474c-15-146-94-237-233-237-143 0-229 99-241 237" id="am"/><path fill="#82755b" d="M361 0L31-1118h315c68 295 127 523 188 845 63-317 128-551 199-845h276c71 296 131 525 196 846 57-321 119-552 186-846h319L1378 0h-305c-73-261-148-486-204-771C813-484 740-261 666 0H361" id="an"/><path fill="#82755b" d="M440 22C227 22 68-92 68-313c0-250 202-322 422-343 195-21 271-24 271-105 0-95-63-149-175-149-116 0-187 57-211 129l-275-46c57-194 237-305 487-305 240 0 474 108 474 379V0H777v-155h-10C713-51 605 22 440 22zm85-211c140 0 238-93 238-211v-121c-37 26-156 42-222 51-111 16-185 59-185 149 0 87 70 132 169 132" id="ao"/><path fill="#82755b" d="M428-1490V0H128v-1490h300" id="ap"/><g id="k"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#aj"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,9.027777777777777,0)" xlink:href="#ak"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,15.049913194444445,0)" xlink:href="#al"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,23.55685763888889,0)" xlink:href="#am"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,36.490885416666664,0)" xlink:href="#an"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,55.32769097222222,0)" xlink:href="#ao"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,68.22916666666667,0)" xlink:href="#ap"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,74.25130208333334,0)" xlink:href="#ap"/></g><path fill="#1071e5" d="M440 22C227 22 68-92 68-313c0-250 202-322 422-343 195-21 271-24 271-105 0-95-63-149-175-149-116 0-187 57-211 129l-275-46c57-194 237-305 487-305 240 0 474 108 474 379V0H777v-155h-10C713-51 605 22 440 22zm85-211c140 0 238-93 238-211v-121c-37 26-156 42-222 51-111 16-185 59-185 149 0 87 70 132 169 132" id="aq"/><path fill="#1071e5" d="M128 418v-1536h295v188h14c41-89 129-202 319-202 248 0 453 193 453 575 0 372-197 576-455 576-183 0-275-108-317-198h-9v597H128zm534-640c156 0 240-139 240-336 0-196-83-334-240-334-154 0-241 131-241 334 0 202 88 336 241 336" id="ar"/><path fill="#1071e5" d="M342-723c-98 0-173-75-173-172s75-172 173-172 173 75 173 172-75 172-173 172zm0 742c-98 0-173-75-173-172s75-172 173-172 173 75 173 172S440 19 342 19" id="as"/><g id="l"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#aq"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,12.901475694444445,0)" xlink:href="#ar"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,26.90972222222222,0)" xlink:href="#ar"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,40.91796875,0)" xlink:href="#as"/></g><path fill="#1071e5" d="M443 0L31-1118h319c90 293 199 572 268 885 66-313 175-593 264-885h315L784 0H443" id="at"/><path fill="#1071e5" d="M428-1490V0H128v-1490h300" id="au"/><path fill="#1071e5" d="M428-647V0H128v-1118h283l4 231c63-156 176-245 348-245 232 0 384 159 384 421V0H847v-659c0-139-76-222-202-222-128 0-217 86-217 234" id="av"/><g id="m"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#at"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.378906249999996,0)" xlink:href="#au"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,19.401041666666664,0)" xlink:href="#aq"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,32.30251736111111,0)" xlink:href="#av"/></g><path fill="#1071e5" d="M124 0v-220l528-495c135-132 210-216 210-336 0-133-98-215-231-215-139 0-229 88-229 233H110c0-290 214-477 523-477 315 0 525 182 525 440 0 167-80 305-385 586L548-262v11h630V0H124" id="aw"/><path fill="#1071e5" d="M690 20C314 20 94-261 94-744c0-482 221-766 596-766 376 0 597 284 597 766 0 483-219 764-597 764zm0-253c184 0 286-184 286-511 0-328-102-514-286-514-183 0-285 187-285 514s101 511 285 511" id="ax"/><g id="n"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#aw"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.997395833333332,0)" xlink:href="#ax"/></g><path fill="#008a0e" d="M572 22C302 22 117-98 78-306l279-48c29 105 101 156 224 156 114 0 185-48 185-115 0-118-228-130-337-155-215-49-322-150-322-317 0-215 187-347 470-347 265 0 424 116 466 298l-266 47c-24-76-87-130-196-130-98 0-174 46-174 113 0 56 38 95 144 117l201 40c216 44 320 143 320 302 0 220-207 367-500 367" id="ay"/><path fill="#008a0e" d="M633 22C291 22 81-200 81-553c0-345 210-579 537-579 292 0 525 185 525 567v84H378c7 183 109 277 260 277 105 0 184-46 216-132l272 51C1071-99 893 22 633 22zM380-669h474c-15-146-94-237-233-237-143 0-229 99-241 237" id="az"/><path fill="#008a0e" d="M628 22C291 22 81-210 81-554c0-346 210-578 547-578 265 0 455 142 497 372l-279 52c-25-116-99-188-215-188-160 0-244 139-244 341 0 200 84 341 244 341 116 0 193-74 217-195l279 51C1085-123 896 22 628 22" id="aA"/><path fill="#008a0e" d="M513 14c-232 0-385-159-385-421v-711h300v659c0 139 76 222 202 222 127 0 217-86 217-234v-647h301V0H864l-4-232C797-74 683 14 513 14" id="aB"/><path fill="#008a0e" d="M128 0v-1118h290v195h12c54-169 184-238 367-200v268c-27-8-86-15-130-15-138 0-239 95-239 234V0H128" id="aC"/><path fill="#008a0e" d="M342-723c-98 0-173-75-173-172s75-172 173-172 173 75 173 172-75 172-173 172zm0 742c-98 0-173-75-173-172s75-172 173-172 173 75 173 172S440 19 342 19" id="aD"/><g id="o"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#ay"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,12.445746527777777,0)" xlink:href="#az"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,25.68359375,0)" xlink:href="#aA"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,38.75868055555556,0)" xlink:href="#aB"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,52.59331597222222,0)" xlink:href="#aC"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,61.100260416666664,0)" xlink:href="#az"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,74.33810763888889,0)" xlink:href="#aD"/></g><path fill="#008a0e" d="M443 0L31-1118h319c90 293 199 572 268 885 66-313 175-593 264-885h315L784 0H443" id="aE"/><path fill="#008a0e" d="M428-1490V0H128v-1490h300" id="aF"/><path fill="#008a0e" d="M440 22C227 22 68-92 68-313c0-250 202-322 422-343 195-21 271-24 271-105 0-95-63-149-175-149-116 0-187 57-211 129l-275-46c57-194 237-305 487-305 240 0 474 108 474 379V0H777v-155h-10C713-51 605 22 440 22zm85-211c140 0 238-93 238-211v-121c-37 26-156 42-222 51-111 16-185 59-185 149 0 87 70 132 169 132" id="aG"/><path fill="#008a0e" d="M428-647V0H128v-1118h283l4 231c63-156 176-245 348-245 232 0 384 159 384 421V0H847v-659c0-139-76-222-202-222-128 0-217 86-217 234" id="aH"/><g id="p"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#aE"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.378906249999996,0)" xlink:href="#aF"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,19.401041666666664,0)" xlink:href="#aG"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,32.30251736111111,0)" xlink:href="#aH"/></g><path fill="#008a0e" d="M659 20C335 20 103-159 99-418h307c5 112 113 185 254 185 147 0 250-83 250-204 0-123-105-209-278-209H494v-227h138c145 0 246-81 246-200 0-115-87-193-216-193-130 0-237 73-240 189H128c4-255 233-433 536-433 306 0 510 185 510 418 0 167-114 285-279 317v11c217 29 333 162 333 347 0 254-237 437-569 437" id="aI"/><path fill="#008a0e" d="M690 20C314 20 94-261 94-744c0-482 221-766 596-766 376 0 597 284 597 766 0 483-219 764-597 764zm0-253c184 0 286-184 286-511 0-328-102-514-286-514-183 0-285 187-285 514s101 511 285 511" id="aJ"/><g id="q"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#aI"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,14.344618055555555,0)" xlink:href="#aJ"/></g><path fill="#82755b" d="M128 418v-1536h295v188h14c41-89 129-202 319-202 248 0 453 193 453 575 0 372-197 576-455 576-183 0-275-108-317-198h-9v597H128zm534-640c156 0 240-139 240-336 0-196-83-334-240-334-154 0-241 131-241 334 0 202 88 336 241 336" id="aK"/><path fill="#82755b" d="M513 14c-232 0-385-159-385-421v-711h300v659c0 139 76 222 202 222 127 0 217-86 217-234v-647h301V0H864l-4-232C797-74 683 14 513 14" id="aL"/><path fill="#82755b" d="M754 19C571 19 479-89 437-179h-14V0H128v-1490h300v560h9c41-89 129-202 319-202 248 0 453 193 453 575 0 372-197 576-455 576zm-92-241c156 0 240-139 240-336 0-196-83-334-240-334-154 0-241 131-241 334 0 202 88 336 241 336" id="aM"/><path fill="#82755b" d="M628 22C291 22 81-210 81-554c0-346 210-578 547-578 265 0 455 142 497 372l-279 52c-25-116-99-188-215-188-160 0-244 139-244 341 0 200 84 341 244 341 116 0 193-74 217-195l279 51C1085-123 896 22 628 22" id="aN"/><path fill="#82755b" d="M975 0v231H0V0h975" id="aO"/><g id="r"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#aK"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,14.008246527777777,0)" xlink:href="#aL"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,27.842881944444443,0)" xlink:href="#aM"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,41.85112847222222,0)" xlink:href="#ap"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,47.873263888888886,0)" xlink:href="#ak"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,53.89539930555556,0)" xlink:href="#aN"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,66.9704861111111,0)" xlink:href="#aO"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,77.54991319444443,0)" xlink:href="#an"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,96.13715277777777,0)" xlink:href="#am"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,109.375,0)" xlink:href="#aM"/></g><path d="M537 14c-226 0-379-139-379-422v-710h180v695c0 172 97 275 253 275 160 0 281-109 281-300v-670h181V0H879v-209C806-46 684 14 537 14" id="aP"/><path d="M338-670V0H158v-1490h180v566c73-149 190-208 336-208 226 0 379 139 379 422V0H872v-695c0-172-96-275-252-275-161 0-282 109-282 300" id="aQ"/><path d="M338-670V0H158v-1118h173l1 207c72-158 192-221 342-221 226 0 378 139 378 422V0H872v-695c0-172-96-275-252-275-161 0-282 109-282 300" id="aR"/><path d="M158 0v-1490h180v865h22l478-493h223L593-638 1096 0H865L456-523 338-412V0H158" id="aS"/><g id="s"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#U"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,12.47829861111111,0)" xlink:href="#aP"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,25.618489583333332,0)" xlink:href="#Q"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,32.88845486111111,0)" xlink:href="#aQ"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,46.02864583333333,0)" xlink:href="#x"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,58.984374999999986,0)" xlink:href="#aR"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,72.11371527777777,0)" xlink:href="#Q"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,79.38368055555554,0)" xlink:href="#z"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,84.76562499999999,0)" xlink:href="#aS"/></g><path fill="#82755b" d="M537 19C279 19 81-185 81-557c0-382 206-575 454-575 190 0 278 113 318 202h10v-560h300V0H868v-179h-15C812-89 719 19 537 19zm92-241c153 0 240-134 240-336 0-203-86-334-240-334-158 0-240 138-240 334 0 197 84 336 240 336" id="aT"/><g id="t"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#ak"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,6.022135416666666,0)" xlink:href="#aT"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,20.030381944444443,0)" xlink:href="#aK"/></g><path fill="#e81313" d="M185-48c-13 30-37 53-82 52C43 2 14-33 14-96s30-98 90-98c62 0 83 45 84 108H66c0 31 8 55 39 56 18 0 30-7 34-22zm-45-69c5-46-57-63-70-21-2 6-4 13-4 21h74" id="aU"/><path fill="#e81313" d="M144 0l-44-69L55 0H2l70-98-66-92h53l41 62 40-62h54l-67 91 71 99h-54" id="aV"/><path fill="#e81313" d="M115-3C79 11 28 4 28-45v-112H4v-33h27l15-45h31v45h36v33H77v99c-1 23 16 31 38 25v30" id="aW"/><path fill="#e81313" d="M135-150c-39-12-60 13-60 57V0H25l-1-190h47c2 13-1 29 3 40 6-28 27-53 61-41v41" id="aX"/><path fill="#e81313" d="M135-194c87-1 58 113 63 194h-50c-7-57 23-157-34-157-59 0-34 97-39 157H25l-1-190h47c2 12-1 28 3 38 12-26 28-41 61-42" id="aY"/><path fill="#e81313" d="M133-34C117-15 103 5 69 4 32 3 11-16 11-54c-1-60 55-63 116-61 1-26-3-47-28-47-18 1-26 9-28 27l-52-2c7-38 36-58 82-57s74 22 75 68l1 82c-1 14 12 18 25 15v27c-30 8-71 5-69-32zm-48 3c29 0 43-24 42-57-32 0-66-3-65 30 0 17 8 27 23 27" id="aZ"/><path fill="#e81313" d="M25 0v-261h50V0H25" id="ba"/><g id="u"><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,0,0)" xlink:href="#aU"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,12.345679012345679,0)" xlink:href="#aV"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,24.691358024691358,0)" xlink:href="#aW"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,32.03703703703704,0)" xlink:href="#aU"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,44.382716049382715,0)" xlink:href="#aX"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,53.02469135802469,0)" xlink:href="#aY"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,66.5432098765432,0)" xlink:href="#aZ"/><use transform="matrix(0.06172839506172839,0,0,0.06172839506172839,78.88888888888889,0)" xlink:href="#ba"/></g><path d="M611 442c-248 0-391-105-460-228l146-94c47 65 117 165 314 165 178 0 307-82 307-266v-224h-17C863-141 792-18 576-18c-268 0-472-195-472-546 0-346 197-568 476-568 216 0 288 133 326 193h17v-179h175V29c0 289-215 413-487 413zm-5-620c203 0 314-146 314-390 0-237-108-403-314-403-213 0-319 180-319 403 0 230 109 390 319 390" id="bb"/><g id="v"><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,0,0)" xlink:href="#N"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,13.606770833333332,0)" xlink:href="#A"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,26.931423611111104,0)" xlink:href="#W"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,38.66102430555555,0)" xlink:href="#Q"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,45.71397569444444,0)" xlink:href="#bb"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,59.342447916666664,0)" xlink:href="#O"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,67.33940972222221,0)" xlink:href="#x"/><use transform="matrix(0.010850694444444444,0,0,0.010850694444444444,80.29513888888889,0)" xlink:href="#W"/></g></defs></g></svg>
@@ -0,0 +1,250 @@
1
+ <!DOCTYPE html><html lang="en" data-astro-cid-5hce7sga> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Get started with Celilo — installation, CLI reference, and module authoring guide."><title>Docs — Celilo</title><link rel="icon" type="image/svg+xml" href="/favicon.svg"><script>
2
+ // Resolve theme BEFORE first paint to avoid the flash of wrong
3
+ // theme. Order: explicit user choice (localStorage) → system
4
+ // preference (prefers-color-scheme) → fallback dark. The
5
+ // resolved value lands on <html data-theme="...">; CSS variables
6
+ // below pick the matching palette.
7
+ (function () {
8
+ try {
9
+ const stored = localStorage.getItem('celilo-theme');
10
+ const sys =
11
+ window.matchMedia &&
12
+ window.matchMedia('(prefers-color-scheme: light)').matches
13
+ ? 'light'
14
+ : 'dark';
15
+ const theme = stored === 'light' || stored === 'dark' ? stored : sys;
16
+ document.documentElement.setAttribute('data-theme', theme);
17
+ } catch (_e) {
18
+ document.documentElement.setAttribute('data-theme', 'dark');
19
+ }
20
+ })();
21
+ </script><link rel="stylesheet" href="/_astro/docs.DwsUauWZ.css">
22
+ <style>.page-header[data-astro-cid-44xb4kzv]{padding:1.5rem 0;border-bottom:1px solid var(--border);margin-bottom:2rem}.page-header[data-astro-cid-44xb4kzv] h1[data-astro-cid-44xb4kzv]{font-size:2.5rem;font-weight:800;letter-spacing:-.03em;margin-bottom:.75rem}.page-header[data-astro-cid-44xb4kzv] p[data-astro-cid-44xb4kzv]{color:var(--muted);font-size:1.05rem}.docs-layout[data-astro-cid-44xb4kzv]{display:grid;grid-template-columns:16rem 1fr;gap:3rem;align-items:start}@media(max-width:680px){.docs-layout[data-astro-cid-44xb4kzv]{grid-template-columns:1fr}}.docs-nav[data-astro-cid-44xb4kzv]{position:sticky;top:5rem;list-style:none}.docs-nav[data-astro-cid-44xb4kzv] li[data-astro-cid-44xb4kzv]{margin-bottom:.15rem}.docs-nav[data-astro-cid-44xb4kzv] a[data-astro-cid-44xb4kzv]{display:block;padding:.45rem .85rem;border-radius:6px;color:var(--muted);font-size:1rem;line-height:1.4;text-decoration:none;transition:all .1s}.docs-nav[data-astro-cid-44xb4kzv] a[data-astro-cid-44xb4kzv]:hover,.docs-nav[data-astro-cid-44xb4kzv] a[data-astro-cid-44xb4kzv].active{color:var(--text);background:var(--surface);text-decoration:none}.docs-nav[data-astro-cid-44xb4kzv] .nav-section[data-astro-cid-44xb4kzv]{font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:.35rem .85rem;margin-top:1.5rem}.docs-content[data-astro-cid-44xb4kzv] a[data-astro-cid-44xb4kzv]{color:var(--link);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--link) 45%,transparent);text-underline-offset:2px;transition:text-decoration-color .1s}.docs-content[data-astro-cid-44xb4kzv] a[data-astro-cid-44xb4kzv]:hover{text-decoration-color:var(--link)}.docs-content[data-astro-cid-44xb4kzv] h2[data-astro-cid-44xb4kzv]{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin:2.5rem 0 1rem;padding-top:2.5rem;border-top:1px solid var(--border)}.docs-content[data-astro-cid-44xb4kzv] h2[data-astro-cid-44xb4kzv]:first-child{margin-top:0;padding-top:0;border-top:none}.docs-content[data-astro-cid-44xb4kzv] h3[data-astro-cid-44xb4kzv]{font-size:1.1rem;font-weight:600;margin:1.75rem 0 .75rem}.docs-content[data-astro-cid-44xb4kzv] p[data-astro-cid-44xb4kzv]{color:var(--muted);margin-bottom:1rem;line-height:1.75}.docs-content[data-astro-cid-44xb4kzv] ul[data-astro-cid-44xb4kzv],.docs-content[data-astro-cid-44xb4kzv] ol[data-astro-cid-44xb4kzv]{color:var(--muted);padding-left:1.5rem;margin-bottom:1rem;line-height:1.75}.docs-content[data-astro-cid-44xb4kzv] li[data-astro-cid-44xb4kzv]{margin-bottom:.25rem}.docs-content[data-astro-cid-44xb4kzv] pre[data-astro-cid-44xb4kzv]{margin:1.25rem 0}.docs-content[data-astro-cid-44xb4kzv] p[data-astro-cid-44xb4kzv]+pre[data-astro-cid-44xb4kzv],.docs-content[data-astro-cid-44xb4kzv] ul[data-astro-cid-44xb4kzv]+pre[data-astro-cid-44xb4kzv],.docs-content[data-astro-cid-44xb4kzv] ol[data-astro-cid-44xb4kzv]+pre[data-astro-cid-44xb4kzv]{margin-top:-.25rem}.docs-content[data-astro-cid-44xb4kzv] p[data-astro-cid-44xb4kzv]:has(+pre),.docs-content[data-astro-cid-44xb4kzv] ul[data-astro-cid-44xb4kzv]:has(+pre),.docs-content[data-astro-cid-44xb4kzv] ol[data-astro-cid-44xb4kzv]:has(+pre){margin-bottom:.6rem}.docs-content[data-astro-cid-44xb4kzv] pre[data-astro-cid-44xb4kzv]+pre[data-astro-cid-44xb4kzv]{margin-top:.4rem}.callout[data-astro-cid-44xb4kzv]{background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:8px;padding:1rem 1.25rem;margin:1.25rem 0;font-size:.9rem;color:var(--text)}.callout[data-astro-cid-44xb4kzv] strong[data-astro-cid-44xb4kzv]{color:var(--accent)}
23
+ </style></head> <body data-astro-cid-5hce7sga> <!--
24
+ Background pattern — vertical streams of falling water drawn in
25
+ the geometric vocabulary of a Greek meander. The <pattern>
26
+ tile (240×240) repeats seamlessly across the viewport. Strokes
27
+ use `currentColor` so the .bg-pattern CSS rule above can tint
28
+ them via `color: var(--bg-pattern-color)` without rebuilding
29
+ the SVG. To change the streams themselves, edit the four <path>
30
+ elements below.
31
+ --> <svg class="bg-pattern" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-astro-cid-5hce7sga> <defs data-astro-cid-5hce7sga> <pattern id="celilo-streams" width="240" height="240" patternUnits="userSpaceOnUse" data-astro-cid-5hce7sga> <!-- Streams flow downward — the patternTransform shifts the
32
+ pattern origin by one full tile (240px) over `dur`, then
33
+ loops seamlessly. Edit `dur` for speed; delete this
34
+ <animateTransform> to freeze the flow. --> <animateTransform attributeName="patternTransform" type="translate" from="0 0" to="0 240" dur="30s" repeatCount="indefinite" data-astro-cid-5hce7sga></animateTransform> <g fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" data-astro-cid-5hce7sga> <!-- Stroke color cycle — driven by SMIL inside the SVG
35
+ (not CSS `color`) because Chromium doesn't reliably
36
+ repaint strokes that resolve via currentColor when
37
+ the parent's CSS `color` is animated. Edit the
38
+ `values` list to pick your palette; semicolons
39
+ separate stops, last value should match first to
40
+ close the loop seamlessly. --> <animate attributeName="stroke" values="#818cf8;#f472b6;#4ade80;#22d3ee;#818cf8" dur="10s" repeatCount="indefinite" data-astro-cid-5hce7sga></animate> <!-- Stream A (x=40): big staircase cascade near top, single hook near bottom --> <path d="M 40,0 V 30 H 55 V 45 H 70 V 60 H 55 V 75 H 40 V 175 H 25 V 195 H 40 V 240" data-astro-cid-5hce7sga></path> <!-- Stream B (x=100): small step near top, three-tier cascade in middle --> <path d="M 100,0 V 60 H 85 V 80 H 100 V 130 H 115 V 145 H 130 V 160 H 115 V 175 H 100 V 240" data-astro-cid-5hce7sga></path> <!-- Stream C (x=160): three small hooks distributed top-to-bottom --> <path d="M 160,0 V 20 H 175 V 35 H 160 V 110 H 145 V 130 H 160 V 200 H 175 V 220 H 160 V 240" data-astro-cid-5hce7sga></path> <!-- Stream D (x=220): single deep cascade in the upper-middle --> <path d="M 220,0 V 85 H 205 V 100 H 190 V 115 H 220 V 240" data-astro-cid-5hce7sga></path> </g> </pattern> </defs> <rect width="100%" height="100%" fill="url(#celilo-streams)" data-astro-cid-5hce7sga></rect> </svg> <nav data-astro-cid-5hce7sga> <div class="nav-inner" data-astro-cid-5hce7sga> <a href="/" class="nav-logo" data-astro-cid-5hce7sga>celilo</a> <ul class="nav-links" data-astro-cid-5hce7sga> <li data-astro-cid-5hce7sga> <a href="/docs" data-astro-cid-5hce7sga> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <path d="M4 5a2 2 0 0 1 2-2h11v18H6a2 2 0 0 1-2-2V5z" data-astro-cid-5hce7sga></path> <path d="M9 7h6M9 11h6M9 15h4" data-astro-cid-5hce7sga></path> </svg>
41
+ docs
42
+ </a> </li> <li data-astro-cid-5hce7sga> <a href="/modules" data-astro-cid-5hce7sga> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <rect x="3" y="3" width="7" height="7" rx="1" data-astro-cid-5hce7sga></rect> <rect x="14" y="3" width="7" height="7" rx="1" data-astro-cid-5hce7sga></rect> <rect x="3" y="14" width="7" height="7" rx="1" data-astro-cid-5hce7sga></rect> <rect x="14" y="14" width="7" height="7" rx="1" data-astro-cid-5hce7sga></rect> </svg>
43
+ modules
44
+ </a> </li> <li data-astro-cid-5hce7sga> <a href="/vision" data-astro-cid-5hce7sga> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z" data-astro-cid-5hce7sga></path> <circle cx="12" cy="12" r="3" data-astro-cid-5hce7sga></circle> </svg>
45
+ vision
46
+ </a> </li> <li data-astro-cid-5hce7sga> <a href="https://github.com/celilo/celilo" target="_blank" rel="noopener" data-astro-cid-5hce7sga> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <path d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21" data-astro-cid-5hce7sga></path> </svg>
47
+ github
48
+ </a> </li> <li data-astro-cid-5hce7sga> <button type="button" class="theme-toggle" id="theme-toggle" aria-label="Toggle light/dark theme" title="Toggle theme" data-astro-cid-5hce7sga> <svg class="icon-sun" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <circle cx="12" cy="12" r="4" data-astro-cid-5hce7sga></circle> <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41" data-astro-cid-5hce7sga></path> </svg> <svg class="icon-moon" viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-5hce7sga> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" data-astro-cid-5hce7sga></path> </svg> </button> </li> </ul> </div> </nav> <script>
49
+ // Click handler for the toggle. Reads the current data-theme,
50
+ // flips it, persists to localStorage, applies to <html>. The
51
+ // resolution script in <head> already set the initial value
52
+ // (system-aware) before paint, so this only runs on user
53
+ // interaction.
54
+ (function () {
55
+ const btn = document.getElementById('theme-toggle');
56
+ if (!btn) return;
57
+ btn.addEventListener('click', function () {
58
+ const current = document.documentElement.getAttribute('data-theme');
59
+ const next = current === 'light' ? 'dark' : 'light';
60
+ document.documentElement.setAttribute('data-theme', next);
61
+ try {
62
+ localStorage.setItem('celilo-theme', next);
63
+ } catch (_e) {
64
+ // localStorage unavailable (private mode) — toggle still
65
+ // works for the session, just doesn't persist.
66
+ }
67
+ });
68
+ })();
69
+ </script> <main data-astro-cid-5hce7sga> <div class="page-header" data-astro-cid-44xb4kzv> <h1 data-astro-cid-44xb4kzv>Documentation</h1> <p data-astro-cid-44xb4kzv>Get Celilo running in your home lab in minutes.</p> </div> <div class="docs-layout" data-astro-cid-44xb4kzv> <nav data-astro-cid-44xb4kzv> <ul class="docs-nav" data-astro-cid-44xb4kzv> <li class="nav-section" data-astro-cid-44xb4kzv>Get started</li> <li data-astro-cid-44xb4kzv><a href="#install" data-astro-cid-44xb4kzv>1. Install Celilo</a></li> <li data-astro-cid-44xb4kzv><a href="#proxmox" data-astro-cid-44xb4kzv>2. Add a Proxmox service</a></li> <li data-astro-cid-44xb4kzv><a href="#namecheap" data-astro-cid-44xb4kzv>3. Set up Namecheap</a></li> <li data-astro-cid-44xb4kzv><a href="#iptables" data-astro-cid-44xb4kzv>4. Add a router & iptables</a></li> <li data-astro-cid-44xb4kzv><a href="#caddy-authentik" data-astro-cid-44xb4kzv>5. Deploy Caddy & Authentik</a></li> <li data-astro-cid-44xb4kzv><a href="#web-app" data-astro-cid-44xb4kzv>6. Write a web app</a></li> <li class="nav-section" data-astro-cid-44xb4kzv>Reference</li> <li data-astro-cid-44xb4kzv><a href="#concepts" data-astro-cid-44xb4kzv>Core concepts</a></li> <li data-astro-cid-44xb4kzv><a href="#module-commands" data-astro-cid-44xb4kzv>Module commands</a></li> <li data-astro-cid-44xb4kzv><a href="#service-commands" data-astro-cid-44xb4kzv>Service commands</a></li> <li data-astro-cid-44xb4kzv><a href="#machine-commands" data-astro-cid-44xb4kzv>Machine commands</a></li> <li data-astro-cid-44xb4kzv><a href="#authoring" data-astro-cid-44xb4kzv>Authoring modules</a></li> <li data-astro-cid-44xb4kzv><a href="#capabilities" data-astro-cid-44xb4kzv>Capabilities</a></li> </ul> </nav> <article class="docs-content" data-astro-cid-44xb4kzv> <p data-astro-cid-44xb4kzv>
70
+ This walkthrough takes you from a fresh laptop to a working home-lab stack with
71
+ Proxmox containers, automatic DNS, HTTPS, and single sign-on — and shows you how to
72
+ plug your own web app into it. Plan for about an hour the first time through.
73
+ </p> <div class="callout" data-astro-cid-44xb4kzv> <strong data-astro-cid-44xb4kzv>Before you start, you'll need:</strong>
74
+ a <a href="https://pve.proxmox.com/wiki/Install_Proxmox_VE" target="_blank" rel="noopener" data-astro-cid-44xb4kzv>Proxmox host</a>
75
+ on your LAN with an
76
+ <a href="https://pve.proxmox.com/wiki/User_Management#pveum_tokens" target="_blank" rel="noopener" data-astro-cid-44xb4kzv>API token</a>;
77
+ a Namecheap-registered domain with
78
+ <a href="https://www.namecheap.com/support/knowledgebase/article.aspx/29/11/how-do-i-enable-dynamic-dns-for-a-domain/" target="_blank" rel="noopener" data-astro-cid-44xb4kzv>Dynamic DNS enabled</a>;
79
+ a small Linux box (Raspberry Pi, mini-PC, or VM) to act as your
80
+ <a href="/docs/network" data-astro-cid-44xb4kzv>edge router</a>; and
81
+ <a href="https://www.ssh.com/academy/ssh/keygen" target="_blank" rel="noopener" data-astro-cid-44xb4kzv>SSH access</a>
82
+ to all of them.
83
+ </div> <h2 id="install" data-astro-cid-44xb4kzv>1. Install Celilo</h2> <p data-astro-cid-44xb4kzv>One command installs <a href="https://bun.sh" target="_blank" rel="noopener" data-astro-cid-44xb4kzv>Bun</a>
84
+ (the runtime Celilo runs on), the Celilo CLI, and the e2e test harness:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>curl -fsSL https://celilo.computer/install.sh | bash</code></pre> <p data-astro-cid-44xb4kzv>The script is idempotent and walks you through the interactive bits at the end. It will:</p> <ol data-astro-cid-44xb4kzv> <li data-astro-cid-44xb4kzv>Install Bun if it's not already present.</li> <li data-astro-cid-44xb4kzv>Install <code data-astro-cid-44xb4kzv>@celilo/cli</code>, <code data-astro-cid-44xb4kzv>@celilo/event-bus</code>, and
85
+ <code data-astro-cid-44xb4kzv>@celilo/e2e</code> as global Bun packages.</li> <li data-astro-cid-44xb4kzv>Print the line to add to your shell rc (<code data-astro-cid-44xb4kzv>~/.zshrc</code> for zsh,
86
+ <code data-astro-cid-44xb4kzv>~/.bashrc</code> for bash) so <code data-astro-cid-44xb4kzv>celilo</code> stays on your
87
+ <code data-astro-cid-44xb4kzv>$PATH</code> in new shells.</li> <li data-astro-cid-44xb4kzv>Run <code data-astro-cid-44xb4kzv>celilo system init</code> — interactive; asks for your network
88
+ subnets (DMZ, app, secure, internal), DNS resolvers, and an SSH public key
89
+ Celilo can use to reach machines.</li> </ol> <p data-astro-cid-44xb4kzv>The script does <em data-astro-cid-44xb4kzv>not</em> install the event-bus daemon as a system service.
90
+ Once you've decided you like Celilo and want deploy progress streamed somewhere
91
+ persistent, you can add it with <code data-astro-cid-44xb4kzv>celilo events install-daemon</code> — but
92
+ first-time tire-kickers don't need a system service running.</p> <p data-astro-cid-44xb4kzv>Read the script before piping it to your shell if you'd like —
93
+ <a href="/install.sh" data-astro-cid-44xb4kzv>view the source</a>.</p> <p data-astro-cid-44xb4kzv>If you want the packages but not the interactive <code data-astro-cid-44xb4kzv>system init</code>
94
+ (e.g. for CI), pass <code data-astro-cid-44xb4kzv>--skip-init</code>:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>curl -fsSL https://celilo.computer/install.sh | bash -s -- --skip-init</code></pre> <p data-astro-cid-44xb4kzv>Then verify:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo --version</code></pre> <p data-astro-cid-44xb4kzv>You can re-run <code data-astro-cid-44xb4kzv>system init</code> any time. To take all defaults, or override
95
+ specific values inline:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo system init --accept-defaults
96
+ celilo system init network.dmz.subnet=10.0.10.0/24</code></pre> <h2 id="proxmox" data-astro-cid-44xb4kzv>2. Add a Proxmox service</h2> <p data-astro-cid-44xb4kzv>
97
+ A <em data-astro-cid-44xb4kzv>service</em> is an infrastructure provider Celilo can provision new compute
98
+ on — Proxmox creates LXC containers; a Digital Ocean account would create droplets;
99
+ another adapter could provision VMs on bare-metal libvirt or anything else with an
100
+ API. Modules declare what they need (CPU, memory, disk, zone) and the service
101
+ provides something that meets those requirements. Proxmox is the path this
102
+ walkthrough takes; the abstraction is open for extension.
103
+ </p> <p data-astro-cid-44xb4kzv>Before running the next command, create an API token in the Proxmox UI
104
+ (<em data-astro-cid-44xb4kzv>Datacenter → Permissions → API Tokens</em>) and copy the secret somewhere safe —
105
+ Proxmox only shows it once.</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo service add proxmox</code></pre> <p data-astro-cid-44xb4kzv>You'll be prompted for:</p> <ul data-astro-cid-44xb4kzv> <li data-astro-cid-44xb4kzv>A human-readable name (e.g. <code data-astro-cid-44xb4kzv>Proxmox Home Lab</code>)</li> <li data-astro-cid-44xb4kzv>Which zones this service can host containers in (multi-select: dmz, app, secure, internal)</li> <li data-astro-cid-44xb4kzv>Proxmox IP, API port (default <code data-astro-cid-44xb4kzv>8006</code>), token ID (default <code data-astro-cid-44xb4kzv>root@pam!celilo</code>) and the token secret you just created</li> <li data-astro-cid-44xb4kzv>Default target node (default <code data-astro-cid-44xb4kzv>pve</code>) and storage (default <code data-astro-cid-44xb4kzv>local-lvm</code>)</li> <li data-astro-cid-44xb4kzv>An Ubuntu LTS version for the container template (24.04 / 22.04 / 20.04)</li> </ul> <p data-astro-cid-44xb4kzv>Celilo tests the API connection at the end and offers to download the chosen Ubuntu
106
+ template into Proxmox so it's ready when modules need it.</p> <h2 id="namecheap" data-astro-cid-44xb4kzv>3. Set up the Namecheap registrar</h2> <p data-astro-cid-44xb4kzv>The <code data-astro-cid-44xb4kzv>namecheap</code> module provides the <code data-astro-cid-44xb4kzv>dns_registrar</code> capability —
107
+ every other module that needs a public DNS record (Caddy, Authentik, your web app)
108
+ will reach for it automatically.</p> <p data-astro-cid-44xb4kzv>First, in the Namecheap UI, enable Dynamic DNS for each domain you want Celilo to
109
+ manage and copy the DDNS password it generates (<em data-astro-cid-44xb4kzv>Domain List → Advanced DNS →
110
+ Dynamic DNS</em>).</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo module import namecheap
111
+ celilo module generate namecheap</code></pre> <p data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>module generate</code> prompts for any required config or secrets it doesn't
112
+ already have:</p> <ul data-astro-cid-44xb4kzv> <li data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>domains</code> — the list of domains you'll manage. The first one is treated as primary.</li> <li data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>ddns_passwords</code> — a JSON object mapping each domain to its DDNS password.</li> </ul> <p data-astro-cid-44xb4kzv>You can also set values non-interactively:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo module config set namecheap domains '["example.com"]'
113
+ celilo module config set namecheap ddns_passwords '&#123;"example.com":"&lt;your-ddns-password&gt;"&#125;'</code></pre> <p data-astro-cid-44xb4kzv>Then deploy:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo module deploy namecheap</code></pre> <h2 id="iptables" data-astro-cid-44xb4kzv>4. Add an edge router and install iptables</h2> <p data-astro-cid-44xb4kzv>The <code data-astro-cid-44xb4kzv>iptables</code> module turns a small Linux box into your home-lab router and
114
+ provides the <code data-astro-cid-44xb4kzv>firewall</code> capability — port forwarding, NAT, and DNAT for every
115
+ service you expose. Unlike Caddy or Authentik (which Celilo provisions as new Proxmox
116
+ containers), iptables runs on an <em data-astro-cid-44xb4kzv>existing</em> machine, because that machine
117
+ <em data-astro-cid-44xb4kzv>is</em> the network boundary.</p> <p data-astro-cid-44xb4kzv>Register the router as a machine. Replace the IP with whatever your router box uses:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo machine add 192.168.1.1 --ssh-user root --earmark iptables</code></pre> <p data-astro-cid-44xb4kzv>Celilo SSHes in, auto-detects hostname, OS, CPU, memory, network interfaces, and
118
+ figures out which zone each interface belongs to based on your subnet config. The
119
+ <code data-astro-cid-44xb4kzv>--earmark iptables</code> flag reserves this machine for the iptables module so
120
+ no other module tries to land on it.</p> <p data-astro-cid-44xb4kzv>Then install and deploy:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo module import iptables
121
+ celilo module generate iptables
122
+ celilo module deploy iptables</code></pre> <p data-astro-cid-44xb4kzv>You'll be asked which zones this firewall services (typically all of dmz, app,
123
+ secure, internal). The NAT IP and per-zone IPs are derived automatically from the
124
+ machine you just added.</p> <div class="callout" data-astro-cid-44xb4kzv> <strong data-astro-cid-44xb4kzv>Why a real machine?</strong> Caddy and Authentik are <em data-astro-cid-44xb4kzv>workloads</em> — Celilo
125
+ builds them fresh each time. The firewall is <em data-astro-cid-44xb4kzv>infrastructure</em> — it has to exist
126
+ before anything can route through it, so you bring your own.
127
+ </div> <h2 id="caddy-authentik" data-astro-cid-44xb4kzv>5. Deploy Caddy and Authentik</h2> <p data-astro-cid-44xb4kzv>Now the foundations are in place: Proxmox can spawn containers, Namecheap can
128
+ publish DNS, and iptables can forward traffic. Caddy and Authentik just need a few
129
+ app-specific values and they'll land on their own.</p> <h3 data-astro-cid-44xb4kzv>Caddy — HTTPS reverse proxy</h3> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo module import caddy
130
+ celilo module generate caddy
131
+ celilo module deploy caddy</code></pre> <p data-astro-cid-44xb4kzv>You'll be asked for:</p> <ul data-astro-cid-44xb4kzv> <li data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>hostnames</code> — FQDNs Caddy should serve (e.g. <code data-astro-cid-44xb4kzv>["www.example.com"]</code>). The first is canonical.</li> <li data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>acme_email</code> — contact email Let's Encrypt uses for cert notifications.</li> </ul> <p data-astro-cid-44xb4kzv>That's it. Celilo provisions an LXC container on Proxmox in the dmz zone, calls
132
+ <code data-astro-cid-44xb4kzv>firewall.exposeService</code> on the iptables module to open ports 80/443 and
133
+ DNAT them inbound, calls <code data-astro-cid-44xb4kzv>dns_registrar.registerHost</code> on namecheap to point
134
+ each hostname at your public IP, and lets Caddy fetch real Let's Encrypt certs over
135
+ the resulting public path.</p> <h3 data-astro-cid-44xb4kzv>Authentik — single sign-on</h3> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo module import authentik
136
+ celilo module generate authentik
137
+ celilo module deploy authentik</code></pre> <p data-astro-cid-44xb4kzv>The only thing Authentik insists on is <code data-astro-cid-44xb4kzv>admin_email</code>. Database password,
138
+ bootstrap token, and signing key are auto-generated and stored encrypted; the
139
+ hostname (<code data-astro-cid-44xb4kzv>auth.&lt;your-primary-domain&gt;</code>), ACME cert, and DNS record
140
+ come from Caddy and Namecheap automatically.</p> <p data-astro-cid-44xb4kzv>When the deploy finishes, log into <code data-astro-cid-44xb4kzv>https://auth.your-domain.com</code> with
141
+ the admin email and the password Celilo printed during generation.</p> <h2 id="web-app" data-astro-cid-44xb4kzv>6. Write a web app that uses these capabilities</h2> <p data-astro-cid-44xb4kzv>There's no scaffolder yet — the simplest path is to copy an existing module
142
+ directory and edit it. <code data-astro-cid-44xb4kzv>modules/celilo-website</code> is a good reference: it's a
143
+ static Astro site that uses <code data-astro-cid-44xb4kzv>public_web</code> for hosting and
144
+ <code data-astro-cid-44xb4kzv>dns_registrar</code> for its hostname.</p> <p data-astro-cid-44xb4kzv>The minimum manifest for an app that wants HTTPS, DNS, and SSO looks like this:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv># my-app/manifest.yml
145
+ celilo_contract: "1.0"
146
+ id: my-app
147
+ name: My App
148
+ version: 1.0.0
149
+ description: "A web app behind Caddy and Authentik"
150
+
151
+ requires:
152
+ capabilities:
153
+ - name: public_web # Caddy gives me HTTPS + a route
154
+ version: 3.0.0
155
+ - name: dns_registrar # Namecheap gives me a public hostname
156
+ version: 4.0.0
157
+ - name: idp # Authentik gives me OIDC sign-in
158
+ version: 1.0.0
159
+
160
+ variables:
161
+ owns:
162
+ - name: subdomain
163
+ type: string
164
+ required: true
165
+ description: "Subdomain to serve on (e.g. 'app' for app.example.com)"
166
+ source: user
167
+ imports: []
168
+
169
+ secrets:
170
+ declares: []
171
+
172
+ hooks:
173
+ on_install:
174
+ script: ./scripts/on-install.ts
175
+ timeout: 120000
176
+ health_check:
177
+ script: ./scripts/health-check.ts
178
+ timeout: 60000</code></pre> <p data-astro-cid-44xb4kzv>The <code data-astro-cid-44xb4kzv>on_install</code> hook is where you wire the capabilities together. Each
179
+ capability arrives as a typed function on <code data-astro-cid-44xb4kzv>ctx.capabilities</code>:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>// my-app/scripts/on-install.ts
180
+ import type &#123; HookContext &#125; from '@celilo/capabilities';
181
+
182
+ export default async function onInstall(ctx: HookContext) &#123;
183
+ const fqdn = `$&#123;ctx.config.subdomain&#125;.$&#123;ctx.capabilities.dns_registrar.primary_domain&#125;`;
184
+
185
+ // 1. Open a public DNS record pointing at our firewall's external IP
186
+ const &#123; ip &#125; = await ctx.capabilities.firewall.exposeService(&#123;
187
+ internal_host: ctx.machine.hostname,
188
+ internal_port: 8080,
189
+ public_port: 443,
190
+ &#125;);
191
+ await ctx.capabilities.dns_registrar.registerHost(&#123; host: fqdn, ip &#125;);
192
+
193
+ // 2. Register an OIDC client with Authentik
194
+ const oidc = await ctx.capabilities.idp.createOidcClient(&#123;
195
+ name: 'my-app',
196
+ redirect_uris: [`https://$&#123;fqdn&#125;/auth/callback`],
197
+ &#125;);
198
+
199
+ // 3. Tell Caddy to reverse-proxy https://&lt;fqdn&gt; to my container
200
+ await ctx.capabilities.public_web.registerRoute(&#123;
201
+ hostname: fqdn,
202
+ upstream: `http://$&#123;ctx.machine.hostname&#125;:8080`,
203
+ &#125;);
204
+
205
+ // oidc.client_id and oidc.client_secret are now available to your app
206
+ &#125;</code></pre> <p data-astro-cid-44xb4kzv>Build, import, and deploy your module:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo module pack ./my-app # creates my-app-1.0.0+1.netapp
207
+ celilo module import ./my-app-1.0.0+1.netapp
208
+ celilo module generate my-app
209
+ celilo module deploy my-app</code></pre> <p data-astro-cid-44xb4kzv>When the deploy finishes you'll have a public URL with HTTPS, a DNS record that
210
+ survives IP changes, and an OIDC integration with Authentik — none of which you had
211
+ to configure by hand.</p> <div class="callout" data-astro-cid-44xb4kzv> <strong data-astro-cid-44xb4kzv>What's next?</strong> Read the <a href="/modules" data-astro-cid-44xb4kzv>module catalogue</a> for
212
+ the full list of capabilities you can compose, or jump to
213
+ <a href="#authoring" data-astro-cid-44xb4kzv>Authoring modules</a> below for hooks, secrets, and Terraform
214
+ templates.
215
+ </div> <h2 id="concepts" data-astro-cid-44xb4kzv>Core concepts</h2> <h3 data-astro-cid-44xb4kzv>Modules</h3> <p data-astro-cid-44xb4kzv>
216
+ A module is a self-contained infrastructure unit — a DNS server, a reverse proxy, an identity
217
+ provider. Each module declares its capabilities, requirements, and secrets. Celilo handles
218
+ dependency resolution, provisioning, and wiring.
219
+ </p> <h3 data-astro-cid-44xb4kzv>Capabilities</h3> <p data-astro-cid-44xb4kzv>
220
+ Capabilities are typed interfaces between modules. A module that provides <code data-astro-cid-44xb4kzv>dns_registrar</code>
221
+ can register DNS records; any module that requires it gets that function injected automatically.
222
+ No hardcoded hostnames or IPs needed.
223
+ </p> <h3 data-astro-cid-44xb4kzv>Machines and services</h3> <p data-astro-cid-44xb4kzv>
224
+ A <em data-astro-cid-44xb4kzv>machine</em> is an existing host (Raspberry Pi, VPS, bare metal) that Celilo can SSH into.
225
+ A <em data-astro-cid-44xb4kzv>service</em> is a container host (Proxmox, Digital Ocean) that Celilo can provision new
226
+ containers on. Modules run on whichever infrastructure is available in their zone.
227
+ </p> <h2 id="module-commands" data-astro-cid-44xb4kzv>Module commands</h2> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo module list # List installed modules
228
+ celilo module import &lt;name&gt; # Install from registry
229
+ celilo module import &lt;path&gt; # Import local module
230
+ celilo module remove &lt;name&gt; # Remove a module
231
+ celilo module config &lt;name&gt; # Edit module configuration
232
+ celilo module health &lt;name&gt; # Run health check
233
+ celilo module deploy &lt;name&gt; # Re-run on_install hook</code></pre> <h2 id="service-commands" data-astro-cid-44xb4kzv>Service commands</h2> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo service list # List container services (Proxmox, DO...)
234
+ celilo service add # Add a container service
235
+ celilo service remove &lt;name&gt;</code></pre> <h2 id="machine-commands" data-astro-cid-44xb4kzv>Machine commands</h2> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo machine list # List known machines
236
+ celilo machine add # Add a machine (VPS, Pi, bare metal)
237
+ celilo machine remove &lt;host&gt;</code></pre> <h2 id="authoring" data-astro-cid-44xb4kzv>Authoring modules</h2> <p data-astro-cid-44xb4kzv>
238
+ A Celilo module is a directory with a <code data-astro-cid-44xb4kzv>manifest.yml</code> and optional
239
+ TypeScript hook scripts, Terraform templates, and Ansible playbooks.
240
+ </p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>my-module/
241
+ ├── manifest.yml # Module declaration
242
+ ├── celilo/
243
+ │ └── types.d.ts # Generated config types
244
+ ├── scripts/
245
+ │ ├── package.json
246
+ │ ├── on-install.ts # Hook scripts (TypeScript)
247
+ │ └── health-check.ts
248
+ ├── terraform/ # Terraform templates (.tpl)
249
+ └── ansible/ # Ansible playbooks</code></pre> <p data-astro-cid-44xb4kzv>Package your module for distribution:</p> <pre data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>celilo module build my-module # Runs build.command from manifest
250
+ celilo module pack my-module # Creates my-module-1.0.0+1.netapp</code></pre> <h2 id="capabilities" data-astro-cid-44xb4kzv>Built-in capabilities</h2> <ul data-astro-cid-44xb4kzv> <li data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>public_web</code> — HTTPS reverse proxy and static site hosting (Caddy)</li> <li data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>dns_registrar</code> — DNS A record registration (Namecheap, others)</li> <li data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>dns_internal</code> — Internal DNS resolution (Knot + Unbound)</li> <li data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>firewall</code> — Port forwarding and NAT (Greenwave, iptables)</li> <li data-astro-cid-44xb4kzv><code data-astro-cid-44xb4kzv>idp</code> — OIDC identity provider (Authentik)</li> </ul> </article> </div> </main> <footer data-astro-cid-5hce7sga> <p data-astro-cid-5hce7sga>Celilo — home lab orchestration. Built with care.</p> </footer> </body></html>