@drm3/sdk 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,75 +1,75 @@
1
- Draft - pending counsel review.
2
-
3
1
  DRM3 SDK License
4
2
 
5
3
  Copyright 2026 DRM3 Labs Corp. All rights reserved.
6
4
 
7
- This license governs use of the @drm3/sdk software package and the drm3
8
- command-line tool (together, the "SDK"). By installing or using the SDK, you
9
- agree to these terms. If you do not agree, do not install or use the SDK.
5
+ Plain-English summary (the full terms below are what control): you may use @drm3/sdk and the
6
+ drm3 command-line tool for free, including in commercial products, to build and ship your own
7
+ applications and agents that integrate with the DRM3 network. You may not repackage or resell
8
+ the SDK on its own, reverse-engineer it, or use it to build a competing network. The SDK is
9
+ DRM3's intellectual property, licensed to you, not sold.
10
+
11
+ This license governs use of the @drm3/sdk software package and the drm3 command-line tool
12
+ (together, the "SDK"). By installing or using the SDK, you agree to these terms.
10
13
 
11
14
  1. License grant
12
15
 
13
- DRM3 Labs Corp. ("DRM3") grants you a non-exclusive, non-transferable,
14
- revocable license to install and use the SDK, in its compiled form, solely to
15
- build and operate applications and agents that integrate with the DRM3 network.
16
- This grant is limited to the purpose stated in this section and conveys no
17
- other rights.
16
+ DRM3 Labs Corp. ("DRM3") grants you a worldwide, royalty-free, non-exclusive license to install
17
+ and use the SDK in its compiled form, and to incorporate it into your own applications and agents,
18
+ including for commercial purposes, in order to build, operate, and distribute those applications
19
+ and agents where they integrate with the DRM3 network. This grant continues for as long as you
20
+ comply with this license and is not revocable at will. No fee, signup, or separate agreement is
21
+ required to exercise it.
22
+
23
+ For clarity: shipping your own application or agent that depends on the SDK to your users or
24
+ customers is permitted and encouraged. Distributing the SDK itself as a standalone component is
25
+ what is not permitted (see Section 2).
18
26
 
19
27
  2. Restrictions
20
28
 
21
29
  You may not:
22
30
 
23
- a. redistribute, resell, sublicense, publish, lease, or otherwise make the
24
- SDK available to any third party, in whole or in part;
31
+ a. distribute, publish, resell, or sublicense the SDK on its own, or bundle it into a software
32
+ development kit, library, or toolkit meant to be used apart from your own applications and
33
+ agents;
25
34
 
26
- b. modify, adapt, translate, reverse engineer, decompile, or disassemble the
27
- SDK, or create derivative works from it, except to the limited extent that
28
- applicable law expressly permits despite this restriction;
35
+ b. modify, adapt, reverse engineer, decompile, or disassemble the SDK, or create a derivative or
36
+ competing SDK from it, except to the limited extent applicable law expressly permits despite
37
+ this restriction;
29
38
 
30
- c. use the SDK to design, build, or operate a product or service that
31
- competes with the DRM3 network; or
39
+ c. use the SDK to design, build, or operate a product or service that competes with the DRM3
40
+ network; or
32
41
 
33
- d. remove, alter, or obscure any copyright, trademark, or other proprietary
34
- notice in or on the SDK.
42
+ d. remove, alter, or obscure any copyright, trademark, or other proprietary notice in the SDK.
35
43
 
36
44
  3. Reservation of rights
37
45
 
38
- The SDK, its interfaces, and its design are the property of DRM3 and are
39
- protected by intellectual property and other laws. DRM3 reserves all rights not
40
- expressly granted to you in this license. No title to or ownership of the SDK
41
- is transferred to you. No rights are granted by implication, estoppel, or
42
- otherwise beyond those expressly stated here.
46
+ The SDK, including its interfaces, structure, and design, is the property of DRM3 and is protected
47
+ by intellectual property and other laws. The SDK is licensed, not sold. DRM3 reserves all rights
48
+ not expressly granted to you in this license.
43
49
 
44
50
  4. Feedback
45
51
 
46
- Ideas, feature requests, and issue reports are welcome (see CONTRIBUTING.md).
47
- Code contributions are not accepted. If you send DRM3 feedback, you grant DRM3
48
- a perpetual, irrevocable, royalty-free right to use it without restriction or
49
- obligation to you.
52
+ Ideas, feature requests, and bug reports are welcome (see CONTRIBUTING.md). Code contributions are
53
+ not accepted. If you send DRM3 feedback, DRM3 may use it without restriction or obligation to you.
50
54
 
51
55
  5. No warranty
52
56
 
53
- THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT WARRANTY OF ANY KIND,
54
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
55
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NONINFRINGEMENT.
56
- DRM3 DOES NOT WARRANT THAT THE SDK WILL BE UNINTERRUPTED OR ERROR-FREE.
57
+ THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
58
+ INCLUDING THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND
59
+ NONINFRINGEMENT.
57
60
 
58
61
  6. Limitation of liability
59
62
 
60
- TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL DRM3 BE LIABLE FOR
61
- ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, OR FOR
62
- ANY LOSS OF PROFITS, REVENUE, DATA, OR USE, ARISING OUT OF OR IN CONNECTION
63
- WITH THE SDK OR THIS LICENSE, WHETHER IN CONTRACT, TORT, OR OTHERWISE, EVEN IF
64
- DRM3 HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
63
+ TO THE MAXIMUM EXTENT PERMITTED BY LAW, DRM3 SHALL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL,
64
+ SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, OR FOR ANY LOSS OF PROFITS, REVENUE, DATA, OR USE,
65
+ ARISING OUT OF OR IN CONNECTION WITH THE SDK OR THIS LICENSE.
65
66
 
66
67
  7. Termination
67
68
 
68
- This license is effective until terminated. It terminates automatically if you
69
- breach any of its terms, and DRM3 may revoke it at any time. On termination,
70
- you must stop using the SDK and destroy all copies in your possession. Sections
71
- 3 through 8 survive termination.
69
+ This license terminates automatically if you breach it; on termination you must stop using the SDK.
70
+ DRM3 will not terminate this license as to users acting in good-faith compliance. Sections 3
71
+ through 7 survive termination.
72
72
 
73
73
  8. Contact
74
74
 
75
- Inquiries: inquiries@drm3.io
75
+ Licensing questions: inquiries@drm3.io
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <p align="center">
2
2
  <picture>
3
- <source media="(prefers-color-scheme: dark)" srcset="assets/drm3-wordmark-on-dark.png">
4
- <img alt="DRM3" src="assets/drm3-wordmark-on-light.png" width="180">
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://unpkg.com/@drm3/sdk/assets/drm3-wordmark-on-dark.png">
4
+ <img alt="DRM3" src="https://unpkg.com/@drm3/sdk/assets/drm3-wordmark-on-light.png" width="180">
5
5
  </picture>
6
6
  </p>
7
7
 
@@ -78,7 +78,7 @@ leaves your machine), builds and submits a CSR, verifies a receipt chain to the
78
78
  live fleet and registry status.
79
79
 
80
80
  <p align="center">
81
- <img src="assets/cli.svg" alt="The drm3 CLI: the help menu, and a keys generate run that prints the public key while the private key is written locally." width="800">
81
+ <img src="https://unpkg.com/@drm3/sdk/assets/cli.svg" alt="The drm3 CLI: the help menu, and a keys generate run that prints the public key while the private key is written locally." width="800">
82
82
  </p>
83
83
 
84
84
  ```bash
@@ -106,34 +106,9 @@ Four surfaces. Most of the SDK runs locally; the network calls are few and cache
106
106
  The app or agent is the center. It verifies identity, payments, and receipts locally, and makes a
107
107
  handful of cacheable calls to the DRM3 surfaces. It never holds a wallet key and never settles money.
108
108
 
109
- ```mermaid
110
- %%{init:{'theme':'base','themeVariables':{'primaryColor':'#EEF2FF','primaryBorderColor':'#3B82F6','lineColor':'#64748B','primaryTextColor':'#1e1b4b','fontFamily':'ui-sans-serif, system-ui, sans-serif'}}}%%
111
- flowchart LR
112
- U(["Human or agent"])
113
- subgraph BOX["Your app or agent + @drm3/sdk"]
114
- direction TB
115
- ID["sso: verify identity locally"]
116
- KEYS["keys: signing + CA"]
117
- PAY["x402: verify payments locally"]
118
- MET["meter: credit ledger, your DB"]
119
- UIX["switcher, alerts, receipts"]
120
- end
121
- HUB["drm3.network<br/>account hub"]
122
- REG["status.drm3.network<br/>registry + CA"]
123
- Q["queue.drm3.network<br/>metered inference"]
124
- CHAIN["Base chain<br/>USDC"]
125
-
126
- U -->|"sign in / out"| HUB
127
- BOX -->|"balance, alerts, Passport, revocations"| HUB
128
- BOX -->|"app catalog, public keys, CSR / cert"| REG
129
- MET -->|"shared meter (optional)"| Q
130
- PAY -.->|"authorization submitted out of band"| CHAIN
131
-
132
- classDef drm3 fill:#EEF2FF,stroke:#3B82F6,color:#1e1b4b;
133
- classDef chain fill:#FCE7F3,stroke:#FB3D8E,color:#1e1b4b;
134
- class HUB,REG,Q drm3;
135
- class CHAIN chain;
136
- ```
109
+ <p align="center">
110
+ <img src="https://unpkg.com/@drm3/sdk/architecture/01-architecture.svg" alt="Architecture: your app or agent holds @drm3/sdk and makes a few cacheable calls to the four DRM3 surfaces; it never holds a wallet key" width="820">
111
+ </p>
137
112
 
138
113
  ---
139
114
 
@@ -146,19 +121,9 @@ Every flow, its exact endpoint, and what stays local. Each diagram reads top to
146
121
  The user authenticates once at the hub and comes back with a `drm3_sso` token. Your app verifies that
147
122
  token locally on every request after that, with no further call to the hub.
148
123
 
149
- ```mermaid
150
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B','noteBkgColor':'#FEF3C7','noteBorderColor':'#FBBF24','noteTextColor':'#1e1b4b'}}}%%
151
- sequenceDiagram
152
- actor U as Human or agent
153
- participant App as Your app
154
- participant Hub as drm3.network
155
- U->>App: click sign in
156
- App-->>U: redirect to signInUrl(returnTo)
157
- Note over App,Hub: GET /account?login&next=...
158
- U->>Hub: authenticate once
159
- Hub-->>App: redirect back with a drm3_sso token
160
- App->>App: verifySsoToken() runs locally
161
- ```
124
+ <p align="center">
125
+ <img src="https://unpkg.com/@drm3/sdk/architecture/02-sign-in.svg" alt="Sign in: the user authenticates once at drm3.network and returns with a drm3_sso token your app verifies locally after that" width="640">
126
+ </p>
162
127
 
163
128
  ```ts
