@llamaventures/cli 1.17.2 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_BRIEFING.md +3 -1
- package/CHANGELOG.md +24 -1
- package/README.md +105 -375
- package/README.zh-CN.md +107 -339
- package/bin/llama-mcp.mjs +35 -0
- package/bin/llama.mjs +79 -0
- package/package.json +1 -5
- package/CONTRIBUTING.md +0 -100
- package/SECURITY.md +0 -62
- package/assets/llama-ventures-logo.svg +0 -25
- package/scripts/verify-agent-routing.mjs +0 -816
package/bin/llama.mjs
CHANGED
|
@@ -291,6 +291,38 @@ async function searchDeals(q, flags) {
|
|
|
291
291
|
return result;
|
|
292
292
|
}
|
|
293
293
|
|
|
294
|
+
function buildActivityQuery(kind, flags) {
|
|
295
|
+
const params = new URLSearchParams({ kind });
|
|
296
|
+
const mappings = [
|
|
297
|
+
["since", "since"],
|
|
298
|
+
["limit", "limit"],
|
|
299
|
+
["cursor", "cursor"],
|
|
300
|
+
["before-id", "before_id"],
|
|
301
|
+
["before_id", "before_id"],
|
|
302
|
+
["deal", "deal"],
|
|
303
|
+
["deal-id", "deal_id"],
|
|
304
|
+
["deal_id", "deal_id"],
|
|
305
|
+
["entity", "entity"],
|
|
306
|
+
["min-sig", "min_sig"],
|
|
307
|
+
["min_sig", "min_sig"],
|
|
308
|
+
["min-significance", "min_sig"],
|
|
309
|
+
];
|
|
310
|
+
for (const [flag, param] of mappings) {
|
|
311
|
+
if (flags[flag] !== undefined && flags[flag] !== true) {
|
|
312
|
+
params.set(param, String(flags[flag]));
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
for (const verb of splitCsvFlag(flags.verb) ?? []) {
|
|
316
|
+
params.append("verb", verb);
|
|
317
|
+
}
|
|
318
|
+
return params;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
async function fetchActivity(kind, flags) {
|
|
322
|
+
const params = buildActivityQuery(kind, flags);
|
|
323
|
+
return request("GET", `/api/agent/activity?${params}`);
|
|
324
|
+
}
|
|
325
|
+
|
|
294
326
|
function splitCsvFlag(value) {
|
|
295
327
|
if (!value || value === true) return undefined;
|
|
296
328
|
return String(value)
|
|
@@ -367,6 +399,8 @@ Agent onboarding (run once on first install):
|
|
|
367
399
|
llama agent bootstrap # fetch live Command + Llama OS skill manifest
|
|
368
400
|
llama skills search "pipeline update" # discover relevant runtime skills
|
|
369
401
|
llama skills show llama-pipeline # read a skill from Command
|
|
402
|
+
llama activity new-deals --since 24h # recent deal creations for agents
|
|
403
|
+
llama activity updated-deals --since 7d # meaningful deal updates, grouped
|
|
370
404
|
llama explain <url-or-object> # explain Command URL/object status + lifecycle
|
|
371
405
|
llama eval good|bad --last # mark the latest CLI/MCP result for eval
|
|
372
406
|
llama eval add "<query>" --expect wiki:<slug>|deal:<uuid>
|
|
@@ -418,6 +452,13 @@ Deals:
|
|
|
418
452
|
[--limit 200] [--offset 0]
|
|
419
453
|
llama deal list [--owner ...] [--status ...] [...same flags as search]
|
|
420
454
|
|
|
455
|
+
Agent activity (read-only, cheap read model over append-only activity):
|
|
456
|
+
llama activity new-deals [--since 24h|7d|<ISO>] [--limit 50]
|
|
457
|
+
llama activity updated-deals [--since 24h|7d|<ISO>] [--limit 50] [--deal <uuid>]
|
|
458
|
+
llama activity events [--since 24h] [--verb fact.added,brief.revised] [--entity deal|wiki|all]
|
|
459
|
+
Use this before scanning raw timelines or event-bus payloads. It returns
|
|
460
|
+
JSON from Command's curated activity_events projection: source ids included.
|
|
461
|
+
|
|
421
462
|
Collaborators (besides owner — attribution candidates, no approval):
|
|
422
463
|
llama deal collab list <dealId>
|
|
423
464
|
llama deal collab add <dealId> --user <userId|email>
|
|
@@ -614,6 +655,8 @@ Common:
|
|
|
614
655
|
llama deal show <dealId> full deal record
|
|
615
656
|
llama deal feed <dealId> every contribution (facts + notes), newest first
|
|
616
657
|
llama post <dealId> "..." add a note to a deal
|
|
658
|
+
llama activity new-deals --since 24h recent deal creations
|
|
659
|
+
llama activity updated-deals --since 7d meaningful deal updates
|
|
617
660
|
llama agent-onboard print the AI-agent workflow contract
|
|
618
661
|
llama agent bootstrap live Llama OS skill manifest from Command
|
|
619
662
|
llama skills search "<query>" discover which skill to read
|
|
@@ -622,6 +665,7 @@ Common:
|
|
|
622
665
|
|
|
623
666
|
Command groups — run \`llama help <group>\` for that group's commands:
|
|
624
667
|
deal create · show · feed · update · enrich · search · collaborators · links · delete
|
|
668
|
+
activity new-deals · updated-deals · events for agent read models
|
|
625
669
|
brief brief blocks: list · add · edit · history · refresh
|
|
626
670
|
facts deal facts + skill corrections (the sourced, trust-rated layer)
|
|
627
671
|
timeline timeline · posts · mentions
|
|
@@ -644,6 +688,7 @@ the CLI auto-detects it — no token needed (\`llc_\` tokens are a fallback).`;
|
|
|
644
688
|
// Area → which top-level sections of HELP_FULL belong to it.
|
|
645
689
|
const HELP_AREA_MATCH = {
|
|
646
690
|
deal: [/^Deals/, /^Collaborators/, /^Soft-delete/, /^Deal links/, /^Deal soft-delete/],
|
|
691
|
+
activity: [/^Agent activity/],
|
|
647
692
|
brief: [/^Brief blocks/, /^Brief \/ persona/],
|
|
648
693
|
facts: [/^Deal facts/, /^Skill corrections/],
|
|
649
694
|
timeline: [/^Timeline/, /^Mentions/],
|
|
@@ -1043,6 +1088,40 @@ async function main() {
|
|
|
1043
1088
|
return;
|
|
1044
1089
|
}
|
|
1045
1090
|
|
|
1091
|
+
if (area === "activity") {
|
|
1092
|
+
const sub = action || "events";
|
|
1093
|
+
const normalized = sub.replace(/-/g, "_");
|
|
1094
|
+
const kind =
|
|
1095
|
+
normalized === "new" || normalized === "new_deal" || normalized === "new_deals"
|
|
1096
|
+
? "new_deals"
|
|
1097
|
+
: normalized === "updated" || normalized === "updates" || normalized === "updated_deal" || normalized === "updated_deals"
|
|
1098
|
+
? "updated_deals"
|
|
1099
|
+
: normalized === "event" || normalized === "events" || normalized === "feed" || normalized === "all"
|
|
1100
|
+
? "events"
|
|
1101
|
+
: null;
|
|
1102
|
+
if (!kind) {
|
|
1103
|
+
throw new Error("Usage: llama activity new-deals|updated-deals|events [--since 24h] [--limit 50]");
|
|
1104
|
+
}
|
|
1105
|
+
const { flags } = parseFlags(rest, [
|
|
1106
|
+
"json",
|
|
1107
|
+
"since",
|
|
1108
|
+
"limit",
|
|
1109
|
+
"cursor",
|
|
1110
|
+
"before-id",
|
|
1111
|
+
"before_id",
|
|
1112
|
+
"deal",
|
|
1113
|
+
"deal-id",
|
|
1114
|
+
"deal_id",
|
|
1115
|
+
"entity",
|
|
1116
|
+
"verb",
|
|
1117
|
+
"min-sig",
|
|
1118
|
+
"min_sig",
|
|
1119
|
+
"min-significance",
|
|
1120
|
+
]);
|
|
1121
|
+
print(await fetchActivity(kind, flags));
|
|
1122
|
+
return;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1046
1125
|
if (area === "skills" || (area === "agent" && action === "skills")) {
|
|
1047
1126
|
const sub = area === "skills" ? action : rest[0];
|
|
1048
1127
|
const args = area === "skills" ? rest : rest.slice(1);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llamaventures/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"description": "CLI + MCP server for the Llama Ventures investment workbench (command.llamaventures.vc).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -13,16 +13,12 @@
|
|
|
13
13
|
"llama-mcp": "bin/llama-mcp.mjs"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
|
-
"assets/",
|
|
17
16
|
"bin/",
|
|
18
17
|
"lib/",
|
|
19
|
-
"scripts/verify-agent-routing.mjs",
|
|
20
18
|
"AGENT_BRIEFING.md",
|
|
21
19
|
"CHANGELOG.md",
|
|
22
|
-
"CONTRIBUTING.md",
|
|
23
20
|
"README.md",
|
|
24
21
|
"README.zh-CN.md",
|
|
25
|
-
"SECURITY.md",
|
|
26
22
|
"LICENSE"
|
|
27
23
|
],
|
|
28
24
|
"engines": {
|
package/CONTRIBUTING.md
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
# Contributing
|
|
2
|
-
|
|
3
|
-
Thanks for looking. This is an **internal tool** maintained by Llama Ventures
|
|
4
|
-
team members. Patches from teammates are welcome; outside contributions are
|
|
5
|
-
best limited to documentation fixes and broken-flow reports.
|
|
6
|
-
|
|
7
|
-
## Local dev loop
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
git clone https://github.com/Llama-Ventures/llama-cli.git
|
|
11
|
-
cd llama-cli
|
|
12
|
-
npm ci
|
|
13
|
-
node bin/llama.mjs --help # CLI is ESM, runs straight from source
|
|
14
|
-
node --check bin/llama.mjs # syntax check
|
|
15
|
-
node --check bin/llama-mcp.mjs # syntax check
|
|
16
|
-
npm test # mock-backed CLI/MCP agent routing checks
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
To test the CLI end-to-end against your own credentials, point it at the
|
|
20
|
-
in-source binary instead of the globally installed one:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
alias llama-dev="node $(pwd)/bin/llama.mjs"
|
|
24
|
-
llama-dev auth status
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
To smoke-test the MCP server (no client needed):
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
printf '%s\n' \
|
|
31
|
-
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"dev","version":"1"}}}' \
|
|
32
|
-
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
|
|
33
|
-
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
|
|
34
|
-
| node bin/llama-mcp.mjs | head -200
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
You should see 52 named tools, including `deal_agent_run`, `deal_enrich`, the
|
|
38
|
-
5 `pitch_*`, and no generic API passthrough tool.
|
|
39
|
-
|
|
40
|
-
## Conventions
|
|
41
|
-
|
|
42
|
-
- **Zero deps for the CLI.** `bin/llama.mjs` and `lib/client.mjs` use only Node
|
|
43
|
-
stdlib + native `fetch`. The MCP server may pull in
|
|
44
|
-
`@modelcontextprotocol/sdk`; nothing else.
|
|
45
|
-
- **One auth chain, one HTTP client.** Anything new that talks to
|
|
46
|
-
`command.llamaventures.vc` goes through `lib/client.mjs::request()`. Don't
|
|
47
|
-
spawn a parallel auth path; if you need a new credential type, add it to the
|
|
48
|
-
chain there.
|
|
49
|
-
- **Stable `Error[…]` prefixes.** `Error[NO_AUTH]` and `Error[UNAUTHORIZED]`
|
|
50
|
-
are part of the public contract — agents pattern-match on them. New error
|
|
51
|
-
classes need a new prefix; renaming an existing one is a major version bump.
|
|
52
|
-
- **CLI and MCP stay in lockstep.** Adding a new CLI command? Add the matching
|
|
53
|
-
MCP tool in the same PR. The MCP server exposes only named, typed tools — no
|
|
54
|
-
generic API passthrough — so every server endpoint that needs agent access
|
|
55
|
-
gets its own typed wrapper.
|
|
56
|
-
- **No bundler, no build step.** The CLI ships as `.mjs` files that npm copies
|
|
57
|
-
verbatim. `package.json::files` is the allowlist; CI re-verifies the tarball
|
|
58
|
-
contents on every PR.
|
|
59
|
-
- **`AGENT_BRIEFING.md` is content, not chrome.** It's the behavioural contract
|
|
60
|
-
for AI agents loading the package — terse, action-oriented, no fluff.
|
|
61
|
-
Changes to it are reviewed for substance, not formatting.
|
|
62
|
-
|
|
63
|
-
## Submitting changes
|
|
64
|
-
|
|
65
|
-
1. Branch off `main`. Branch names are casual; prefer `<type>/<short-slug>`
|
|
66
|
-
(e.g. `feat/pitch-rate-limit-message`, `fix/agent-onboard-redaction`).
|
|
67
|
-
2. Run the smoke commands above. CI on PR runs the same matrix on Node
|
|
68
|
-
18/20/22 plus a tarball-contents allowlist check.
|
|
69
|
-
3. Open a PR. One commit per logical change is preferred but not enforced.
|
|
70
|
-
4. Update [`CHANGELOG.md`](CHANGELOG.md) under `[Unreleased]` if the change
|
|
71
|
-
affects users (CLI / MCP surface, error format, auth, install).
|
|
72
|
-
|
|
73
|
-
## Releasing
|
|
74
|
-
|
|
75
|
-
Releases are cut from `main` via a GitHub Release. The
|
|
76
|
-
`.github/workflows/publish.yml` workflow then publishes to npm via
|
|
77
|
-
[Trusted Publishers](https://docs.npmjs.com/trusted-publishers) — no
|
|
78
|
-
`NPM_TOKEN` exists in repo secrets.
|
|
79
|
-
|
|
80
|
-
To cut a release:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
# 1. Bump version + move CHANGELOG entries from [Unreleased] to the new tag
|
|
84
|
-
npm version <patch|minor|major> # commits + tags
|
|
85
|
-
git push origin main --tags
|
|
86
|
-
|
|
87
|
-
# 2. Open https://github.com/Llama-Ventures/llama-cli/releases/new
|
|
88
|
-
# Choose the tag, paste the CHANGELOG section, click "Publish release"
|
|
89
|
-
# → publish.yml fires, OIDC handshake → npm publish --provenance --access public
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
The publish workflow asserts that `package.json::version` matches the release
|
|
93
|
-
tag (modulo a leading `v`). If they disagree, it fails fast — fix the
|
|
94
|
-
mismatch and re-cut the release.
|
|
95
|
-
|
|
96
|
-
## Security
|
|
97
|
-
|
|
98
|
-
Don't file public issues for security bugs. Email
|
|
99
|
-
[gavin@llamaventures.vc](mailto:gavin@llamaventures.vc). Full policy:
|
|
100
|
-
[`SECURITY.md`](SECURITY.md).
|
package/SECURITY.md
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# Security Policy
|
|
2
|
-
|
|
3
|
-
## Reporting security issues
|
|
4
|
-
|
|
5
|
-
**Do not file public GitHub issues for security bugs.** A public issue
|
|
6
|
-
gives an attacker a head-start before we can patch.
|
|
7
|
-
|
|
8
|
-
Instead, email [**gavin@llamaventures.vc**](mailto:gavin@llamaventures.vc)
|
|
9
|
-
with:
|
|
10
|
-
|
|
11
|
-
- A short description of the issue
|
|
12
|
-
- Steps to reproduce
|
|
13
|
-
- Expected vs. actual behavior
|
|
14
|
-
- The CLI version (`npm ls -g @llamaventures/cli`)
|
|
15
|
-
- Any other context that helps us reproduce
|
|
16
|
-
|
|
17
|
-
We aim to acknowledge within ~5 push cycles (best effort), patch
|
|
18
|
-
promptly, and credit the reporter (if desired) once the fix ships.
|
|
19
|
-
We do not run a public bug bounty program.
|
|
20
|
-
|
|
21
|
-
## Scope
|
|
22
|
-
|
|
23
|
-
In scope:
|
|
24
|
-
|
|
25
|
-
- Authentication / authorization bypass in the CLI client
|
|
26
|
-
- Token handling vulnerabilities (logging, transmission, storage)
|
|
27
|
-
- Supply-chain attacks against the npm package or its dependencies
|
|
28
|
-
- Anything that lets an unauthorized party execute Llama Command
|
|
29
|
-
operations as another team member
|
|
30
|
-
|
|
31
|
-
Out of scope (still report; lower urgency):
|
|
32
|
-
|
|
33
|
-
- Bugs in third-party services we depend on (Google Cloud, npm,
|
|
34
|
-
Anthropic, etc.)
|
|
35
|
-
- Issues only reproducible against a fork or a modified version of
|
|
36
|
-
this CLI
|
|
37
|
-
|
|
38
|
-
Server-side bugs (`command.llamaventures.vc`) are governed separately;
|
|
39
|
-
report through the same channel.
|
|
40
|
-
|
|
41
|
-
## Supply-chain posture
|
|
42
|
-
|
|
43
|
-
This package follows current best practice:
|
|
44
|
-
|
|
45
|
-
- **`@llamaventures/cli` is published via npm
|
|
46
|
-
[Trusted Publishers](https://docs.npmjs.com/trusted-publishers)** —
|
|
47
|
-
no `NPM_TOKEN` is stored in CI secrets; the GitHub Action exchanges
|
|
48
|
-
an OIDC token at publish time.
|
|
49
|
-
- **All releases ship with `--provenance`** (sigstore-signed). The
|
|
50
|
-
npm registry shows a "Provenance" badge on each version, traceable
|
|
51
|
-
to the exact commit + GitHub Action workflow that built it.
|
|
52
|
-
- **Minimal dependency tree.** The CLI itself is zero-deps; the
|
|
53
|
-
bundled MCP server depends only on
|
|
54
|
-
`@modelcontextprotocol/sdk` (Anthropic-maintained, pinned exact).
|
|
55
|
-
- **Branch protection** on `main` prevents force-push and deletion;
|
|
56
|
-
Dependabot, secret scanning, and push-protection are enabled.
|
|
57
|
-
|
|
58
|
-
## Disclosure
|
|
59
|
-
|
|
60
|
-
We coordinate disclosure when a fix lands. Once a patched version
|
|
61
|
-
ships, we publish a security advisory on this repo and notify
|
|
62
|
-
affected users via the team's internal channels.
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 224 76.32">
|
|
3
|
-
<g>
|
|
4
|
-
<g>
|
|
5
|
-
<path d="M69.84,26.89h7.64v4.53h-13.48V7.33h5.84v19.56Z"/>
|
|
6
|
-
<path d="M86.13,7.33v24.04h-5.7V7.33h5.7Z"/>
|
|
7
|
-
<path d="M90.96,16.53c.74-1.5,1.76-2.65,3.04-3.45,1.28-.81,2.72-1.21,4.3-1.21,1.35,0,2.54.28,3.56.83s1.81,1.28,2.36,2.17v-2.73h5.88v19.26h-5.88v-2.73c-.57.9-1.37,1.62-2.39,2.17-1.02.55-2.21.83-3.56.83-1.56,0-2.98-.41-4.27-1.22-1.29-.82-2.3-1.98-3.04-3.49-.75-1.51-1.12-3.25-1.12-5.23s.37-3.72,1.12-5.21ZM103,18.29c-.81-.85-1.81-1.28-2.97-1.28s-2.16.42-2.98,1.26c-.81.84-1.22,2-1.22,3.47s.41,2.64,1.22,3.51c.81.86,1.81,1.29,2.98,1.29s2.16-.42,2.97-1.28c.81-.85,1.22-2.01,1.22-3.49s-.41-2.64-1.22-3.49Z"/>
|
|
8
|
-
<path d="M143.78,14.24c1.4,1.44,2.1,3.44,2.1,6v11.18h-5.82v-10.39c0-1.24-.32-2.19-.97-2.86-.65-.68-1.54-1.01-2.68-1.01s-2.04.34-2.68,1.01c-.65.67-.97,1.63-.97,2.86v10.39h-5.82v-10.39c0-1.24-.32-2.19-.97-2.86-.65-.68-1.54-1.01-2.68-1.01s-2.03.34-2.68,1.01c-.65.67-.98,1.63-.98,2.86v10.39h-5.85V12.28h5.85v2.4c.59-.8,1.37-1.43,2.33-1.9.96-.47,2.04-.7,3.25-.7,1.44,0,2.72.31,3.85.92,1.13.62,2.01,1.5,2.65,2.64.66-1.05,1.56-1.91,2.7-2.57,1.14-.66,2.38-.99,3.72-.99,2.37,0,4.26.72,5.66,2.16Z"/>
|
|
9
|
-
<path d="M149.87,16.6c.74-1.49,1.75-2.63,3.03-3.44s2.71-1.2,4.28-1.2c1.35,0,2.53.27,3.55.82,1.01.55,1.8,1.27,2.34,2.16v-2.72h5.86v19.17h-5.86v-2.72c-.57.89-1.36,1.62-2.38,2.16-1.01.55-2.2.82-3.54.82-1.56,0-2.97-.41-4.25-1.22s-2.29-1.97-3.03-3.47c-.74-1.5-1.11-3.24-1.11-5.21s.37-3.7,1.11-5.19ZM161.86,18.36c-.81-.85-1.8-1.27-2.96-1.27s-2.15.42-2.96,1.25c-.81.84-1.22,1.99-1.22,3.45s.41,2.63,1.22,3.49c.81.86,1.8,1.29,2.96,1.29s2.15-.42,2.96-1.27,1.22-2,1.22-3.47-.4-2.62-1.22-3.47Z"/>
|
|
10
|
-
</g>
|
|
11
|
-
<g>
|
|
12
|
-
<path d="M88.31,42.57l-8.62,24.05-7.19-.14-8.5-23.91h6.3l5.57,17.41,6.27-17.41h6.17Z"/>
|
|
13
|
-
<path d="M106.78,57.98l-13.12.07c.09,1.16.46,2.04,1.12,2.65.66.61,1.46.92,2.42.92,1.42,0,2.41-.6,2.97-1.8h6.17c-.31,1.21-.86,2.45-1.67,3.42-.81.98-1.87,1.77-3.09,2.33s-2.73.9-4.24.9c-1.82,0-3.79-.59-5.21-1.37-1.42-.78-2.42-2.01-3.22-3.45-.8-1.44-1.2-3.11-1.2-5.04s.58-4,1.37-5.45c.79-1.45,2.09-2.48,3.51-3.26,1.42-.78,3.21-1.15,5.06-1.15s3.43.55,4.83,1.31c1.4.75,2.56,2.1,3.35,3.5s1.07,2.89,1.07,4.76c0,.53-.03,1.09-.1,1.67ZM100.83,54.89c0-.98-.33-1.76-1-2.33-.67-.58-1.5-.87-2.5-.87s-1.76.28-2.42.84c-.66.56-1.06,1.34-1.22,2.37h7.13Z"/>
|
|
14
|
-
<path d="M126.7,49.22c1.3,1.41,2.3,3.49,2.3,5.96v11.44h-5.78s-.04-10.69-.04-10.69c0-1.25-.49-2.07-1.13-2.76-.65-.69-1.54-1.06-2.81-1-1.09.05-1.89.57-2.54,1.26s-.91,1.61-.91,2.86v10.32h-5.79v-19.13h5.79v2.47c.58-.82,1.17-1.47,2.15-1.95.98-.48,2.08-.72,3.3-.72,2.18,0,4.17.53,5.47,1.94Z"/>
|
|
15
|
-
<path d="M143.61,61.6v5.02h-2.9c-2.06,0-4.1-.8-5.25-1.81-1.16-1.01-1.43-3.02-1.43-5.31v-7.1s-2.39,0-2.39,0v-4.91h2.39v-4.66s5.79,0,5.79,0v4.66h3.79v4.91h-3.78v7.2c0,.56.15,1.41.41,1.65.27.24.71.37,1.33.37h2.03Z"/>
|
|
16
|
-
<path d="M165.77,47.34v19.01h-5.79l-.03-2.74c-.58.82-1.77,1.75-2.76,2.25-.99.5-2.08.75-3.28.75-1.42,0-2.68-.32-3.77-.95-1.09-.63-1.88-2.02-2.48-3.21-.6-1.2-.9-2.61-.9-4.24v-10.87h5.67v10.1c0,1.24.32,2.21.97,2.9.64.69,1.51,1.03,2.6,1.03s1.99-.34,2.63-1.03c.64-.69.97-1.66.97-2.9v-10.1h6.17Z"/>
|
|
17
|
-
<path d="M178.26,48.17c1-.59,2.41-.82,3.64-.82v6.17h-1.85c-1.42,0-2.38.33-3.09.94-.71.61-1.11,1.55-1.11,3.09v9.06h-5.79v-19.13h5.7v3.1c.67-1.02,1.5-1.83,2.5-2.42Z"/>
|
|
18
|
-
<path d="M202.59,58.03h-13.25c.09,1.19.47,2.09,1.15,2.71.67.63,1.5.94,2.48.94,1.46,0,2.47-.61,3.05-1.84h6.23c-.32,1.25-.9,2.38-1.73,3.38-.83,1-1.88,1.79-3.13,2.36-1.26.57-2.66.85-4.21.85-1.87,0-3.54-.4-5-1.19-1.46-.79-2.6-1.93-3.42-3.41-.82-1.48-1.23-3.21-1.23-5.19s.4-3.71,1.21-5.19c.81-1.48,1.95-2.62,3.41-3.41,1.46-.8,3.14-1.19,5.03-1.19s3.49.39,4.93,1.16c1.44.77,2.56,1.88,3.37,3.31s1.21,3.11,1.21,5.02c0,.55-.03,1.12-.1,1.71ZM196.7,54.79c0-1-.34-1.8-1.03-2.39-.68-.59-1.54-.89-2.57-.89s-1.81.29-2.48.86c-.67.57-1.09,1.37-1.25,2.42h7.33Z"/>
|
|
19
|
-
<path d="M106.77,58.03h-13.25c.09,1.19.47,2.09,1.15,2.71.67.63,1.5.94,2.48.94,1.46,0,2.47-.61,3.05-1.84h6.23c-.32,1.25-.9,2.38-1.73,3.38-.83,1-1.88,1.79-3.13,2.36-1.26.57-2.66.85-4.21.85-1.87,0-3.54-.4-5-1.19-1.46-.79-2.6-1.93-3.42-3.41-.82-1.48-1.23-3.21-1.23-5.19s.4-3.71,1.21-5.19c.81-1.48,1.95-2.62,3.41-3.41,1.46-.8,3.14-1.19,5.03-1.19s3.49.39,4.93,1.16c1.44.77,2.56,1.88,3.37,3.31s1.21,3.11,1.21,5.02c0,.55-.03,1.12-.1,1.71ZM100.88,54.79c0-1-.34-1.8-1.03-2.39-.68-.59-1.54-.89-2.57-.89s-1.81.29-2.48.86c-.67.57-1.09,1.37-1.25,2.42h7.33Z"/>
|
|
20
|
-
<path d="M209.1,65.57c-1.28-.57-2.29-1.35-3.03-2.35-.74-.99-1.15-2.11-1.24-3.34h5.68c.07.66.37,1.2.91,1.61.54.41,1.2.62,1.98.62.72,0,1.27-.14,1.66-.43.39-.28.59-.66.59-1.11,0-.55-.28-.95-.84-1.22-.56-.26-1.47-.56-2.72-.88-1.34-.32-2.47-.66-3.36-1.01-.9-.35-1.67-.92-2.32-1.68-.65-.76-.98-1.8-.98-3.1,0-1.1.3-2.1.89-3,.59-.9,1.47-1.62,2.62-2.14,1.15-.53,2.53-.79,4.12-.79,2.35,0,4.21.59,5.56,1.78,1.36,1.19,2.14,2.77,2.34,4.73h-5.31c-.09-.66-.37-1.19-.86-1.58-.48-.39-1.12-.58-1.9-.58-.67,0-1.19.13-1.55.39s-.54.62-.54,1.08c0,.55.29.96.86,1.23.57.28,1.46.55,2.67.82,1.39.37,2.52.73,3.4,1.08.87.35,1.64.93,2.3,1.72.66.79,1,1.84,1.02,3.17,0,1.12-.31,2.12-.92,3-.62.88-1.5,1.57-2.65,2.07-1.15.5-2.5.75-4.02.75-1.64,0-3.09-.28-4.37-.86Z"/>
|
|
21
|
-
</g>
|
|
22
|
-
</g>
|
|
23
|
-
<path d="M48.7,50.5c3.49.32,6.76,2.94,8.15,6.08,3.09,6.98-1.33,14.02-8.65,15.07-9.08-.47-18.69.74-27.71.12-6.65-.46-10.81-5.53-10.25-12.13l6.28-25.63c-2.05-.02-4.19-.55-6.11-1.26-2.04-.75-4.19-1.79-5.33-3.74-3.04-5.19,1.25-9.8,5.21-12.75-1.81-4.39,2.75-6.87,6.59-6.06.9-3.1,4.51-4.16,7.01-2.12.61.5,1.37,2.23,2.32,1.05.83-1.03,1.11-3.35,1.02-4.64-.06-.81-.79-2.28.57-2.34.91-.04,2.41,1.95,2.85,2.69,1.48,2.49,1.77,5.72.61,8.39,2.83-.4,5.16-1.93,6.73-4.29.48-.72.81-2.17,1.87-1.85.59.18.96,2.01,1.06,2.59.65,3.9-1.25,7.48-4.51,9.55.65,2.66,1.28,5.32,1.63,8.05.99,7.74.41,15.67-1.62,23.2h12.28v.02ZM26.67,18.33c-4.94-4.2-11.7-1.55-15.83,2.4-.27.26-1.14,1.11-1.26,1.39-.09.21.08.17.16.21.66.39,1.73.61,2.01,1.39.47,1.33-.45,2.61-1.85,2.49-.42-.04-1.91-.89-2.08-.76.18,1.93,1.71,2.95,3.37,3.62,3.11,1.24,6.67,1.29,9.98,1.09l.26.14-3.65,14.92c10.85-2.11,18.01-19.14,8.89-26.88h0Z"/>
|
|
24
|
-
<path d="M23.15,21.22c1.95,1.35-.13,4.72-2.34,3.28s-.04-4.95,2.34-3.28Z"/>
|
|
25
|
-
</svg>
|