@drm3/sdk 0.1.2 → 0.1.3

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/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
 
@@ -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
@@ -0,0 +1 @@
1
+ <svg id="mermaid-svg" width="100%" xmlns="http://www.w3.org/2000/svg" style="max-width: 842px;" viewBox="-50 -10 842 476" role="graphics-document document" aria-roledescription="sequence" 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><g><rect x="592" y="390" fill="#eaeaea" stroke="#666" width="150" height="65" name="Hub" rx="3" ry="3" class="actor actor-bottom"/><text x="667" y="422.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="667" dy="0">drm3.network</tspan></text></g><g><rect x="266" y="390" fill="#eaeaea" stroke="#666" width="150" height="65" name="App" rx="3" ry="3" class="actor actor-bottom"/><text x="341" y="422.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="341" dy="0">Your app</tspan></text></g><g/><g><line id="actor2" x1="667" y1="65" x2="667" y2="390" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="Hub"/><g id="root-2"><rect x="592" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="Hub" rx="3" ry="3" class="actor actor-top"/><text x="667" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="667" dy="0">drm3.network</tspan></text></g></g><g><line id="actor1" x1="341" y1="65" x2="341" y2="390" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="App"/><g id="root-1"><rect x="266" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="App" rx="3" ry="3" class="actor actor-top"/><text x="341" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="341" dy="0">Your app</tspan></text></g></g><g><line id="actor0" x1="75" y1="80" x2="75" y2="390" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="U"/></g><style>#mermaid-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@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(220.5882352941, 100%, 98.3333333333%);}#mermaid-svg .error-text{fill:rgb(8.5000000002, 5.7500000001, 0);stroke:rgb(8.5000000002, 5.7500000001, 0);}#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-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg p{margin:0;}#mermaid-svg .actor{stroke:#3B82F6;fill:#EEF2FF;}#mermaid-svg text.actor&gt;tspan{fill:#1e1b4b;stroke:none;}#mermaid-svg .actor-line{stroke:#3B82F6;}#mermaid-svg .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg .sequenceNumber{fill:#9b8b74;}#mermaid-svg #sequencenumber{fill:#333;}#mermaid-svg #crosshead path{fill:#333;stroke:#333;}#mermaid-svg .messageText{fill:#333;stroke:none;}#mermaid-svg .labelBox{stroke:#3B82F6;fill:#EEF2FF;}#mermaid-svg .labelText,#mermaid-svg .labelText&gt;tspan{fill:#1e1b4b;stroke:none;}#mermaid-svg .loopText,#mermaid-svg .loopText&gt;tspan{fill:#1e1b4b;stroke:none;}#mermaid-svg .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#3B82F6;fill:#3B82F6;}#mermaid-svg .note{stroke:#FBBF24;fill:#FEF3C7;}#mermaid-svg .noteText,#mermaid-svg .noteText&gt;tspan{fill:#1e1b4b;stroke:none;}#mermaid-svg .activation0{fill:hsl(-79.4117647059, 100%, 93.3333333333%);stroke:hsl(-79.4117647059, 100%, 83.3333333333%);}#mermaid-svg .activation1{fill:hsl(-79.4117647059, 100%, 93.3333333333%);stroke:hsl(-79.4117647059, 100%, 83.3333333333%);}#mermaid-svg .activation2{fill:hsl(-79.4117647059, 100%, 93.3333333333%);stroke:hsl(-79.4117647059, 100%, 83.3333333333%);}#mermaid-svg .actorPopupMenu{position:absolute;}#mermaid-svg .actorPopupMenuPanel{position:absolute;fill:#EEF2FF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg .actor-man line{stroke:#3B82F6;fill:#EEF2FF;}#mermaid-svg .actor-man circle,#mermaid-svg line{stroke:#3B82F6;fill:#EEF2FF;stroke-width:2px;}#mermaid-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g/><defs><symbol id="computer" width="24" height="24"><path transform="scale(.5)" d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z"/></symbol></defs><defs><symbol id="database" fill-rule="evenodd" clip-rule="evenodd"><path transform="scale(.5)" d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z"/></symbol></defs><defs><symbol id="clock" width="24" height="24"><path transform="scale(.5)" d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z"/></symbol></defs><defs><marker id="arrowhead" refX="7.9" refY="5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M -1 0 L 10 5 L 0 10 z"/></marker></defs><defs><marker id="crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="4" refY="4.5"><path fill="none" stroke="#000000" stroke-width="1pt" d="M 1,2 L 6,7 M 6,2 L 1,7" style="stroke-dasharray: 0, 0;"/></marker></defs><defs><marker id="filled-head" refX="15.5" refY="7" markerWidth="20" markerHeight="28" orient="auto"><path d="M 18,7 L9,13 L14,7 L9,1 Z"/></marker></defs><defs><marker id="sequencenumber" refX="15" refY="15" markerWidth="60" markerHeight="40" orient="auto"><circle cx="15" cy="15" r="6"/></marker></defs><g><rect x="316" y="167" fill="#EDF2AE" stroke="#666" width="376" height="37" class="note"/><text x="504" y="172" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="504">GET /account?login&amp;next=...</tspan></text></g><g class="actor-man actor-top" name="U"><line id="actor-man-torso0" x1="75" y1="25" x2="75" y2="45"/><line id="actor-man-arms0" x1="57" y1="33" x2="93" y2="33"/><line x1="57" y1="60" x2="75" y2="45"/><line x1="75" y1="45" x2="91" y2="60"/><circle cx="75" cy="10" r="15" width="150" height="65"/><text x="75" y="67.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-man" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">Human or agent</tspan></text></g><text x="207" y="80" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">click sign in</text><line x1="76" y1="111" x2="337" y2="111" class="messageLine0" stroke-width="2" stroke="none" marker-end="url(#arrowhead)" style="fill: none;"/><text x="210" y="126" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">redirect to signInUrl(returnTo)</text><line x1="340" y1="157" x2="79" y2="157" class="messageLine1" stroke-width="2" stroke="none" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/><text x="370" y="219" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">authenticate once</text><line x1="76" y1="248" x2="663" y2="248" class="messageLine0" stroke-width="2" stroke="none" marker-end="url(#arrowhead)" style="fill: none;"/><text x="506" y="263" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">redirect back with a drm3_sso token</text><line x1="666" y1="294" x2="345" y2="294" class="messageLine1" stroke-width="2" stroke="none" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/><text x="342" y="309" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">verifySsoToken() runs locally</text><path d="M 342,340 C 402,330 402,370 342,360" class="messageLine0" stroke-width="2" stroke="none" marker-end="url(#arrowhead)" style="fill: none;"/><g class="actor-man actor-bottom" name="U"><line id="actor-man-torso2" x1="75" y1="415" x2="75" y2="435"/><line id="actor-man-arms2" x1="57" y1="423" x2="93" y2="423"/><line x1="57" y1="450" x2="75" y2="435"/><line x1="75" y1="435" x2="91" y2="450"/><circle cx="75" cy="400" r="15" width="150" height="65"/><text x="75" y="457.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-man" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">Human or agent</tspan></text></g></svg>
@@ -0,0 +1,10 @@
1
+ %%{init:{'theme':'base','themeVariables':{'actorBkg':'#EEF2FF','actorBorder':'#3B82F6','actorTextColor':'#1e1b4b','lineColor':'#64748B'}}}%%
2
+ sequenceDiagram
3
+ actor U as User
4
+ participant App as Your app
5
+ participant Hub as drm3.network
6
+ U->>App: click sign out
7
+ App-->>U: redirect to signOutUrl(returnTo)
8
+ Note over App,Hub: GET /account/signout?next=...
9
+ Hub->>Hub: clear the shared session
10
+ Hub-->>App: redirect back, signed out everywhere
@@ -0,0 +1 @@
1
+ <svg id="mermaid-svg" width="100%" xmlns="http://www.w3.org/2000/svg" style="max-width: 834.5px;" viewBox="-50 -10 834.5 430" role="graphics-document document" aria-roledescription="sequence" 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><g><rect x="583" y="344" fill="#eaeaea" stroke="#666" width="150" height="65" name="Hub" rx="3" ry="3" class="actor actor-bottom"/><text x="658" y="376.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="658" dy="0">drm3.network</tspan></text></g><g><rect x="277" y="344" fill="#eaeaea" stroke="#666" width="150" height="65" name="App" rx="3" ry="3" class="actor actor-bottom"/><text x="352" y="376.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="352" dy="0">Your app</tspan></text></g><g/><g><line id="actor2" x1="658" y1="65" x2="658" y2="344" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="Hub"/><g id="root-2"><rect x="583" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="Hub" rx="3" ry="3" class="actor actor-top"/><text x="658" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="658" dy="0">drm3.network</tspan></text></g></g><g><line id="actor1" x1="352" y1="65" x2="352" y2="344" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="App"/><g id="root-1"><rect x="277" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="App" rx="3" ry="3" class="actor actor-top"/><text x="352" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="352" dy="0">Your app</tspan></text></g></g><g><line id="actor0" x1="75" y1="80" x2="75" y2="344" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="U"/></g><style>#mermaid-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@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(220.5882352941, 100%, 98.3333333333%);}#mermaid-svg .error-text{fill:rgb(8.5000000002, 5.7500000001, 0);stroke:rgb(8.5000000002, 5.7500000001, 0);}#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-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg p{margin:0;}#mermaid-svg .actor{stroke:#3B82F6;fill:#EEF2FF;}#mermaid-svg text.actor&gt;tspan{fill:#1e1b4b;stroke:none;}#mermaid-svg .actor-line{stroke:#3B82F6;}#mermaid-svg .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg .sequenceNumber{fill:#9b8b74;}#mermaid-svg #sequencenumber{fill:#333;}#mermaid-svg #crosshead path{fill:#333;stroke:#333;}#mermaid-svg .messageText{fill:#333;stroke:none;}#mermaid-svg .labelBox{stroke:#3B82F6;fill:#EEF2FF;}#mermaid-svg .labelText,#mermaid-svg .labelText&gt;tspan{fill:#1e1b4b;stroke:none;}#mermaid-svg .loopText,#mermaid-svg .loopText&gt;tspan{fill:#1e1b4b;stroke:none;}#mermaid-svg .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#3B82F6;fill:#3B82F6;}#mermaid-svg .note{stroke:hsl(52.6829268293, 60%, 73.9215686275%);fill:#fff5ad;}#mermaid-svg .noteText,#mermaid-svg .noteText&gt;tspan{fill:#333;stroke:none;}#mermaid-svg .activation0{fill:hsl(-79.4117647059, 100%, 93.3333333333%);stroke:hsl(-79.4117647059, 100%, 83.3333333333%);}#mermaid-svg .activation1{fill:hsl(-79.4117647059, 100%, 93.3333333333%);stroke:hsl(-79.4117647059, 100%, 83.3333333333%);}#mermaid-svg .activation2{fill:hsl(-79.4117647059, 100%, 93.3333333333%);stroke:hsl(-79.4117647059, 100%, 83.3333333333%);}#mermaid-svg .actorPopupMenu{position:absolute;}#mermaid-svg .actorPopupMenuPanel{position:absolute;fill:#EEF2FF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg .actor-man line{stroke:#3B82F6;fill:#EEF2FF;}#mermaid-svg .actor-man circle,#mermaid-svg line{stroke:#3B82F6;fill:#EEF2FF;stroke-width:2px;}#mermaid-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g/><defs><symbol id="computer" width="24" height="24"><path transform="scale(.5)" d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z"/></symbol></defs><defs><symbol id="database" fill-rule="evenodd" clip-rule="evenodd"><path transform="scale(.5)" d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z"/></symbol></defs><defs><symbol id="clock" width="24" height="24"><path transform="scale(.5)" d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z"/></symbol></defs><defs><marker id="arrowhead" refX="7.9" refY="5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M -1 0 L 10 5 L 0 10 z"/></marker></defs><defs><marker id="crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="4" refY="4.5"><path fill="none" stroke="#000000" stroke-width="1pt" d="M 1,2 L 6,7 M 6,2 L 1,7" style="stroke-dasharray: 0, 0;"/></marker></defs><defs><marker id="filled-head" refX="15.5" refY="7" markerWidth="20" markerHeight="28" orient="auto"><path d="M 18,7 L9,13 L14,7 L9,1 Z"/></marker></defs><defs><marker id="sequencenumber" refX="15" refY="15" markerWidth="60" markerHeight="40" orient="auto"><circle cx="15" cy="15" r="6"/></marker></defs><g><rect x="327" y="167" fill="#EDF2AE" stroke="#666" width="356" height="37" class="note"/><text x="505" y="172" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="505">GET /account/signout?next=...</tspan></text></g><g class="actor-man actor-top" name="U"><line id="actor-man-torso0" x1="75" y1="25" x2="75" y2="45"/><line id="actor-man-arms0" x1="57" y1="33" x2="93" y2="33"/><line x1="57" y1="60" x2="75" y2="45"/><line x1="75" y1="45" x2="91" y2="60"/><circle cx="75" cy="10" r="15" width="150" height="65"/><text x="75" y="67.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-man" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">User</tspan></text></g><text x="212" y="80" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">click sign out</text><line x1="76" y1="111" x2="348" y2="111" class="messageLine0" stroke-width="2" stroke="none" marker-end="url(#arrowhead)" style="fill: none;"/><text x="215" y="126" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">redirect to signOutUrl(returnTo)</text><line x1="351" y1="157" x2="79" y2="157" class="messageLine1" stroke-width="2" stroke="none" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/><text x="659" y="219" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">clear the shared session</text><path d="M 659,248 C 719,238 719,278 659,268" class="messageLine0" stroke-width="2" stroke="none" marker-end="url(#arrowhead)" style="fill: none;"/><text x="507" y="293" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">redirect back, signed out everywhere</text><line x1="657" y1="324" x2="356" y2="324" class="messageLine1" stroke-width="2" stroke="none" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/><g class="actor-man actor-bottom" name="U"><line id="actor-man-torso2" x1="75" y1="369" x2="75" y2="389"/><line id="actor-man-arms2" x1="57" y1="377" x2="93" y2="377"/><line x1="57" y1="404" x2="75" y2="389"/><line x1="75" y1="389" x2="91" y2="404"/><circle cx="75" cy="354" r="15" width="150" height="65"/><text x="75" y="411.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-man" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">User</tspan></text></g></svg>