164
129
  import { createRevocationGate, verifyActiveSsoToken } from "@drm3/sdk/sso";
@@ -174,18 +139,9 @@ if (!claims) return new Response("unauthorized", { status: 401 }); // signature,
174
139
 
175
140
  One redirect clears the shared session across every DRM3 app, not just yours.
176
141
 
177
- ```mermaid
178
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B'}}}%%
179
- sequenceDiagram
180
- actor U as User
181
- participant App as Your app
182
- participant Hub as drm3.network
183
- U->>App: click sign out
184
- App-->>U: redirect to signOutUrl(returnTo)
185
- Note over App,Hub: GET /account/signout?next=...
186
- Hub->>Hub: clear the shared session
187
- Hub-->>App: redirect back, signed out everywhere
188
- ```
142
+ <p align="center">
143
+ <img src="https://unpkg.com/@drm3/sdk/architecture/03-sign-out.svg" alt="Sign out: one redirect clears the shared session across every DRM3 app" width="640">
144
+ </p>
189
145
 
190
146
  ---
191
147
 
@@ -193,14 +149,9 @@ sequenceDiagram
193
149
 
194
150
  Fully local. The private key is created on your machine and never leaves it. DRM3 is not contacted.
195
151
 
196
- ```mermaid
197
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','noteBkgColor':'#FEF3C7','noteBorderColor':'#FBBF24','noteTextColor':'#1e1b4b'}}}%%
198
- sequenceDiagram
199
- participant You as You (CLI or code)
200
- You->>You: generateSigningKey()
201
- Note over You: Ed25519 keypair made locally
202
- You->>You: store the private key in your secret manager
203
- ```
152
+ <p align="center">
153
+ <img src="https://unpkg.com/@drm3/sdk/architecture/04-generate-key.svg" alt="Generate a signing key: fully local, the Ed25519 private key is made on your machine and never leaves it" width="620">
154
+ </p>
204
155
 
205
156
  ```bash
206
157
  npx drm3 keys generate --out signing.key # private key stays with you
@@ -213,19 +164,9 @@ npx drm3 keys generate --out signing.key # private key stays with you
213
164
  You send a self-signed CSR carrying only your public key. A DRM3 operator approves it and the Root
214
165
  signs an attestation. DRM3 never sees your private key.
215
166
 
216
- ```mermaid
217
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B','noteBkgColor':'#FEF3C7','noteBorderColor':'#FBBF24','noteTextColor':'#1e1b4b'}}}%%
218
- sequenceDiagram
219
- participant You
220
- participant CA as status.drm3.network
221
- participant Op as DRM3 operator
222
- You->>You: buildCSR({ subject, keyPair })
223
- You->>CA: POST /v1/ca/csr (public key only)
224
- CA->>Op: queue for approval
225
- Op->>CA: approve, the Root signs an attestation
226
- You->>CA: GET /v1/ca/cert/:subject
227
- CA-->>You: your issuer attestation
228
- ```
167
+ <p align="center">
168
+ <img src="https://unpkg.com/@drm3/sdk/architecture/05-certify-key.svg" alt="Get your key certified: submit a public-key CSR, a DRM3 operator approves, the Root signs an attestation" width="660">
169
+ </p>
229
170
 
230
171
  ```bash
231
172
  npx drm3 keys submit --subject my-app --key signing.key
@@ -238,15 +179,9 @@ npx drm3 keys submit --subject my-app --key signing.key
238
179
  Anyone can do this. Fetch the public key registry once, then verify the Ed25519 chain locally: a
239
180
  receipt links to its issuer attestation, which links to the DRM3 Root.
240
181
 
241
- ```mermaid
242
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B','noteBkgColor':'#FEF3C7','noteBorderColor':'#FBBF24','noteTextColor':'#1e1b4b'}}}%%
243
- sequenceDiagram
244
- participant V as Verifier (anyone)
245
- participant Reg as status.drm3.network
246
- V->>Reg: GET /.well-known/drm3-keys.json
247
- V->>V: verifyChain(receipt, attestation, root)
248
- Note over V: receipt to attestation to Root, all local
249
- ```
182
+ <p align="center">
183
+ <img src="https://unpkg.com/@drm3/sdk/architecture/06-verify.svg" alt="Verify a key or receipt chain: fetch the public-key registry once, then verify the Ed25519 chain locally" width="640">
184
+ </p>
250
185
 
251
186
  ```bash
252
187
  npx drm3 keys verify receipt.json
@@ -258,14 +193,9 @@ npx drm3 keys verify receipt.json
258
193
 
259
194
  A single call to the hub with the user's identity token.
260
195
 
261
- ```mermaid
262
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B'}}}%%
263
- sequenceDiagram
264
- participant App as Your app
265
- participant Hub as drm3.network
266
- App->>Hub: GET /api/sso/balance (Bearer drm3_sso)
267
- Hub-->>App: { available, credits }
268
- ```
196
+ <p align="center">
197
+ <img src="https://unpkg.com/@drm3/sdk/architecture/07-balance.svg" alt="Read the credit balance: one call to the hub with the user's identity token" width="600">
198
+ </p>
269
199
 
270
200
  ---
271
201
 
@@ -275,19 +205,9 @@ The ledger is yours (SQLite / D1 or Postgres). `authorize` reserves credits and
275
205
  `capture` settles the real cost and releases the rest. The remote meter is optional, for the shared
276
206
  metered-inference path only.
277
207
 
278
- ```mermaid
279
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B'}}}%%
280
- sequenceDiagram
281
- participant App as Your app
282
- participant DB as Your DB
283
- participant Q as queue.drm3.network (optional)
284
- App->>DB: authorize(maxCost) reserve, no overdraft
285
- App->>App: do the work, measure the real cost
286
- App->>DB: capture(actual) settle, release the hold
287
- opt shared metered inference
288
- App->>Q: POST /api/internal/meter/charge
289
- end
290
- ```
208
+ <p align="center">
209
+ <img src="https://unpkg.com/@drm3/sdk/architecture/08-meter.svg" alt="Meter usage: authorize reserves credits with no overdraft, capture settles the real cost and releases the rest" width="660">
210
+ </p>
291
211
 
292
212
  ```ts
293
213
  import { CreditsClient, InMemoryAdapter } from "@drm3/sdk/meter";
@@ -304,15 +224,9 @@ await credits.capture(auth.reservation.id, { credits: 84n });
304
224
 
305
225
  Read the user's cross-app alerts and mark them read. The same bell mounts in any DRM3 app.
306
226
 
307
- ```mermaid
308
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B'}}}%%
309
- sequenceDiagram
310
- participant App as Your app (the bell)
311
- participant Hub as drm3.network
312
- App->>Hub: GET /api/sso/alerts (Bearer drm3_sso)
313
- Hub-->>App: { alerts, unread }
314
- App->>Hub: POST /api/sso/alerts/read
315
- ```
227
+ <p align="center">
228
+ <img src="https://unpkg.com/@drm3/sdk/architecture/09-alerts.svg" alt="Alerts: read the user's cross-app alerts and mark them read" width="620">
229
+ </p>
316
230
 
317
231
  ---
318
232
 
@@ -321,16 +235,9 @@ sequenceDiagram
321
235
  The user grants your app a Passport token at the hub's consent screen. Your app then writes into its
322
236
  own namespace under the user's record. The hub re-checks the token audience on every write.
323
237
 
324
- ```mermaid
325
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B','noteBkgColor':'#FEF3C7','noteBorderColor':'#FBBF24','noteTextColor':'#1e1b4b'}}}%%
326
- sequenceDiagram
327
- actor U as User
328
- participant App as Your app
329
- participant Hub as drm3.network
330
- U->>Hub: grant a Passport token (consent)
331
- App->>Hub: POST /api/passport/app-write (Bearer passport)
332
- Note over App,Hub: writes app.{clientId}.{slug}
333
- ```
238
+ <p align="center">
239
+ <img src="https://unpkg.com/@drm3/sdk/architecture/10-passport.svg" alt="Data access: the user grants a Passport token, then your app writes into its own namespace under the user's record" width="660">
240
+ </p>
334
241
 
335
242
  ---
336
243
 
@@ -341,21 +248,9 @@ Your app answers `402` with an offer. The agent signs an EIP-3009 authorization
341
248
  is out of band** - the signed authorization is submitted on-chain by the caller or a facilitator, which
342
249
  moves USDC directly to `payTo`. The SDK does not settle and never custodies funds.
343
250
 
344
- ```mermaid
345
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B','noteBkgColor':'#FCE7F3','noteBorderColor':'#FB3D8E','noteTextColor':'#1e1b4b'}}}%%
346
- sequenceDiagram
347
- actor A as Paying agent
348
- participant App as Your app
349
- participant Chain as Base (USDC)
350
- A->>App: request, no payment
351
- App-->>A: 402 + the offer
352
- A->>A: sign an EIP-3009 authorization to payTo
353
- A->>App: retry with the X-PAYMENT header
354
- App->>App: verifyX402Payment() local, no key
355
- App->>App: your nonce-replay gate
356
- App-->>A: 200 + the resource
357
- A-)Chain: submit authorization (out of band)
358
- ```
251
+ <p align="center">
252
+ <img src="https://unpkg.com/@drm3/sdk/architecture/11-x402.svg" alt="x402 payment: answer 402 with an offer, the agent signs an EIP-3009 authorization, you verify it locally, settlement is out of band on Base" width="700">
253
+ </p>
359
254
 
360
255
  ```ts
361
256
  import { verifyX402Payment, x402Body } from "@drm3/sdk/x402";
@@ -376,14 +271,9 @@ if (!result.ok) return new Response(result.error, { status: 402 });
376
271
  `x402Body` builds the `402` menu. `accepts` is the machine-payable x402 requirement; `offers` and
377
272
  `hint` are additive extras for humans and apps, and x402 clients ignore them.
378
273
 
379
- ```mermaid
380
- %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B'}}}%%
381
- sequenceDiagram
382
- participant App as Your app
383
- participant A as Caller
384
- App->>App: x402Body(cfg, { resource, description, offers, hint })
385
- App-->>A: 402 with accepts + optional offers + hint
386
- ```
274
+ <p align="center">
275
+ <img src="https://unpkg.com/@drm3/sdk/architecture/12-offers.svg" alt="Offers: x402Body builds the 402 menu with the machine-payable accepts plus optional human extras" width="640">
276
+ </p>
387
277
 
388
278
  ---
389
279
 
@@ -418,9 +308,13 @@ every app and agent on the network shares one signed, tested surface. We do want
418
308
  requests, and bug reports. Open a GitHub issue on this repository, or email inquiries@drm3.io. See
419
309
  [CONTRIBUTING.md](./CONTRIBUTING.md).
420
310
 
421
- ## Legal
311
+ ## License
312
+
313
+ **Free to use, including in commercial products.** Use `@drm3/sdk` and the `drm3` CLI to build and
314
+ ship your own apps and agents on the DRM3 network. No fee, no signup, no agreement to sign, and the
315
+ grant is not revoked as long as you play by the rules.
422
316
 
423
- `@drm3/sdk` is proprietary software under the **DRM3 SDK License**, Copyright 2026 DRM3 Labs Corp., all
424
- rights reserved. It is licensed for use to build and operate applications and agents that integrate
425
- with the DRM3 network; the SDK, its interfaces, and its design are DRM3 Labs Corp. intellectual
426
- property. See [LICENSE](./LICENSE). Inquiries: inquiries@drm3.io.
317
+ It is **not open source**: the SDK is DRM3 Labs Corp. property, so you cannot repackage or resell the
318
+ SDK on its own, reverse-engineer it, or use it to build a competing network. Build anything you want
319
+ on DRM3 with it; just do not clone or resell the SDK itself. Full terms in [LICENSE](./LICENSE).
320
+ Questions: inquiries@drm3.io.
@@ -0,0 +1,26 @@
1
+ %%{init:{'theme':'base','themeVariables':{'primaryColor':'#EEF2FF','primaryBorderColor':'#3B82F6','lineColor':'#64748B','primaryTextColor':'#1e1b4b','fontFamily':'ui-sans-serif, system-ui, sans-serif'}}}%%
2
+ flowchart LR
3
+ U(["Human or agent"])
4
+ subgraph BOX["Your app or agent + @drm3/sdk"]
5
+ direction TB
6
+ ID["sso: verify identity locally"]
7
+ KEYS["keys: signing + CA"]
8
+ PAY["x402: verify payments locally"]
9
+ MET["meter: credit ledger, your DB"]
10
+ UIX["switcher, alerts, receipts"]
11
+ end
12
+ HUB["drm3.network<br/>account hub"]
13
+ REG["status.drm3.network<br/>registry + CA"]
14
+ Q["queue.drm3.network<br/>metered inference"]
15
+ CHAIN["Base chain<br/>USDC"]
16
+
17
+ U -->|"sign in / out"| HUB
18
+ BOX -->|"balance, alerts, Passport, revocations"| HUB
19
+ BOX -->|"app catalog, public keys, CSR / cert"| REG
20
+ MET -->|"shared meter (optional)"| Q
21
+ PAY -.->|"authorization submitted out of band"| CHAIN
22
+
23
+ classDef drm3 fill:#EEF2FF,stroke:#3B82F6,color:#1e1b4b;
24
+ classDef chain fill:#FCE7F3,stroke:#FB3D8E,color:#1e1b4b;
25
+ class HUB,REG,Q drm3;
26
+ class CHAIN chain;
@@ -0,0 +1 @@
1
+ <svg id="mermaid-svg" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 759.921875px;" viewBox="0 0 759.921875 707" role="graphics-document document" aria-roledescription="flowchart-v2" xmlns:xlink="http://www.w3.org/1999/xlink"><style xmlns="http://www.w3.org/1999/xhtml">@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css");</style><style>#mermaid-svg{font-size:16px;fill:#1e1b4b;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg .error-icon{fill:hsl(45.8823529412, 100%, 100%);}#mermaid-svg .error-text{fill:#000000;stroke:#000000;}#mermaid-svg .edge-thickness-normal{stroke-width:1px;}#mermaid-svg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg .marker{fill:#64748B;stroke:#64748B;}#mermaid-svg .marker.cross{stroke:#64748B;}#mermaid-svg svg{font-size:16px;}#mermaid-svg p{margin:0;}#mermaid-svg .label{color:#1e1b4b;}#mermaid-svg .cluster-label text{fill:#000000;}#mermaid-svg .cluster-label span{color:#000000;}#mermaid-svg .cluster-label span p{background-color:transparent;}#mermaid-svg .label text,#mermaid-svg span{fill:#1e1b4b;color:#1e1b4b;}#mermaid-svg .node rect,#mermaid-svg .node circle,#mermaid-svg .node ellipse,#mermaid-svg .node polygon,#mermaid-svg .node path{fill:#EEF2FF;stroke:#3B82F6;stroke-width:1px;}#mermaid-svg .rough-node .label text,#mermaid-svg .node .label text,#mermaid-svg .image-shape .label,#mermaid-svg .icon-shape .label{text-anchor:middle;}#mermaid-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg .rough-node .label,#mermaid-svg .node .label,#mermaid-svg .image-shape .label,#mermaid-svg .icon-shape .label{text-align:center;}#mermaid-svg .node.clickable{cursor:pointer;}#mermaid-svg .root .anchor path{fill:#64748B!important;stroke-width:0;stroke:#64748B;}#mermaid-svg .arrowheadPath{fill:#0b0b0b;}#mermaid-svg .edgePath .path{stroke:#64748B;stroke-width:2.0px;}#mermaid-svg .flowchart-link{stroke:#64748B;fill:none;}#mermaid-svg .edgeLabel{background-color:hsl(105.8823529412, 100%, 96.6666666667%);text-align:center;}#mermaid-svg .edgeLabel p{background-color:hsl(105.8823529412, 100%, 96.6666666667%);}#mermaid-svg .edgeLabel rect{opacity:0.5;background-color:hsl(105.8823529412, 100%, 96.6666666667%);fill:hsl(105.8823529412, 100%, 96.6666666667%);}#mermaid-svg .labelBkg{background-color:rgba(242.0000000001, 255, 238.0000000002, 0.5);}#mermaid-svg .cluster rect{fill:hsl(45.8823529412, 100%, 100%);stroke:hsl(45.8823529412, 60%, 90%);stroke-width:1px;}#mermaid-svg .cluster text{fill:#000000;}#mermaid-svg .cluster span{color:#000000;}#mermaid-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-size:12px;background:hsl(45.8823529412, 100%, 100%);border:1px solid hsl(45.8823529412, 60%, 90%);border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#1e1b4b;}#mermaid-svg rect.text{fill:none;stroke-width:0;}#mermaid-svg .icon-shape,#mermaid-svg .image-shape{background-color:hsl(105.8823529412, 100%, 96.6666666667%);text-align:center;}#mermaid-svg .icon-shape p,#mermaid-svg .image-shape p{background-color:hsl(105.8823529412, 100%, 96.6666666667%);padding:2px;}#mermaid-svg .icon-shape rect,#mermaid-svg .image-shape rect{opacity:0.5;background-color:hsl(105.8823529412, 100%, 96.6666666667%);fill:hsl(105.8823529412, 100%, 96.6666666667%);}#mermaid-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg .drm3&gt;*{fill:#EEF2FF!important;stroke:#3B82F6!important;color:#1e1b4b!important;}#mermaid-svg .drm3 span{fill:#EEF2FF!important;stroke:#3B82F6!important;color:#1e1b4b!important;}#mermaid-svg .drm3 tspan{fill:#1e1b4b!important;}#mermaid-svg .chain&gt;*{fill:#FCE7F3!important;stroke:#FB3D8E!important;color:#1e1b4b!important;}#mermaid-svg .chain span{fill:#FCE7F3!important;stroke:#FB3D8E!important;color:#1e1b4b!important;}#mermaid-svg .chain tspan{fill:#1e1b4b!important;}</style><g><marker id="mermaid-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster " id="BOX" data-look="classic"><rect style="" x="8" y="82" width="301.515625" height="617"/><g class="cluster-label " transform="translate(58.7578125, 82)"><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel "><p>Your app or agent + @drm3/sdk</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M223.162,28L237.554,27.917C251.946,27.833,280.731,27.667,315.957,27.583C351.182,27.5,392.849,27.5,437.381,32.562C481.912,37.624,529.309,47.748,553.007,52.81L576.705,57.872" id="L_U_HUB_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_U_HUB_0" data-points="W3sieCI6MjIzLjE2MTg1NDgyNjg0NjU0LCJ5IjoyOC4wMDAwMDAwMDAwMDAwMDR9LHsieCI6MzA5LjUxNTYyNSwieSI6MjcuNX0seyJ4Ijo0MzQuNTE1NjI1LCJ5IjoyNy41fSx7IngiOjU4MC42MTcxODc1LCJ5Ijo1OC43MDc5NjI0OTIwNTM0fV0=" marker-end="url(#mermaid-svg_flowchart-v2-pointEnd)"/><path d="M282.852,533L287.296,533C291.74,533,300.628,533,325.905,533C351.182,533,392.849,533,433.849,533C474.849,533,515.182,533,535.349,533L555.516,533" id="L_MET_Q_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MET_Q_0" data-points="W3sieCI6MjgyLjg1MTU2MjUsInkiOjUzM30seyJ4IjozMDkuNTE1NjI1LCJ5Ijo1MzN9LHsieCI6NDM0LjUxNTYyNSwieSI6NTMzfSx7IngiOjU1OS41MTU2MjUsInkiOjUzM31d" marker-end="url(#mermaid-svg_flowchart-v2-pointEnd)"/><path d="M284.516,405L288.682,405C292.849,405,301.182,405,326.182,405C351.182,405,392.849,405,439.07,405C485.292,405,536.068,405,561.456,405L586.844,405" id="L_PAY_CHAIN_0" class=" edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PAY_CHAIN_0" data-points="W3sieCI6Mjg0LjUxNTYyNSwieSI6NDA1fSx7IngiOjMwOS41MTU2MjUsInkiOjQwNX0seyJ4Ijo0MzQuNTE1NjI1LCJ5Ijo0MDV9LHsieCI6NTkwLjg0Mzc1LCJ5Ijo0MDV9XQ==" marker-end="url(#mermaid-svg_flowchart-v2-pointEnd)"/><path d="M309.516,133L330.349,133C351.182,133,392.849,133,437.388,126.758C481.927,120.515,529.338,108.03,553.043,101.788L576.749,95.545" id="L_BOX_HUB_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BOX_HUB_0" data-points="W3sieCI6MjIyLjM1ODc2NDY0ODQzNzUsInkiOjE3MH0seyJ4IjozMDkuNTE1NjI1LCJ5IjoxMzN9LHsieCI6NDM0LjUxNTYyNSwieSI6MTMzfSx7IngiOjU4MC42MTcxODc1LCJ5Ijo5NC41MjY2OTE3NDI2MDA4M31d" marker-end="url(#mermaid-svg_flowchart-v2-pointEnd)"/><path d="M309.516,237L330.349,237C351.182,237,392.849,237,433.995,237C475.141,237,515.766,237,536.078,237L556.391,237" id="L_BOX_REG_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BOX_REG_0" data-points="W3sieCI6MjYwLjUxOTMzNTkzNzUsInkiOjIyNH0seyJ4IjozMDkuNTE1NjI1LCJ5IjoyMzd9LHsieCI6NDM0LjUxNTYyNSwieSI6MjM3fSx7IngiOjU2MC4zOTA2MjUsInkiOjIzN31d" marker-end="url(#mermaid-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(434.515625, 27.5)"><g class="label" data-id="L_U_HUB_0" transform="translate(-38.0078125, -12)"><foreignObject width="76.015625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>sign in / out</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(434.515625, 533)"><g class="label" data-id="L_MET_Q_0" transform="translate(-74.640625, -12)"><foreignObject width="149.28125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>shared meter (optional)</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(434.515625, 405)"><g class="label" data-id="L_PAY_CHAIN_0" transform="translate(-100, -24)"><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="edgeLabel "><p>authorization submitted out of band</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(447.12685, 129.67905)"><g class="label" data-id="L_BOX_HUB_0" transform="translate(-100, -24)"><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="edgeLabel "><p>balance, alerts, Passport, revocations</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(434.95313, 237)"><g class="label" data-id="L_BOX_REG_0" transform="translate(-100, -24)"><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="edgeLabel "><p>app catalog, public keys, CSR / cert</p></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default " id="flowchart-U-0" transform="translate(158.7578125, 27.5)"><g class="basic label-container outer-path"><path d="M-44.4140625 -19.5 C-14.711937781103728 -19.5, 14.990186937792544 -19.5, 44.4140625 -19.5 C44.4140625 -19.5, 44.4140625 -19.5, 44.4140625 -19.5 C44.78906864213092 -19.487974282927038, 45.16407478426184 -19.475948565854072, 45.6634317896239 -19.45993515863156 C46.02622770631451 -19.424936672874342, 46.38902362300511 -19.389938187117124, 46.907667152847864 -19.3399052695533 C47.37601882465154 -19.264185803377543, 47.84437049645522 -19.188466337201785, 48.14165575967676 -19.140403561325776 C48.41902462860477 -19.07709592699398, 48.696393497532775 -19.013788292662188, 49.36032688623539 -18.862249829261074 C49.645216900923444 -18.777695968319865, 49.93010691561149 -18.693142107378655, 50.558672751460605 -18.50658706670804 C51.020735995280575 -18.336543521716486, 51.482799239100544 -18.166499976724936, 51.7317690951478 -18.074876768247425 C51.970213393304476 -17.969324550652257, 52.208657691461156 -17.86377233305709, 52.87479541279238 -17.568892924097174 C53.10019750136768 -17.45130079886437, 53.32559958994298 -17.333708673631563, 53.98305476407678 -16.990714730406097 C54.317975501589096 -16.78768381111341, 54.652896239101416 -16.58465289182072, 55.0519930736057 -16.342718045390892 C55.43060683655726 -16.078613474281525, 55.80922059950881 -15.81450890317216, 56.07721784457871 -15.627565626425154 C56.3289878105364 -15.426785778454072, 56.580757776494075 -15.226005930482991, 57.054516208501866 -14.848196188198123 C57.353299762513686 -14.576848869824229, 57.652083316525506 -14.305501551450336, 57.97987223676799 -14.007812326905688 C58.292315287764644 -13.685189224700087, 58.6047583387613 -13.362566122494488, 58.84948344296865 -13.10986736009568 C59.14372299383853 -12.764236840939175, 59.43796254470841 -12.418606321782667, 59.65977640812658 -12.158051136245305 C59.90142795985701 -11.834260071835779, 60.143079511587445 -11.510469007426252, 60.407421464640635 -11.156274872382312 C60.66818398378522 -10.755673618435484, 60.9289465029298 -10.355072364488656, 61.08934637860425 -10.108655082055241 C61.25703513712172 -9.810906710979387, 61.4247238956392 -9.513158339903532, 61.702748974273504 -9.019496659696287 C61.85819657191102 -8.696706397156204, 62.01364416954855 -8.37391613461612, 62.24510864880834 -7.893275190886684 C62.34736086527826 -7.640710239293866, 62.44961308174818 -7.388145287701047, 62.714196729970325 -6.734618561215508 C62.81049389630476 -6.444586839086038, 62.9067910626392 -6.154555116956567, 63.10808563421488 -5.548287939305138 C63.18115159226954 -5.269655774256161, 63.25421755032421 -4.991023609207183, 63.42515678754556 -4.339158212148133 C63.49456297354299 -3.9827721160539227, 63.56396915954042 -3.626386019959712, 63.664107276581774 -3.1121979531509023 C63.70175078772302 -2.820242314291456, 63.73939429886427 -2.5282866754320095, 63.82395520250937 -1.872449005199798 C63.855212856932994 -1.385585806827263, 63.88647051135663 -0.8987226084547284, 63.90404371591342 -0.6250057626472757 C63.90404371591342 -0.15146652202718097, 63.90404371591342 0.32207271859291375, 63.90404371591342 0.625005762647271 C63.882133526383186 0.9662746501672793, 63.860223336852954 1.3075435376872875, 63.82395520250937 1.8724490051997846 C63.7856575854643 2.1694777602814503, 63.747359968419225 2.4665065153631156, 63.664107276581774 3.1121979531508885 C63.611180589085045 3.3839653073872187, 63.55825390158832 3.655732661623549, 63.42515678754556 4.339158212148129 C63.32694099429819 4.713697598794416, 63.22872520105082 5.088236985440702, 63.10808563421489 5.548287939305125 C63.00455796070991 5.860096797007385, 62.90103028720494 6.1719056547096445, 62.714196729970325 6.734618561215495 C62.615814502946435 6.977624564055459, 62.51743227592255 7.220630566895423, 62.24510864880834 7.893275190886679 C62.04334620565448 8.31223922112038, 61.84158376250062 8.731203251354083, 61.702748974273504 9.019496659696284 C61.578288960516694 9.240488017064505, 61.453828946759884 9.461479374432727, 61.08934637860425 10.108655082055236 C60.8735136604954 10.440232096270298, 60.65768094238654 10.771809110485362, 60.40742146464064 11.156274872382301 C60.17901608849186 11.462317268263833, 59.950610712343085 11.768359664145366, 59.65977640812658 12.158051136245302 C59.371078399613616 12.497172244426684, 59.08238039110065 12.836293352608065, 58.84948344296866 13.10986736009567 C58.64687062243344 13.31908173212022, 58.44425780189821 13.52829610414477, 57.97987223676799 14.007812326905684 C57.62967703468637 14.325850343778908, 57.279481832604745 14.643888360652134, 57.05451620850189 14.848196188198111 C56.678419861814994 15.148123016336797, 56.3023235151281 15.448049844475483, 56.07721784457871 15.627565626425152 C55.77862777061717 15.835849136264748, 55.480037696655636 16.044132646104345, 55.05199307360571 16.34271804539089 C54.74149826369762 16.530941823827206, 54.431003453789536 16.719165602263526, 53.98305476407678 16.990714730406093 C53.578042761969236 17.202009232483032, 53.17303075986168 17.413303734559975, 52.87479541279239 17.56889292409717 C52.56372290450019 17.706595495880027, 52.25265039620799 17.844298067662884, 51.731769095147804 18.07487676824742 C51.30292944409982 18.23269372398336, 50.87408979305183 18.390510679719295, 50.55867275146062 18.506587066708033 C50.275954980142 18.590496217219535, 49.99323720882337 18.67440536773104, 49.36032688623541 18.86224982926107 C49.07093768283344 18.928301026496534, 48.78154847943147 18.994352223731997, 48.141655759676766 19.140403561325773 C47.69357883357225 19.21284516384989, 47.24550190746775 19.28528676637401, 46.90766715284788 19.3399052695533 C46.474688725484505 19.381674177708298, 46.04171029812113 19.423443085863298, 45.6634317896239 19.45993515863156 C45.18014772243079 19.47543313801107, 44.69686365523768 19.490931117390584, 44.41406250000001 19.5 C44.41406250000001 19.5, 44.4140625 19.5, 44.4140625 19.5 C16.074497267769562 19.5, -12.265067964460876 19.5, -44.41406249999999 19.5 C-44.79008732143564 19.48794161586447, -45.166112142871285 19.475883231728947, -45.66343178962389 19.45993515863156 C-45.99526893274363 19.42792322852735, -46.32710607586337 19.395911298423144, -46.90766715284787 19.3399052695533 C-47.171712825138506 19.29721641296212, -47.43575849742914 19.25452755637094, -48.14165575967676 19.140403561325773 C-48.437331667044624 19.072917464934672, -48.73300757441249 19.00543136854357, -49.360326886235384 18.862249829261074 C-49.771336624945874 18.740264296245947, -50.18234636365636 18.61827876323082, -50.55867275146059 18.506587066708043 C-50.91335445697924 18.376060920435435, -51.268036162497886 18.245534774162827, -51.7317690951478 18.074876768247425 C-51.96744990508313 17.970547864911882, -52.20313071501845 17.86621896157634, -52.87479541279238 17.568892924097174 C-53.13464503283714 17.433329543761445, -53.39449465288191 17.297766163425717, -53.98305476407678 16.990714730406097 C-54.30312868105109 16.79668404097315, -54.6232025980254 16.6026533515402, -55.051993073605686 16.3427180453909 C-55.284564823518856 16.180486060520263, -55.517136573432026 16.018254075649626, -56.07721784457871 15.627565626425156 C-56.380980876031394 15.38532269231539, -56.68474390748408 15.143079758205623, -57.054516208501866 14.848196188198125 C-57.31805089261763 14.608860960829842, -57.58158557673338 14.369525733461558, -57.979872236767974 14.007812326905697 C-58.169761379374684 13.811736196975726, -58.35965052198139 13.615660067045754, -58.849483442968655 13.109867360095677 C-59.04213050997232 12.883573153264521, -59.23477757697598 12.657278946433367, -59.659776408126575 12.158051136245307 C-59.9224373110707 11.806109455200705, -60.18509821401482 11.454167774156101, -60.407421464640635 11.156274872382316 C-60.62324528557997 10.824711526608855, -60.83906910651931 10.493148180835396, -61.08934637860425 10.108655082055249 C-61.273678909572176 9.781354007628888, -61.45801144054011 9.454052933202526, -61.702748974273504 9.019496659696289 C-61.8945785439551 8.621158453757186, -62.0864081136367 8.222820247818085, -62.24510864880834 7.893275190886686 C-62.38166328384855 7.555982602233099, -62.518217918888766 7.218690013579512, -62.714196729970325 6.73461856121551 C-62.83277239208378 6.3774875593958935, -62.95134805419723 6.020356557576278, -63.10808563421488 5.5482879393051325 C-63.20931611626636 5.162252237674403, -63.310546598317835 4.776216536043674, -63.42515678754556 4.339158212148136 C-63.47691318992178 4.0734000246657684, -63.528669592297994 3.807641837183401, -63.664107276581774 3.112197953150904 C-63.72404783188951 2.6473108427855903, -63.78398838719724 2.182423732420277, -63.82395520250937 1.872449005199809 C-63.85297851671775 1.420387459206751, -63.88200183092612 0.9683259132136929, -63.90404371591342 0.6250057626472781 C-63.90404371591342 0.18062869625690608, -63.90404371591342 -0.26374837013346597, -63.90404371591342 -0.6250057626472687 C-63.884632720402074 -0.9273476860100516, -63.86522172489072 -1.2296896093728344, -63.82395520250937 -1.8724490051997822 C-63.78376377491695 -2.184165780911483, -63.74357234732453 -2.4958825566231844, -63.664107276581774 -3.112197953150895 C-63.57130424320283 -3.5887219156237022, -63.4785012098239 -4.065245878096509, -63.42515678754556 -4.339158212148126 C-63.3511632533968 -4.621327626857913, -63.277169719248036 -4.903497041567701, -63.10808563421489 -5.548287939305123 C-62.98793485732227 -5.91016293587911, -62.86778408042966 -6.272037932453097, -62.71419672997033 -6.734618561215485 C-62.53996191567679 -7.164981921121509, -62.36572710138324 -7.595345281027533, -62.24510864880834 -7.893275190886676 C-62.094529391787795 -8.205956239969808, -61.94395013476725 -8.51863728905294, -61.702748974273504 -9.019496659696282 C-61.57610241494158 -9.244370450144874, -61.44945585560965 -9.469244240593467, -61.08934637860425 -10.108655082055243 C-60.897248405017564 -10.40376915501295, -60.70515043143088 -10.69888322797066, -60.40742146464064 -11.156274872382308 C-60.25261492942027 -11.363701526412125, -60.09780839419989 -11.571128180441942, -59.65977640812659 -12.158051136245302 C-59.39115938429562 -12.473583977178812, -59.12254236046465 -12.789116818112324, -58.84948344296866 -13.10986736009567 C-58.5542404664647 -13.414729973235184, -58.258997489960734 -13.719592586374697, -57.979872236767996 -14.007812326905677 C-57.669678655771975 -14.289521929893857, -57.35948507477595 -14.571231532882038, -57.05451620850189 -14.848196188198107 C-56.774225539783075 -15.071720537653416, -56.49393487106426 -15.295244887108725, -56.07721784457872 -15.627565626425149 C-55.81991656211206 -15.807047862680887, -55.562615279645414 -15.986530098936628, -55.051993073605715 -16.342718045390885 C-54.70420658075806 -16.553548261175425, -54.35642008791041 -16.764378476959966, -53.98305476407679 -16.99071473040609 C-53.73526201060599 -17.11998805117297, -53.4874692571352 -17.249261371939852, -52.87479541279239 -17.56889292409717 C-52.55496179723733 -17.71047377817628, -52.23512818168228 -17.852054632255392, -51.731769095147804 -18.07487676824742 C-51.34031013600009 -18.21893728382073, -50.94885117685238 -18.36299779939404, -50.55867275146062 -18.506587066708033 C-50.100244668568386 -18.642646115372337, -49.64181658567615 -18.77870516403664, -49.36032688623541 -18.862249829261067 C-48.97091109387782 -18.95113144269116, -48.581495301520214 -19.04001305612125, -48.141655759676766 -19.140403561325773 C-47.81484502802802 -19.193239785963666, -47.48803429637927 -19.246076010601563, -46.90766715284788 -19.3399052695533 C-46.61297436714848 -19.36833392816979, -46.31828158144908 -19.396762586786284, -45.6634317896239 -19.45993515863156 C-45.21526720732228 -19.47430692448653, -44.76710262502065 -19.488678690341505, -44.41406250000001 -19.5 C-44.41406250000001 -19.5, -44.4140625 -19.5, -44.4140625 -19.5" stroke="none" stroke-width="0" fill="#EEF2FF" style=""/><path d="M-44.4140625 -19.5 C-21.46962805405531 -19.5, 1.4748063918893806 -19.5, 44.4140625 -19.5 M-44.4140625 -19.5 C-24.142884819102303 -19.5, -3.8717071382046058 -19.5, 44.4140625 -19.5 M44.4140625 -19.5 C44.4140625 -19.5, 44.4140625 -19.5, 44.4140625 -19.5 M44.4140625 -19.5 C44.4140625 -19.5, 44.4140625 -19.5, 44.4140625 -19.5 M44.4140625 -19.5 C44.88274400696336 -19.484970296304898, 45.35142551392671 -19.469940592609795, 45.6634317896239 -19.45993515863156 M44.4140625 -19.5 C44.68323748504929 -19.491368082146792, 44.95241247009859 -19.482736164293588, 45.6634317896239 -19.45993515863156 M45.6634317896239 -19.45993515863156 C46.08258879156208 -19.41949958676463, 46.50174579350026 -19.379064014897704, 46.907667152847864 -19.3399052695533 M45.6634317896239 -19.45993515863156 C45.97736397509373 -19.429650498257978, 46.29129616056356 -19.399365837884393, 46.907667152847864 -19.3399052695533 M46.907667152847864 -19.3399052695533 C47.313492228390544 -19.274294618560024, 47.719317303933224 -19.20868396756675, 48.14165575967676 -19.140403561325776 M46.907667152847864 -19.3399052695533 C47.30543886559641 -19.275596623801817, 47.70321057834495 -19.21128797805034, 48.14165575967676 -19.140403561325776 M48.14165575967676 -19.140403561325776 C48.5962613881372 -19.036642793208646, 49.050867016597635 -18.93288202509152, 49.36032688623539 -18.862249829261074 M48.14165575967676 -19.140403561325776 C48.41093822994411 -19.07894159471959, 48.680220700211464 -19.01747962811341, 49.36032688623539 -18.862249829261074 M49.36032688623539 -18.862249829261074 C49.81489169727461 -18.72733737940402, 50.26945650831383 -18.592424929546965, 50.558672751460605 -18.50658706670804 M49.36032688623539 -18.862249829261074 C49.607986258505434 -18.7887458275619, 49.85564563077548 -18.715241825862723, 50.558672751460605 -18.50658706670804 M50.558672751460605 -18.50658706670804 C50.95041185207236 -18.362423456486365, 51.3421509526841 -18.218259846264694, 51.7317690951478 -18.074876768247425 M50.558672751460605 -18.50658706670804 C50.94281377703846 -18.365219618334677, 51.32695480261631 -18.22385216996131, 51.7317690951478 -18.074876768247425 M51.7317690951478 -18.074876768247425 C52.04244213577935 -17.937351028948147, 52.35311517641091 -17.799825289648872, 52.87479541279238 -17.568892924097174 M51.7317690951478 -18.074876768247425 C52.187023228411135 -17.87334926808579, 52.642277361674466 -17.671821767924154, 52.87479541279238 -17.568892924097174 M52.87479541279238 -17.568892924097174 C53.125816803218925 -17.437935225498517, 53.376838193645476 -17.306977526899864, 53.98305476407678 -16.990714730406097 M52.87479541279238 -17.568892924097174 C53.1680484804913 -17.415902986516205, 53.461301548190214 -17.262913048935232, 53.98305476407678 -16.990714730406097 M53.98305476407678 -16.990714730406097 C54.403358894601936 -16.735923896500513, 54.82366302512709 -16.481133062594928, 55.0519930736057 -16.342718045390892 M53.98305476407678 -16.990714730406097 C54.38119150721205 -16.749361897006292, 54.77932825034731 -16.508009063606487, 55.0519930736057 -16.342718045390892 M55.0519930736057 -16.342718045390892 C55.37024826559662 -16.12071700050324, 55.688503457587544 -15.898715955615588, 56.07721784457871 -15.627565626425154 M55.0519930736057 -16.342718045390892 C55.29494248071075 -16.173247056104735, 55.5378918878158 -16.003776066818578, 56.07721784457871 -15.627565626425154 M56.07721784457871 -15.627565626425154 C56.35692311076751 -15.404508119909318, 56.63662837695631 -15.18145061339348, 57.054516208501866 -14.848196188198123 M56.07721784457871 -15.627565626425154 C56.396166562284606 -15.373212511636535, 56.715115279990506 -15.118859396847913, 57.054516208501866 -14.848196188198123 M57.054516208501866 -14.848196188198123 C57.36270060787551 -14.56831127079936, 57.670885007249154 -14.288426353400594, 57.97987223676799 -14.007812326905688 M57.054516208501866 -14.848196188198123 C57.36683395023022 -14.564557478635052, 57.67915169195859 -14.28091876907198, 57.97987223676799 -14.007812326905688 M57.97987223676799 -14.007812326905688 C58.26678905479473 -13.711547155984231, 58.55370587282147 -13.415281985062773, 58.84948344296865 -13.10986736009568 M57.97987223676799 -14.007812326905688 C58.27395309405003 -13.704149697274572, 58.56803395133207 -13.400487067643455, 58.84948344296865 -13.10986736009568 M58.84948344296865 -13.10986736009568 C59.1435910527942 -12.764391826397503, 59.43769866261975 -12.418916292699327, 59.65977640812658 -12.158051136245305 M58.84948344296865 -13.10986736009568 C59.073851230245594 -12.84631219027142, 59.298219017522534 -12.582757020447156, 59.65977640812658 -12.158051136245305 M59.65977640812658 -12.158051136245305 C59.882248420285585 -11.859958907569492, 60.10472043244459 -11.561866678893677, 60.407421464640635 -11.156274872382312 M59.65977640812658 -12.158051136245305 C59.92764711192999 -11.799128796671877, 60.1955178157334 -11.440206457098446, 60.407421464640635 -11.156274872382312 M60.407421464640635 -11.156274872382312 C60.57581894079407 -10.897571127956743, 60.74421641694751 -10.638867383531174, 61.08934637860425 -10.108655082055241 M60.407421464640635 -11.156274872382312 C60.65829385967936 -10.770867504932257, 60.90916625471809 -10.385460137482204, 61.08934637860425 -10.108655082055241 M61.08934637860425 -10.108655082055241 C61.28004583308403 -9.77004889021267, 61.470745287563815 -9.431442698370102, 61.702748974273504 -9.019496659696287 M61.08934637860425 -10.108655082055241 C61.294348557241 -9.744652955164103, 61.499350735877755 -9.380650828272964, 61.702748974273504 -9.019496659696287 M61.702748974273504 -9.019496659696287 C61.8910217114283 -8.628544292603115, 62.07929444858309 -8.237591925509943, 62.24510864880834 -7.893275190886684 M61.702748974273504 -9.019496659696287 C61.89903311687484 -8.61190843777675, 62.09531725947618 -8.204320215857212, 62.24510864880834 -7.893275190886684 M62.24510864880834 -7.893275190886684 C62.41722189608987 -7.4681521425180435, 62.5893351433714 -7.043029094149402, 62.714196729970325 -6.734618561215508 M62.24510864880834 -7.893275190886684 C62.397604121585815 -7.516608424826932, 62.55009959436329 -7.139941658767179, 62.714196729970325 -6.734618561215508 M62.714196729970325 -6.734618561215508 C62.79709438015296 -6.484944046812288, 62.8799920303356 -6.235269532409068, 63.10808563421488 -5.548287939305138 M62.714196729970325 -6.734618561215508 C62.8427757844736 -6.34735893534188, 62.97135483897688 -5.960099309468252, 63.10808563421488 -5.548287939305138 M63.10808563421488 -5.548287939305138 C63.23451062113644 -5.066174671237298, 63.360935608058 -4.584061403169458, 63.42515678754556 -4.339158212148133 M63.10808563421488 -5.548287939305138 C63.17300001650967 -5.300741265543863, 63.237914398804456 -5.053194591782589, 63.42515678754556 -4.339158212148133 M63.42515678754556 -4.339158212148133 C63.49611424176256 -3.9748066816070993, 63.56707169597956 -3.6104551510660654, 63.664107276581774 -3.1121979531509023 M63.42515678754556 -4.339158212148133 C63.520031758097815 -3.8519952901944134, 63.61490672865008 -3.3648323682406933, 63.664107276581774 -3.1121979531509023 M63.664107276581774 -3.1121979531509023 C63.71463281766291 -2.7203318339222324, 63.765158358744046 -2.3284657146935626, 63.82395520250937 -1.872449005199798 M63.664107276581774 -3.1121979531509023 C63.704382815087186 -2.7998288298076, 63.7446583535926 -2.4874597064642976, 63.82395520250937 -1.872449005199798 M63.82395520250937 -1.872449005199798 C63.84693245021822 -1.5145598252339139, 63.86990969792707 -1.1566706452680295, 63.90404371591342 -0.6250057626472757 M63.82395520250937 -1.872449005199798 C63.84734974553157 -1.5080601138938599, 63.87074428855376 -1.1436712225879218, 63.90404371591342 -0.6250057626472757 M63.90404371591342 -0.6250057626472757 C63.90404371591342 -0.2903068408112175, 63.90404371591342 0.04439208102484071, 63.90404371591342 0.625005762647271 M63.90404371591342 -0.6250057626472757 C63.90404371591342 -0.24625647679018853, 63.90404371591342 0.13249280906689864, 63.90404371591342 0.625005762647271 M63.90404371591342 0.625005762647271 C63.88109688940956 0.9824211077897438, 63.858150062905715 1.3398364529322166, 63.82395520250937 1.8724490051997846 M63.90404371591342 0.625005762647271 C63.87400359028935 1.0929049671951478, 63.84396346466527 1.5608041717430248, 63.82395520250937 1.8724490051997846 M63.82395520250937 1.8724490051997846 C63.78831484871555 2.148868551240702, 63.752674494921735 2.4252880972816193, 63.664107276581774 3.1121979531508885 M63.82395520250937 1.8724490051997846 C63.76271620769403 2.347406555980211, 63.701477212878686 2.8223641067606375, 63.664107276581774 3.1121979531508885 M63.664107276581774 3.1121979531508885 C63.57114156930428 3.589557211711641, 63.47817586202679 4.0669164702723934, 63.42515678754556 4.339158212148129 M63.664107276581774 3.1121979531508885 C63.599203699131756 3.4454641059807853, 63.53430012168174 3.7787302588106817, 63.42515678754556 4.339158212148129 M63.42515678754556 4.339158212148129 C63.31556534523224 4.757077878920386, 63.20597390291891 5.174997545692644, 63.10808563421489 5.548287939305125 M63.42515678754556 4.339158212148129 C63.305204189840204 4.796589454983353, 63.185251592134854 5.254020697818577, 63.10808563421489 5.548287939305125 M63.10808563421489 5.548287939305125 C62.99174971009166 5.898673207151951, 62.87541378596843 6.249058474998777, 62.714196729970325 6.734618561215495 M63.10808563421489 5.548287939305125 C62.97024494356473 5.963442137611834, 62.83240425291457 6.378596335918542, 62.714196729970325 6.734618561215495 M62.714196729970325 6.734618561215495 C62.58153494823001 7.062295726955138, 62.4488731664897 7.3899728926947805, 62.24510864880834 7.893275190886679 M62.714196729970325 6.734618561215495 C62.543624237776356 7.155935914729391, 62.37305174558239 7.577253268243287, 62.24510864880834 7.893275190886679 M62.24510864880834 7.893275190886679 C62.11455411389309 8.16437447605774, 61.98399957897785 8.435473761228799, 61.702748974273504 9.019496659696284 M62.24510864880834 7.893275190886679 C62.05418895065926 8.289724029120388, 61.86326925251017 8.686172867354095, 61.702748974273504 9.019496659696284 M61.702748974273504 9.019496659696284 C61.53069347863059 9.324998614718448, 61.358637982987666 9.63050056974061, 61.08934637860425 10.108655082055236 M61.702748974273504 9.019496659696284 C61.511051045542295 9.359875743678744, 61.31935311681108 9.700254827661203, 61.08934637860425 10.108655082055236 M61.08934637860425 10.108655082055236 C60.909569169272196 10.384841152529384, 60.729791959940144 10.661027223003531, 60.40742146464064 11.156274872382301 M61.08934637860425 10.108655082055236 C60.82573045575154 10.513639930343928, 60.56211453289883 10.918624778632617, 60.40742146464064 11.156274872382301 M60.40742146464064 11.156274872382301 C60.19207061705995 11.444825389274621, 59.97671976947925 11.733375906166943, 59.65977640812658 12.158051136245302 M60.40742146464064 11.156274872382301 C60.11874797321902 11.543071052191188, 59.8300744817974 11.929867232000074, 59.65977640812658 12.158051136245302 M59.65977640812658 12.158051136245302 C59.33818494676299 12.535810765835514, 59.01659348539941 12.913570395425726, 58.84948344296866 13.10986736009567 M59.65977640812658 12.158051136245302 C59.39772460293886 12.465872097788932, 59.135672797751134 12.773693059332563, 58.84948344296866 13.10986736009567 M58.84948344296866 13.10986736009567 C58.56138439116399 13.407353284456041, 58.27328533935931 13.704839208816413, 57.97987223676799 14.007812326905684 M58.84948344296866 13.10986736009567 C58.62431259742306 13.342374744991737, 58.39914175187745 13.574882129887804, 57.97987223676799 14.007812326905684 M57.97987223676799 14.007812326905684 C57.71450715901141 14.248809869348998, 57.449142081254834 14.489807411792313, 57.05451620850189 14.848196188198111 M57.97987223676799 14.007812326905684 C57.731852116057986 14.233057638281718, 57.483831995347984 14.45830294965775, 57.05451620850189 14.848196188198111 M57.05451620850189 14.848196188198111 C56.6966281756412 15.133602370603976, 56.33874014278052 15.41900855300984, 56.07721784457871 15.627565626425152 M57.05451620850189 14.848196188198111 C56.77671710266543 15.06973358255801, 56.49891799682897 15.291270976917911, 56.07721784457871 15.627565626425152 M56.07721784457871 15.627565626425152 C55.7584393735691 15.849931688103863, 55.43966090255948 16.072297749782575, 55.05199307360571 16.34271804539089 M56.07721784457871 15.627565626425152 C55.86795536506394 15.773538073307922, 55.65869288554917 15.919510520190691, 55.05199307360571 16.34271804539089 M55.05199307360571 16.34271804539089 C54.7503791204272 16.52555819628803, 54.44876516724869 16.708398347185177, 53.98305476407678 16.990714730406093 M55.05199307360571 16.34271804539089 C54.660678758799925 16.579935082644322, 54.26936444399414 16.817152119897756, 53.98305476407678 16.990714730406093 M53.98305476407678 16.990714730406093 C53.71871115148759 17.128622623773712, 53.454367538898396 17.26653051714133, 52.87479541279239 17.56889292409717 M53.98305476407678 16.990714730406093 C53.60095421161672 17.190056343877426, 53.21885365915665 17.38939795734876, 52.87479541279239 17.56889292409717 M52.87479541279239 17.56889292409717 C52.444396164140684 17.75941790413519, 52.01399691548898 17.949942884173215, 51.731769095147804 18.07487676824742 M52.87479541279239 17.56889292409717 C52.64310548623036 17.6714551817487, 52.411415559668335 17.77401743940023, 51.731769095147804 18.07487676824742 M51.731769095147804 18.07487676824742 C51.399416557319825 18.1971855744013, 51.067064019491845 18.319494380555177, 50.55867275146062 18.506587066708033 M51.731769095147804 18.07487676824742 C51.34464306673114 18.217342725258533, 50.95751703831447 18.359808682269644, 50.55867275146062 18.506587066708033 M50.55867275146062 18.506587066708033 C50.23650859182539 18.602203698213586, 49.91434443219016 18.69782032971914, 49.36032688623541 18.86224982926107 M50.55867275146062 18.506587066708033 C50.13375443598726 18.632700592298775, 49.70883612051389 18.758814117889518, 49.36032688623541 18.86224982926107 M49.36032688623541 18.86224982926107 C49.1135609364127 18.91857254700979, 48.866794986589994 18.974895264758512, 48.141655759676766 19.140403561325773 M49.36032688623541 18.86224982926107 C49.09730401090902 18.922283084169653, 48.83428113558262 18.98231633907824, 48.141655759676766 19.140403561325773 M48.141655759676766 19.140403561325773 C47.81530908751375 19.19316476042485, 47.48896241535073 19.245925959523927, 46.90766715284788 19.3399052695533 M48.141655759676766 19.140403561325773 C47.875576299970135 19.18342122489411, 47.6094968402635 19.226438888462454, 46.90766715284788 19.3399052695533 M46.90766715284788 19.3399052695533 C46.413835605807705 19.387544604976934, 45.920004058767525 19.435183940400574, 45.6634317896239 19.45993515863156 M46.90766715284788 19.3399052695533 C46.4731353227126 19.381824032605465, 46.03860349257732 19.423742795657628, 45.6634317896239 19.45993515863156 M45.6634317896239 19.45993515863156 C45.32975251695678 19.47063560343869, 44.99607324428966 19.481336048245822, 44.41406250000001 19.5 M45.6634317896239 19.45993515863156 C45.204504486722165 19.47465206398781, 44.74557718382042 19.489368969344067, 44.41406250000001 19.5 M44.41406250000001 19.5 C44.41406250000001 19.5, 44.4140625 19.5, 44.4140625 19.5 M44.41406250000001 19.5 C44.41406250000001 19.5, 44.41406250000001 19.5, 44.4140625 19.5 M44.4140625 19.5 C23.03069332279239 19.5, 1.6473241455847827 19.5, -44.41406249999999 19.5 M44.4140625 19.5 C20.662618646762855 19.5, -3.08882520647429 19.5, -44.41406249999999 19.5 M-44.41406249999999 19.5 C-44.82777054022629 19.48673318838379, -45.24147858045258 19.473466376767586, -45.66343178962389 19.45993515863156 M-44.41406249999999 19.5 C-44.726685019431905 19.48997480428464, -45.03930753886382 19.479949608569278, -45.66343178962389 19.45993515863156 M-45.66343178962389 19.45993515863156 C-46.15401747706891 19.41260894737935, -46.64460316451393 19.36528273612714, -46.90766715284787 19.3399052695533 M-45.66343178962389 19.45993515863156 C-45.93908354875781 19.433343364947653, -46.21473530789172 19.406751571263747, -46.90766715284787 19.3399052695533 M-46.90766715284787 19.3399052695533 C-47.231385029703226 19.287569073692953, -47.55510290655858 19.23523287783261, -48.14165575967676 19.140403561325773 M-46.90766715284787 19.3399052695533 C-47.26614349234726 19.28194959500857, -47.624619831846644 19.22399392046384, -48.14165575967676 19.140403561325773 M-48.14165575967676 19.140403561325773 C-48.478724723203385 19.06346976998137, -48.815793686730004 18.986535978636965, -49.360326886235384 18.862249829261074 M-48.14165575967676 19.140403561325773 C-48.45969869099688 19.067812337676042, -48.777741622316995 18.995221114026307, -49.360326886235384 18.862249829261074 M-49.360326886235384 18.862249829261074 C-49.77409563258869 18.739445437259885, -50.187864378941995 18.616641045258696, -50.55867275146059 18.506587066708043 M-49.360326886235384 18.862249829261074 C-49.833359808112675 18.72185614104837, -50.306392729989966 18.58146245283567, -50.55867275146059 18.506587066708043 M-50.55867275146059 18.506587066708043 C-50.80081677519508 18.417475827618933, -51.04296079892957 18.328364588529823, -51.7317690951478 18.074876768247425 M-50.55867275146059 18.506587066708043 C-50.85125400557997 18.398914460600647, -51.143835259699344 18.291241854493254, -51.7317690951478 18.074876768247425 M-51.7317690951478 18.074876768247425 C-52.11630220464614 17.90465536744192, -52.50083531414448 17.734433966636413, -52.87479541279238 17.568892924097174 M-51.7317690951478 18.074876768247425 C-52.01876110815494 17.947833917404747, -52.30575312116209 17.820791066562073, -52.87479541279238 17.568892924097174 M-52.87479541279238 17.568892924097174 C-53.161583594642806 17.419275713322406, -53.44837177649323 17.269658502547635, -53.98305476407678 16.990714730406097 M-52.87479541279238 17.568892924097174 C-53.193847193048775 17.402443814699833, -53.51289897330517 17.235994705302492, -53.98305476407678 16.990714730406097 M-53.98305476407678 16.990714730406097 C-54.29592024133431 16.801053839490958, -54.60878571859183 16.611392948575823, -55.051993073605686 16.3427180453909 M-53.98305476407678 16.990714730406097 C-54.36281363989854 16.760502668172077, -54.7425725157203 16.530290605938053, -55.051993073605686 16.3427180453909 M-55.051993073605686 16.3427180453909 C-55.28656330184535 16.179092008552434, -55.52113353008501 16.01546597171397, -56.07721784457871 15.627565626425156 M-55.051993073605686 16.3427180453909 C-55.329456951206645 16.149171255594144, -55.60692082880761 15.955624465797388, -56.07721784457871 15.627565626425156 M-56.07721784457871 15.627565626425156 C-56.34888422311432 15.410918918888953, -56.620550601649924 15.194272211352752, -57.054516208501866 14.848196188198125 M-56.07721784457871 15.627565626425156 C-56.43468523410126 15.34249489588766, -56.792152623623814 15.057424165350163, -57.054516208501866 14.848196188198125 M-57.054516208501866 14.848196188198125 C-57.286167919656236 14.637816233296133, -57.517819630810614 14.427436278394142, -57.979872236767974 14.007812326905697 M-57.054516208501866 14.848196188198125 C-57.36238571182557 14.568597251060222, -57.67025521514927 14.288998313922319, -57.979872236767974 14.007812326905697 M-57.979872236767974 14.007812326905697 C-58.261107248456064 13.717414087513875, -58.54234226014415 13.427015848122055, -58.849483442968655 13.109867360095677 M-57.979872236767974 14.007812326905697 C-58.2406932559131 13.738493210834438, -58.501514275058234 13.46917409476318, -58.849483442968655 13.109867360095677 M-58.849483442968655 13.109867360095677 C-59.16937347502351 12.734106326185572, -59.48926350707836 12.358345292275464, -59.659776408126575 12.158051136245307 M-58.849483442968655 13.109867360095677 C-59.10012528042756 12.815449195891865, -59.35076711788648 12.521031031688056, -59.659776408126575 12.158051136245307 M-59.659776408126575 12.158051136245307 C-59.94924153327982 11.770194239355368, -60.23870665843305 11.38233734246543, -60.407421464640635 11.156274872382316 M-59.659776408126575 12.158051136245307 C-59.893225154288466 11.845251084006666, -60.126673900450356 11.532451031768023, -60.407421464640635 11.156274872382316 M-60.407421464640635 11.156274872382316 C-60.61848358903844 10.832026771191197, -60.829545713436254 10.507778670000079, -61.08934637860425 10.108655082055249 M-60.407421464640635 11.156274872382316 C-60.559545080537845 10.922572147453671, -60.71166869643505 10.688869422525027, -61.08934637860425 10.108655082055249 M-61.08934637860425 10.108655082055249 C-61.24607804069768 9.830362145206596, -61.40280970279112 9.552069208357942, -61.702748974273504 9.019496659696289 M-61.08934637860425 10.108655082055249 C-61.25396638505928 9.816355591011096, -61.41858639151431 9.524056099966945, -61.702748974273504 9.019496659696289 M-61.702748974273504 9.019496659696289 C-61.899260185418754 8.611436925086828, -62.095771396564004 8.203377190477367, -62.24510864880834 7.893275190886686 M-61.702748974273504 9.019496659696289 C-61.870998758078166 8.670122383657244, -62.03924854188282 8.320748107618197, -62.24510864880834 7.893275190886686 M-62.24510864880834 7.893275190886686 C-62.411117883503465 7.48322917161952, -62.57712711819859 7.073183152352355, -62.714196729970325 6.73461856121551 M-62.24510864880834 7.893275190886686 C-62.407576459793155 7.491976556652755, -62.57004427077797 7.090677922418825, -62.714196729970325 6.73461856121551 M-62.714196729970325 6.73461856121551 C-62.8483267370226 6.330640350688466, -62.98245674407488 5.9266621401614215, -63.10808563421488 5.5482879393051325 M-62.714196729970325 6.73461856121551 C-62.81605732818049 6.427830668688834, -62.91791792639066 6.121042776162159, -63.10808563421488 5.5482879393051325 M-63.10808563421488 5.5482879393051325 C-63.23203818513897 5.075603141256197, -63.355990736063056 4.602918343207262, -63.42515678754556 4.339158212148136 M-63.10808563421488 5.5482879393051325 C-63.21723105097929 5.132069161259612, -63.326376467743685 4.715850383214093, -63.42515678754556 4.339158212148136 M-63.42515678754556 4.339158212148136 C-63.485578121734825 4.028907431139746, -63.5459994559241 3.7186566501313574, -63.664107276581774 3.112197953150904 M-63.42515678754556 4.339158212148136 C-63.481643549336965 4.049110628830593, -63.53813031112837 3.7590630455130496, -63.664107276581774 3.112197953150904 M-63.664107276581774 3.112197953150904 C-63.72232919963975 2.660640215132368, -63.78055112269773 2.209082477113832, -63.82395520250937 1.872449005199809 M-63.664107276581774 3.112197953150904 C-63.69854311714238 2.845120373888715, -63.73297895770299 2.578042794626526, -63.82395520250937 1.872449005199809 M-63.82395520250937 1.872449005199809 C-63.852118664730384 1.433780347969985, -63.88028212695139 0.995111690740161, -63.90404371591342 0.6250057626472781 M-63.82395520250937 1.872449005199809 C-63.85011701863546 1.4649576015981058, -63.87627883476154 1.0574661979964026, -63.90404371591342 0.6250057626472781 M-63.90404371591342 0.6250057626472781 C-63.90404371591342 0.3479567888157696, -63.90404371591342 0.07090781498426102, -63.90404371591342 -0.6250057626472687 M-63.90404371591342 0.6250057626472781 C-63.90404371591342 0.15443069114583086, -63.90404371591342 -0.31614438035561643, -63.90404371591342 -0.6250057626472687 M-63.90404371591342 -0.6250057626472687 C-63.876944409525215 -1.0470993338099204, -63.849845103137014 -1.469192904972572, -63.82395520250937 -1.8724490051997822 M-63.90404371591342 -0.6250057626472687 C-63.885600334024744 -0.9122763227932322, -63.86715695213607 -1.1995468829391958, -63.82395520250937 -1.8724490051997822 M-63.82395520250937 -1.8724490051997822 C-63.783230796340206 -2.1882994575041725, -63.74250639017105 -2.504149909808563, -63.664107276581774 -3.112197953150895 M-63.82395520250937 -1.8724490051997822 C-63.77347644083017 -2.2639523126246126, -63.722997679150986 -2.6554556200494432, -63.664107276581774 -3.112197953150895 M-63.664107276581774 -3.112197953150895 C-63.58019692130927 -3.5430598930153434, -63.496286566036765 -3.9739218328797916, -63.42515678754556 -4.339158212148126 M-63.664107276581774 -3.112197953150895 C-63.57351730566943 -3.5773583075886766, -63.48292733475708 -4.042518662026458, -63.42515678754556 -4.339158212148126 M-63.42515678754556 -4.339158212148126 C-63.35157409134349 -4.619760923708908, -63.27799139514141 -4.90036363526969, -63.10808563421489 -5.548287939305123 M-63.42515678754556 -4.339158212148126 C-63.327106285423035 -4.713067272097743, -63.22905578330052 -5.08697633204736, -63.10808563421489 -5.548287939305123 M-63.10808563421489 -5.548287939305123 C-63.02267729347267 -5.805524253649595, -62.93726895273044 -6.062760567994067, -62.71419672997033 -6.734618561215485 M-63.10808563421489 -5.548287939305123 C-63.0189369548894 -5.816789557520372, -62.92978827556391 -6.085291175735621, -62.71419672997033 -6.734618561215485 M-62.71419672997033 -6.734618561215485 C-62.58431314200062 -7.055433534629022, -62.4544295540309 -7.376248508042558, -62.24510864880834 -7.893275190886676 M-62.71419672997033 -6.734618561215485 C-62.56723532511674 -7.097616072509325, -62.42027392026315 -7.460613583803165, -62.24510864880834 -7.893275190886676 M-62.24510864880834 -7.893275190886676 C-62.105865010296455 -8.182417585593194, -61.96662137178457 -8.471559980299714, -61.702748974273504 -9.019496659696282 M-62.24510864880834 -7.893275190886676 C-62.11023987092522 -8.173333093890536, -61.97537109304211 -8.453390996894395, -61.702748974273504 -9.019496659696282 M-61.702748974273504 -9.019496659696282 C-61.45822246927406 -9.453678230316411, -61.21369596427462 -9.887859800936543, -61.08934637860425 -10.108655082055243 M-61.702748974273504 -9.019496659696282 C-61.49224582250834 -9.393266321410847, -61.28174267074318 -9.767035983125412, -61.08934637860425 -10.108655082055243 M-61.08934637860425 -10.108655082055243 C-60.845480384108484 -10.483298736789331, -60.60161438961272 -10.85794239152342, -60.40742146464064 -11.156274872382308 M-61.08934637860425 -10.108655082055243 C-60.90158273683964 -10.39711045740318, -60.71381909507504 -10.685565832751115, -60.40742146464064 -11.156274872382308 M-60.40742146464064 -11.156274872382308 C-60.11370052559572 -11.549834172174489, -59.81997958655079 -11.943393471966669, -59.65977640812659 -12.158051136245302 M-60.40742146464064 -11.156274872382308 C-60.23459349852126 -11.38784860203067, -60.06176553240187 -11.619422331679033, -59.65977640812659 -12.158051136245302 M-59.65977640812659 -12.158051136245302 C-59.3812356395561 -12.485240972426919, -59.102694870985616 -12.812430808608536, -58.84948344296866 -13.10986736009567 M-59.65977640812659 -12.158051136245302 C-59.42185183920728 -12.437530873189417, -59.18392727028797 -12.717010610133531, -58.84948344296866 -13.10986736009567 M-58.84948344296866 -13.10986736009567 C-58.67252857943538 -13.292587784958272, -58.49557371590209 -13.475308209820874, -57.979872236767996 -14.007812326905677 M-58.84948344296866 -13.10986736009567 C-58.6477710957256 -13.31815191951583, -58.446058748482535 -13.526436478935993, -57.979872236767996 -14.007812326905677 M-57.979872236767996 -14.007812326905677 C-57.62970086568317 -14.325828701098148, -57.279529494598336 -14.643845075290619, -57.05451620850189 -14.848196188198107 M-57.979872236767996 -14.007812326905677 C-57.62587362163884 -14.329304502875877, -57.27187500650968 -14.650796678846078, -57.05451620850189 -14.848196188198107 M-57.05451620850189 -14.848196188198107 C-56.697134322318036 -15.13319873209833, -56.339752436134184 -15.418201275998554, -56.07721784457872 -15.627565626425149 M-57.05451620850189 -14.848196188198107 C-56.66919382360164 -15.155480536296759, -56.28387143870139 -15.462764884395412, -56.07721784457872 -15.627565626425149 M-56.07721784457872 -15.627565626425149 C-55.677460458424655 -15.906419073787891, -55.27770307227059 -16.185272521150633, -55.051993073605715 -16.342718045390885 M-56.07721784457872 -15.627565626425149 C-55.83824315935784 -15.794264021787848, -55.59926847413695 -15.960962417150547, -55.051993073605715 -16.342718045390885 M-55.051993073605715 -16.342718045390885 C-54.727715050508586 -16.539297288661555, -54.40343702741145 -16.735876531932224, -53.98305476407679 -16.99071473040609 M-55.051993073605715 -16.342718045390885 C-54.642832719123135 -16.59075345677136, -54.233672364640555 -16.838788868151838, -53.98305476407679 -16.99071473040609 M-53.98305476407679 -16.99071473040609 C-53.73588948543458 -17.119660697956814, -53.48872420679238 -17.248606665507534, -52.87479541279239 -17.56889292409717 M-53.98305476407679 -16.99071473040609 C-53.588922237197316 -17.19633341722518, -53.19478971031785 -17.401952104044266, -52.87479541279239 -17.56889292409717 M-52.87479541279239 -17.56889292409717 C-52.44307603051808 -17.76000228812955, -52.01135664824376 -17.951111652161927, -51.731769095147804 -18.07487676824742 M-52.87479541279239 -17.56889292409717 C-52.5186492336753 -17.726548272891268, -52.1625030545582 -17.884203621685366, -51.731769095147804 -18.07487676824742 M-51.731769095147804 -18.07487676824742 C-51.36044484260295 -18.21152752566769, -50.9891205900581 -18.348178283087957, -50.55867275146062 -18.506587066708033 M-51.731769095147804 -18.07487676824742 C-51.36143697595953 -18.211162411421288, -50.99110485677125 -18.34744805459516, -50.55867275146062 -18.506587066708033 M-50.55867275146062 -18.506587066708033 C-50.26222884993795 -18.59457006061417, -49.96578494841527 -18.682553054520305, -49.36032688623541 -18.862249829261067 M-50.55867275146062 -18.506587066708033 C-50.21905834989777 -18.607382838419515, -49.879443948334924 -18.708178610130997, -49.36032688623541 -18.862249829261067 M-49.36032688623541 -18.862249829261067 C-48.95163869803477 -18.955530241278197, -48.54295050983413 -19.048810653295327, -48.141655759676766 -19.140403561325773 M-49.36032688623541 -18.862249829261067 C-48.98579868084783 -18.947733448115837, -48.61127047546025 -19.033217066970607, -48.141655759676766 -19.140403561325773 M-48.141655759676766 -19.140403561325773 C-47.81631163472696 -19.193002676366287, -47.49096750977716 -19.2456017914068, -46.90766715284788 -19.3399052695533 M-48.141655759676766 -19.140403561325773 C-47.692887996307036 -19.212956853061407, -47.24412023293731 -19.285510144797044, -46.90766715284788 -19.3399052695533 M-46.90766715284788 -19.3399052695533 C-46.631471840622986 -19.36654949915017, -46.3552765283981 -19.393193728747047, -45.6634317896239 -19.45993515863156 M-46.90766715284788 -19.3399052695533 C-46.495552434243926 -19.37966148081656, -46.08343771563998 -19.41941769207982, -45.6634317896239 -19.45993515863156 M-45.6634317896239 -19.45993515863156 C-45.20247251226519 -19.47471722545365, -44.74151323490648 -19.489499292275738, -44.41406250000001 -19.5 M-45.6634317896239 -19.45993515863156 C-45.24876447437574 -19.4732327323306, -44.83409715912757 -19.486530306029646, -44.41406250000001 -19.5 M-44.41406250000001 -19.5 C-44.41406250000001 -19.5, -44.41406250000001 -19.5, -44.4140625 -19.5 M-44.41406250000001 -19.5 C-44.41406250000001 -19.5, -44.4140625 -19.5, -44.4140625 -19.5" stroke="#3B82F6" stroke-width="1.3" fill="none" stroke-dasharray="0 0" style=""/></g><g class="label" style="" transform="translate(-51.5390625, -12)"><rect/><foreignObject width="103.078125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Human or agent</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-ID-1" transform="translate(158.7578125, 197)"><rect class="basic label-container" style="" x="-113.765625" y="-27" width="227.53125" height="54"/><g class="label" style="" transform="translate(-83.765625, -12)"><rect/><foreignObject width="167.53125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>sso: verify identity locally</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-KEYS-2" transform="translate(158.7578125, 301)"><rect class="basic label-container" style="" x="-92.0703125" y="-27" width="184.140625" height="54"/><g class="label" style="" transform="translate(-62.0703125, -12)"><rect/><foreignObject width="124.140625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>keys: signing + CA</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-PAY-3" transform="translate(158.7578125, 405)"><rect class="basic label-container" style="" x="-125.7578125" y="-27" width="251.515625" height="54"/><g class="label" style="" transform="translate(-95.7578125, -12)"><rect/><foreignObject width="191.515625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>x402: verify payments locally</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-MET-4" transform="translate(158.7578125, 533)"><rect class="basic label-container" style="" x="-124.09375" y="-27" width="248.1875" height="54"/><g class="label" style="" transform="translate(-94.09375, -12)"><rect/><foreignObject width="188.1875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>meter: credit ledger, your DB</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-UIX-5" transform="translate(158.7578125, 637)"><rect class="basic label-container" style="" x="-106.984375" y="-27" width="213.96875" height="54"/><g class="label" style="" transform="translate(-76.984375, -12)"><rect/><foreignObject width="153.96875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>switcher, alerts, receipts</p></span></div></foreignObject></g></g><g class="node default drm3 " id="flowchart-HUB-6" transform="translate(655.71875, 74.75)"><rect class="basic label-container" style="fill:#EEF2FF !important;stroke:#3B82F6 !important" x="-75.1015625" y="-39" width="150.203125" height="78"/><g class="label" style="color:#1e1b4b !important" transform="translate(-45.1015625, -24)"><rect/><foreignObject width="90.203125" height="48"><div style="color: rgb(30, 27, 75) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#1e1b4b !important" class="nodeLabel "><p>drm3.network<br />account hub</p></span></div></foreignObject></g></g><g class="node default drm3 " id="flowchart-REG-7" transform="translate(655.71875, 237)"><rect class="basic label-container" style="fill:#EEF2FF !important;stroke:#3B82F6 !important" x="-95.328125" y="-39" width="190.65625" height="78"/><g class="label" style="color:#1e1b4b !important" transform="translate(-65.328125, -24)"><rect/><foreignObject width="130.65625" height="48"><div style="color: rgb(30, 27, 75) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#1e1b4b !important" class="nodeLabel "><p>status.drm3.network<br />registry + CA</p></span></div></foreignObject></g></g><g class="node default drm3 " id="flowchart-Q-8" transform="translate(655.71875, 533)"><rect class="basic label-container" style="fill:#EEF2FF !important;stroke:#3B82F6 !important" x="-96.203125" y="-39" width="192.40625" height="78"/><g class="label" style="color:#1e1b4b !important" transform="translate(-66.203125, -24)"><rect/><foreignObject width="132.40625" height="48"><div style="color: rgb(30, 27, 75) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#1e1b4b !important" class="nodeLabel "><p>queue.drm3.network<br />metered inference</p></span></div></foreignObject></g></g><g class="node default chain " id="flowchart-CHAIN-9" transform="translate(655.71875, 405)"><rect class="basic label-container" style="fill:#FCE7F3 !important;stroke:#FB3D8E !important" x="-64.875" y="-39" width="129.75" height="78"/><g class="label" style="color:#1e1b4b !important" transform="translate(-34.875, -24)"><rect/><foreignObject width="69.75" height="48"><div style="color: rgb(30, 27, 75) !important; display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;" xmlns="http://www.w3.org/1999/xhtml"><span style="color:#1e1b4b !important" class="nodeLabel "><p>Base chain<br />USDC</p></span></div></foreignObject></g></g></g></g></g></svg>
@@ -0,0 +1,11 @@
1
+ %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B','noteBkgColor':'#FEF3C7','noteBorderColor':'#FBBF24','noteTextColor':'#1e1b4b'}}}%%
2
+ sequenceDiagram
3
+ actor U as Human or agent
4
+ participant App as Your app
5
+ participant Hub as drm3.network
6
+ U->>App: click sign in
7
+ App-->>U: redirect to signInUrl(returnTo)
8
+ Note over App,Hub: GET /account?login&next=...
9
+ U->>Hub: authenticate once
10
+ Hub-->>App: redirect back with a drm3_sso token
11
+ App->>App: verifySsoToken() runs locally