{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"redocly_category":"Guides","product":"Identity Management","type":"markdown"},"seo":{"title":"Token exchange","description":"Everything about Mosaic Journeys, SDKs, and APIs","siteUrl":"https://developer.transmitsecurity.com"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"token-exchange","__idx":0},"children":["Token exchange"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://datatracker.ietf.org/doc/html/rfc8693"},"children":["OAuth 2.0 Token Exchange (RFC 8693)"]}," allows a trusted client to exchange a user token issued to another trusted client, and to act on behalf of that already authenticated user against a different resource. The client presents an existing user token to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/user/oidc.openapi/other/oidctoken"},"children":["Token"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/oidc/token"]},") endpoint and receives a new user access token. Mosaic preserves the user as the subject, records the exchanging client as the actor, and recomputes authorization for the target resource."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Typical integrations include:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Agentic workflows where a backend client orchestrates calls across APIs using the same user context"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Backend-for-frontend (BFF) and API gateway patterns that retarget a user token at a downstream API"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Microservice chains where each service obtains a token for the next resource"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For example, a chat app authenticates the user and receives an access token intended for an MCP server. MCP servers typically act as a proxy: the MCP server exchanges that token with Mosaic for a new token targeted at a downstream API. The user stays the subject. The MCP server is the actor; the chat app is the source client."]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"flowchart LR\n  subgraph left [ ]\n    direction TB\n    User([\"User\"])\n    App[\"<b>Chat app</b><br/>source client\"]\n    Orig[\"Original access token\"]\n    User --> App\n    App -.-> Orig\n  end\n\n  subgraph te [Token exchange]\n    direction TB\n    MCP[\"<b>MCP server</b><br/>exchanging client (proxy)\"]\n    Mosaic[\"Mosaic<br/>Authorization policy\"]\n    MCP -->|exchange| Mosaic\n  end\n\n  subgraph right [ ]\n    direction TB\n    API[\"<b>API</b>\"]\n    New[\"Exchanged access token\"]\n    API -.-> New\n  end\n\n  App -->|original token| MCP\n  MCP -->|exchanged token| API\n","diagramHtml":"<svg id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 1231.78125px;\" viewBox=\"0 0 1231.78125 412\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>\n    #diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c foreignObject {\n      overflow: visible;\n    }\n  </style><style>#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .error-icon{fill:#552222;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .error-text{fill:#552222;stroke:#552222;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edge-thickness-normal{stroke-width:1px;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edge-thickness-thick{stroke-width:3.5px;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edge-pattern-solid{stroke-dasharray:0;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edge-pattern-dashed{stroke-dasharray:3;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edge-pattern-dotted{stroke-dasharray:2;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .marker{fill:#333333;stroke:#333333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .marker.cross{stroke:#333333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c p{margin:0;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .label{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;color:#333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .cluster-label text{fill:#333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .cluster-label span{color:#333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .cluster-label span p{background-color:transparent;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .label text,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c span{fill:#333;color:#333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node rect,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node circle,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node ellipse,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node polygon,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .rough-node .label text,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node .label text,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .image-shape .label,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .icon-shape .label{text-anchor:middle;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .rough-node .label,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node .label,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .image-shape .label,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .icon-shape .label{text-align:center;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node.clickable{cursor:pointer;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .arrowheadPath{fill:#333333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edgePath .path{stroke:#333333;stroke-width:1px;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .flowchart-link{stroke:#333333;fill:none;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .cluster text{fill:#333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .cluster span{color:#333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c rect.text{fill:none;stroke-width:0;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .icon-shape,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .icon-shape p,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .icon-shape .label rect,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c .node .neo-node{stroke:#9370DB;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].node rect,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].cluster rect,#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_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;\"></path></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_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;\"></path></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_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;\"></circle></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_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;\"></circle></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_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;\"></path></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_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;\"></path></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M744.016,206L758.339,206C772.661,206,801.307,206,829.286,206C857.266,206,884.578,206,898.234,206L911.891,206\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-L_MCP_API_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_MCP_API_0\" data-points=\"W3sieCI6NzQ0LjAxNTYyNSwieSI6MjA2fSx7IngiOjgyOS45NTMxMjUsInkiOjIwNn0seyJ4Ijo5MTUuODkwNjI1LCJ5IjoyMDZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-pointEnd)\"></path><path d=\"M290.969,206L303.066,206C315.164,206,339.359,206,362.888,206C386.417,206,409.279,206,420.71,206L432.141,206\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-L_App_MCP_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_App_MCP_0\" data-points=\"W3sieCI6MjkwLjk2ODc1LCJ5IjoyMDZ9LHsieCI6MzYzLjU1NDY4NzUsInkiOjIwNn0seyJ4Ijo0MzYuMTQwNjI1LCJ5IjoyMDZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"translate(829.953125, 206)\"><g class=\"label\" data-id=\"L_MCP_API_0\" transform=\"translate(-60.9375, -12)\"><foreignObject width=\"121.875\" 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>exchanged token</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(363.5546875, 206)\"><g class=\"label\" data-id=\"L_App_MCP_0\" transform=\"translate(-47.5859375, -12)\"><foreignObject width=\"95.171875\" 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>original token</p></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(907.890625, 69)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-right\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"307.890625\" height=\"258\"></rect><g class=\"cluster-label\" transform=\"translate(161.9453125, 8)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M161.945,99.5L161.945,105.75C161.945,112,161.945,124.5,161.945,136.333C161.945,148.167,161.945,159.333,161.945,164.917L161.945,170.5\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-L_API_New_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_API_New_0\" data-points=\"W3sieCI6MTYxLjk0NTMxMjUsInkiOjk5LjV9LHsieCI6MTYxLjk0NTMxMjUsInkiOjEzN30seyJ4IjoxNjEuOTQ1MzEyNSwieSI6MTc0LjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_API_New_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><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\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-flowchart-API-11\" data-look=\"classic\" transform=\"translate(161.9453125, 72.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-43.3359375\" y=\"-27\" width=\"86.671875\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-13.3359375, -12)\"><rect></rect><foreignObject width=\"26.671875\" 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><b>API</b></p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-flowchart-New-12\" data-look=\"classic\" transform=\"translate(161.9453125, 201.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-118.9453125\" y=\"-27\" width=\"237.890625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-88.9453125, -12)\"><rect></rect><foreignObject width=\"177.890625\" 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>Exchanged access token</p></span></div></foreignObject></g></g></g></g><g class=\"root\" transform=\"translate(428.140625, 33)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-te\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"307.875\" height=\"330\"></rect><g class=\"cluster-label\" transform=\"translate(103.671875, 8)\"><foreignObject width=\"116.53125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Token exchange</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M161.938,123.5L161.938,131.75C161.938,140,161.938,156.5,161.938,172.333C161.938,188.167,161.938,203.333,161.938,210.917L161.938,218.5\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-L_MCP_Mosaic_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_MCP_Mosaic_0\" data-points=\"W3sieCI6MTYxLjkzNzUsInkiOjEyMy41fSx7IngiOjE2MS45Mzc1LCJ5IjoxNzN9LHsieCI6MTYxLjkzNzUsInkiOjIyMi41fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"translate(161.9375, 173)\"><g class=\"label\" data-id=\"L_MCP_Mosaic_0\" transform=\"translate(-34.6953125, -12)\"><foreignObject width=\"69.390625\" 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>exchange</p></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-flowchart-MCP-7\" data-look=\"classic\" transform=\"translate(161.9375, 84.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-118.9375\" y=\"-39\" width=\"237.875\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-88.9375, -24)\"><rect></rect><foreignObject width=\"177.875\" height=\"48\"><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><b>MCP server</b><br>exchanging client (proxy)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-flowchart-Mosaic-8\" data-look=\"classic\" transform=\"translate(161.9375, 261.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-99.375\" y=\"-39\" width=\"198.75\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-69.375, -24)\"><rect></rect><foreignObject width=\"138.75\" height=\"48\"><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>Mosaic<br>Authorization policy</p></span></div></foreignObject></g></g></g></g><g class=\"root\" transform=\"translate(0, 0)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-left\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"282.96875\" height=\"396\"></rect><g class=\"cluster-label\" transform=\"translate(149.484375, 8)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M149.984,85L149.901,91.167C149.818,97.333,149.651,109.667,149.568,121.417C149.484,133.167,149.484,144.333,149.484,149.917L149.484,155.5\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-L_User_App_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_User_App_0\" data-points=\"W3sieCI6MTQ5Ljk4NDM3NSwieSI6ODV9LHsieCI6MTQ5LjQ4NDM3NSwieSI6MTIyfSx7IngiOjE0OS40ODQzNzUsInkiOjE1OS41fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-pointEnd)\"></path><path d=\"M149.484,237.5L149.484,243.75C149.484,250,149.484,262.5,149.484,274.333C149.484,286.167,149.484,297.333,149.484,302.917L149.484,308.5\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-L_App_Orig_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_App_Orig_0\" data-points=\"W3sieCI6MTQ5LjQ4NDM3NSwieSI6MjM3LjV9LHsieCI6MTQ5LjQ4NDM3NSwieSI6Mjc1fSx7IngiOjE0OS40ODQzNzUsInkiOjMxMi41fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_User_App_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><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\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_App_Orig_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><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\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-flowchart-User-0\" data-look=\"classic\" transform=\"translate(149.484375, 65)\"><g class=\"basic label-container outer-path\"><path d=\"M-9.765625 -19.5 C-5.763999211503147 -19.5, -1.7623734230062933 -19.5, 9.765625 -19.5 C9.765625 -19.5, 9.765624999999998 -19.5, 9.765624999999998 -19.5 C10.02385137699559 -19.491719182696905, 10.282077753991183 -19.483438365393805, 11.0149942896239 -19.45993515863156 C11.268717365600072 -19.43545879863878, 11.522440441576245 -19.410982438646002, 12.259229652847864 -19.3399052695533 C12.627529511751415 -19.28036140457384, 12.995829370654967 -19.220817539594375, 13.493218259676757 -19.140403561325776 C13.765726988607538 -19.07820522223297, 14.038235717538317 -19.016006883140165, 14.71188938623539 -18.862249829261074 C15.066805085988452 -18.75691271256489, 15.421720785741515 -18.651575595868707, 15.910235251460602 -18.50658706670804 C16.243490195798735 -18.38394616661667, 16.57674514013687 -18.2613052665253, 17.083331595147794 -18.074876768247425 C17.356366417921173 -17.954012351495898, 17.629401240694552 -17.833147934744375, 18.22635791279238 -17.568892924097174 C18.633172132815083 -17.356658206088273, 19.039986352837786 -17.144423488079376, 19.334617264076783 -16.990714730406097 C19.681396055054044 -16.7804953894173, 20.028174846031305 -16.570276048428507, 20.403555573605697 -16.342718045390892 C20.744390971266757 -16.1049660265091, 21.085226368927817 -15.867214007627311, 21.428780344578712 -15.627565626425154 C21.691750881305623 -15.417853621325317, 21.954721418032538 -15.208141616225483, 22.40607870850187 -14.848196188198123 C22.68224593766625 -14.597388417655507, 22.95841316683063 -14.34658064711289, 23.331434736767985 -14.007812326905688 C23.6555801732883 -13.673105550863193, 23.979725609808614 -13.338398774820698, 24.201045942968648 -13.10986736009568 C24.410123185904368 -12.864273333711237, 24.61920042884009 -12.618679307326795, 25.011338908126582 -12.158051136245305 C25.235052416138753 -11.858295416228845, 25.458765924150924 -11.558539696212387, 25.758983964640635 -11.156274872382312 C25.974708450934752 -10.824864131298996, 26.190432937228866 -10.49345339021568, 26.440908878604247 -10.108655082055241 C26.63943116584194 -9.756158658503283, 26.83795345307964 -9.403662234951327, 27.0543114742735 -9.019496659696287 C27.193432678013355 -8.730608503413578, 27.33255388175321 -8.44172034713087, 27.59667114880834 -7.893275190886684 C27.725573808661622 -7.574883128885695, 27.8544764685149 -7.256491066884706, 28.065759229970325 -6.734618561215508 C28.177250809835492 -6.39882368643251, 28.28874238970066 -6.063028811649512, 28.45964813421488 -5.548287939305138 C28.569407625126548 -5.129727430394683, 28.67916711603821 -4.711166921484229, 28.77671928754556 -4.339158212148133 C28.859327578988715 -3.914982094856107, 28.941935870431873 -3.4908059775640807, 29.015669776581777 -3.1121979531509023 C29.067130145001883 -2.7130814976837208, 29.118590513421985 -2.313965042216539, 29.175517702509367 -1.872449005199798 C29.202813338755227 -1.4472974380295198, 29.230108975001084 -1.0221458708592417, 29.255606215913414 -0.6250057626472757 C29.255606215913414 -0.19990489567730235, 29.255606215913414 0.225195971292671, 29.255606215913414 0.625005762647271 C29.239159585879477 0.8811753009066696, 29.222712955845537 1.137344839166068, 29.175517702509367 1.8724490051997846 C29.116629948933817 2.329170793229521, 29.057742195358266 2.785892581259257, 29.015669776581777 3.1121979531508885 C28.941692255598582 3.492056888245, 28.867714734615387 3.871915823339112, 28.77671928754556 4.339158212148129 C28.691364973973197 4.664651202593061, 28.606010660400834 4.990144193037993, 28.459648134214884 5.548287939305125 C28.32530211254247 5.952916751450753, 28.19095609087006 6.357545563596382, 28.06575922997033 6.734618561215495 C27.88201629252841 7.188467169125065, 27.69827335508649 7.642315777034636, 27.596671148808344 7.893275190886679 C27.42618408697078 8.247295222631132, 27.255697025133216 8.601315254375585, 27.054311474273504 9.019496659696284 C26.841350875822307 9.39762976684536, 26.62839027737111 9.775762873994438, 26.44090887860425 10.108655082055236 C26.296224277965198 10.33092948189206, 26.151539677326145 10.553203881728884, 25.75898396464064 11.156274872382301 C25.514025049031893 11.484497503081727, 25.26906613342314 11.812720133781152, 25.011338908126582 12.158051136245302 C24.828548739806486 12.372766869009315, 24.645758571486386 12.587482601773328, 24.20104594296866 13.10986736009567 C23.867699489297685 13.454074941763778, 23.53435303562671 13.798282523431887, 23.33143473676799 14.007812326905684 C23.002632572374168 14.30642175297961, 22.673830407980343 14.605031179053535, 22.406078708501887 14.848196188198111 C22.081885212286483 15.106731874278646, 21.757691716071076 15.36526756035918, 21.428780344578715 15.627565626425152 C21.184406548166965 15.798030208030843, 20.94003275175522 15.968494789636532, 20.403555573605708 16.34271804539089 C20.145401546707152 16.49921253357825, 19.887247519808593 16.65570702176561, 19.334617264076787 16.990714730406093 C19.027302312145626 17.15104074398396, 18.719987360214468 17.31136675756182, 18.226357912792388 17.56889292409717 C17.92882269675823 17.7006029381669, 17.631287480724065 17.83231295223663, 17.083331595147804 18.07487676824742 C16.732296477453538 18.204060936491967, 16.381261359759268 18.333245104736516, 15.910235251460616 18.506587066708033 C15.497270567715216 18.62915281714781, 15.084305883969815 18.751718567587588, 14.711889386235413 18.86224982926107 C14.40485189203483 18.93232913370546, 14.097814397834249 19.002408438149843, 13.493218259676766 19.140403561325773 C13.24100206448361 19.181179919798797, 12.988785869290455 19.22195627827182, 12.259229652847878 19.3399052695533 C11.822958432210104 19.381991829515318, 11.38668721157233 19.424078389477334, 11.0149942896239 19.45993515863156 C10.696915472672643 19.470135327188327, 10.378836655721388 19.480335495745095, 9.765625000000004 19.5 C9.765625000000002 19.5, 9.765625000000002 19.5, 9.765625 19.5 C3.6651759789948057 19.5, -2.4352730420103885 19.5, -9.765624999999996 19.5 C-10.263907650395964 19.48402104525014, -10.762190300791932 19.468042090500287, -11.014994289623893 19.45993515863156 C-11.28953361011536 19.43345068056559, -11.564072930606828 19.406966202499614, -12.259229652847871 19.3399052695533 C-12.740238486628847 19.262139491586808, -13.221247320409823 19.184373713620317, -13.493218259676759 19.140403561325773 C-13.947140083724834 19.036798867103524, -14.401061907772911 18.93319417288128, -14.711889386235388 18.862249829261074 C-15.183287165899404 18.722341442674235, -15.654684945563423 18.582433056087392, -15.910235251460593 18.506587066708043 C-16.327806285024305 18.352917066372278, -16.74537731858802 18.19924706603651, -17.083331595147797 18.074876768247425 C-17.428021365968178 17.922292831564004, -17.77271113678856 17.769708894880583, -18.22635791279238 17.568892924097174 C-18.529379489092147 17.41080676183617, -18.83240106539191 17.252720599575166, -19.33461726407678 16.990714730406097 C-19.686158966905037 16.777608084263253, -20.03770066973329 16.564501438120406, -20.403555573605686 16.3427180453909 C-20.629209941288977 16.185311326915176, -20.854864308972264 16.02790460843945, -21.428780344578712 15.627565626425156 C-21.662360324787937 15.44129180803262, -21.89594030499716 15.255017989640084, -22.40607870850187 14.848196188198125 C-22.706530443505496 14.575333871985121, -23.00698217850912 14.302471555772115, -23.331434736767974 14.007812326905697 C-23.628774909414837 13.700784186565636, -23.926115082061695 13.393756046225578, -24.201045942968655 13.109867360095677 C-24.461035461385663 12.804468877940371, -24.721024979802667 12.499070395785067, -25.01133890812658 12.158051136245307 C-25.206936014006793 11.895968833628741, -25.40253311988701 11.633886531012177, -25.758983964640635 11.156274872382316 C-25.95274546134862 10.85860518119178, -26.14650695805661 10.560935490001246, -26.440908878604244 10.108655082055249 C-26.584022949879174 9.854541556635454, -26.7271370211541 9.600428031215657, -27.0543114742735 9.019496659696289 C-27.200904659725257 8.71509277351402, -27.347497845177013 8.41068888733175, -27.59667114880834 7.893275190886686 C-27.762856020056702 7.482795345937321, -27.929040891305068 7.072315500987955, -28.065759229970325 6.73461856121551 C-28.161953961015662 6.444895357855962, -28.258148692060995 6.155172154496414, -28.45964813421488 5.5482879393051325 C-28.584087154418746 5.0737480230552805, -28.70852617462261 4.5992081068054285, -28.776719287545557 4.339158212148136 C-28.85831466100476 3.9201832146234246, -28.939910034463963 3.5012082170987138, -29.015669776581777 3.112197953150904 C-29.077768260233565 2.6305743766802308, -29.139866743885356 2.1489508002095574, -29.175517702509364 1.872449005199809 C-29.195718232020486 1.557809452490158, -29.215918761531608 1.2431698997805067, -29.255606215913414 0.6250057626472781 C-29.255606215913414 0.2788253597877387, -29.255606215913414 -0.06735504307180074, -29.255606215913414 -0.6250057626472687 C-29.236878920963154 -0.9166984978980071, -29.21815162601289 -1.2083912331487454, -29.175517702509367 -1.8724490051997822 C-29.125273815952845 -2.2621306675545325, -29.075029929396326 -2.6518123299092835, -29.015669776581777 -3.112197953150895 C-28.938078672150183 -3.5106118755213975, -28.86048756771859 -3.9090257978919, -28.77671928754556 -4.339158212148126 C-28.70486456397452 -4.613171415158692, -28.63300984040348 -4.8871846181692575, -28.459648134214884 -5.548287939305123 C-28.38001184938953 -5.788139740880217, -28.300375564564174 -6.02799154245531, -28.065759229970332 -6.734618561215485 C-27.894160293506225 -7.158471251921567, -27.72256135704212 -7.582323942627649, -27.596671148808344 -7.893275190886676 C-27.466185110027414 -8.164232242369243, -27.335699071246488 -8.435189293851808, -27.054311474273504 -9.019496659696282 C-26.845507242539583 -9.39024971686107, -26.63670301080566 -9.76100277402586, -26.440908878604247 -10.108655082055243 C-26.21765507893672 -10.451632870383856, -25.99440127926919 -10.794610658712468, -25.75898396464064 -11.156274872382308 C-25.590320431509262 -11.38226864121439, -25.42165689837788 -11.608262410046473, -25.011338908126586 -12.158051136245302 C-24.729507384203885 -12.489106480912914, -24.447675860281187 -12.820161825580529, -24.201045942968662 -13.10986736009567 C-23.941923869193868 -13.377432175586048, -23.682801795419078 -13.644996991076427, -23.331434736767996 -14.007812326905677 C-23.075776961171808 -14.239993954368067, -22.82011918557562 -14.472175581830458, -22.406078708501887 -14.848196188198107 C-22.092357769745863 -15.098380288391244, -21.778636830989843 -15.348564388584379, -21.42878034457872 -15.627565626425149 C-21.22262789213845 -15.771368653051647, -21.01647543969818 -15.915171679678146, -20.40355557360571 -16.342718045390885 C-20.03585325161805 -16.5656213538385, -19.668150929630393 -16.788524662286115, -19.33461726407679 -16.99071473040609 C-18.894251737648986 -17.220453143475893, -18.453886211221185 -17.450191556545697, -18.226357912792388 -17.56889292409717 C-17.947933858595594 -17.69214299373397, -17.669509804398803 -17.815393063370774, -17.083331595147804 -18.07487676824742 C-16.654635423983983 -18.232640922059673, -16.22593925282016 -18.390405075871925, -15.910235251460618 -18.506587066708033 C-15.495637053806743 -18.629637635501354, -15.081038856152865 -18.752688204294675, -14.711889386235413 -18.862249829261067 C-14.362015137693165 -18.942106343347994, -14.012140889150915 -19.021962857434918, -13.493218259676768 -19.140403561325773 C-13.201226109391271 -19.18761058775099, -12.909233959105773 -19.2348176141762, -12.25922965284788 -19.3399052695533 C-11.89587858858627 -19.374957309729027, -11.532527524324657 -19.410009349904755, -11.014994289623903 -19.45993515863156 C-10.649079431134771 -19.47166933593324, -10.283164572645639 -19.483403513234922, -9.765625000000005 -19.5 C-9.765625000000004 -19.5, -9.765625000000002 -19.5, -9.765625 -19.5\" stroke=\"none\" stroke-width=\"0\" fill=\"#ECECFF\" style=\"\"></path><path d=\"M-9.765625 -19.5 C-2.9276217290749864 -19.5, 3.910381541850027 -19.5, 9.765625 -19.5 M-9.765625 -19.5 C-5.083202084226359 -19.5, -0.40077916845271844 -19.5, 9.765625 -19.5 M9.765625 -19.5 C9.765625 -19.5, 9.765624999999998 -19.5, 9.765624999999998 -19.5 M9.765625 -19.5 C9.765625 -19.5, 9.765624999999998 -19.5, 9.765624999999998 -19.5 M9.765624999999998 -19.5 C10.025733588500678 -19.491658823837437, 10.28584217700136 -19.483317647674873, 11.0149942896239 -19.45993515863156 M9.765624999999998 -19.5 C10.151373485970835 -19.487629796868795, 10.537121971941671 -19.47525959373759, 11.0149942896239 -19.45993515863156 M11.0149942896239 -19.45993515863156 C11.443683519580572 -19.41858002419187, 11.872372749537245 -19.377224889752178, 12.259229652847864 -19.3399052695533 M11.0149942896239 -19.45993515863156 C11.50170332159455 -19.4129829236706, 11.988412353565199 -19.366030688709643, 12.259229652847864 -19.3399052695533 M12.259229652847864 -19.3399052695533 C12.67301045088507 -19.27300839904466, 13.086791248922276 -19.206111528536017, 13.493218259676757 -19.140403561325776 M12.259229652847864 -19.3399052695533 C12.658528257182699 -19.275349767811367, 13.057826861517531 -19.21079426606944, 13.493218259676757 -19.140403561325776 M13.493218259676757 -19.140403561325776 C13.911857680730826 -19.044851845347715, 14.330497101784893 -18.949300129369654, 14.71188938623539 -18.862249829261074 M13.493218259676757 -19.140403561325776 C13.756867297517408 -19.080227388909407, 14.020516335358058 -19.020051216493034, 14.71188938623539 -18.862249829261074 M14.71188938623539 -18.862249829261074 C15.15335204322456 -18.73122602995146, 15.59481470021373 -18.60020223064185, 15.910235251460602 -18.50658706670804 M14.71188938623539 -18.862249829261074 C14.985974564949244 -18.780902786921263, 15.260059743663097 -18.699555744581456, 15.910235251460602 -18.50658706670804 M15.910235251460602 -18.50658706670804 C16.239870782952142 -18.385278144001703, 16.569506314443686 -18.263969221295365, 17.083331595147794 -18.074876768247425 M15.910235251460602 -18.50658706670804 C16.372023611475324 -18.336644681497816, 16.833811971490046 -18.166702296287593, 17.083331595147794 -18.074876768247425 M17.083331595147794 -18.074876768247425 C17.442101871407935 -17.916059809489173, 17.80087214766808 -17.757242850730925, 18.22635791279238 -17.568892924097174 M17.083331595147794 -18.074876768247425 C17.441410816676772 -17.916365718919252, 17.799490038205754 -17.757854669591076, 18.22635791279238 -17.568892924097174 M18.22635791279238 -17.568892924097174 C18.542383567426498 -17.404022542498648, 18.85840922206061 -17.239152160900122, 19.334617264076783 -16.990714730406097 M18.22635791279238 -17.568892924097174 C18.471388538093326 -17.441060603827278, 18.71641916339427 -17.31322828355738, 19.334617264076783 -16.990714730406097 M19.334617264076783 -16.990714730406097 C19.566127924676525 -16.850371607442877, 19.797638585276264 -16.710028484479658, 20.403555573605697 -16.342718045390892 M19.334617264076783 -16.990714730406097 C19.73684286302015 -16.746883208586638, 20.139068461963515 -16.503051686767176, 20.403555573605697 -16.342718045390892 M20.403555573605697 -16.342718045390892 C20.63408448344541 -16.181911057322377, 20.864613393285122 -16.021104069253862, 21.428780344578712 -15.627565626425154 M20.403555573605697 -16.342718045390892 C20.75272381370647 -16.099153396346093, 21.10189205380724 -15.855588747301294, 21.428780344578712 -15.627565626425154 M21.428780344578712 -15.627565626425154 C21.64864157016602 -15.452232149772204, 21.86850279575333 -15.276898673119254, 22.40607870850187 -14.848196188198123 M21.428780344578712 -15.627565626425154 C21.810941898955402 -15.322801956555807, 22.193103453332096 -15.018038286686458, 22.40607870850187 -14.848196188198123 M22.40607870850187 -14.848196188198123 C22.663918343959267 -14.614033053338634, 22.92175797941666 -14.379869918479143, 23.331434736767985 -14.007812326905688 M22.40607870850187 -14.848196188198123 C22.62229722787001 -14.651832249736508, 22.838515747238155 -14.455468311274892, 23.331434736767985 -14.007812326905688 M23.331434736767985 -14.007812326905688 C23.628524713065087 -13.701042534838257, 23.925614689362185 -13.394272742770823, 24.201045942968648 -13.10986736009568 M23.331434736767985 -14.007812326905688 C23.599410312179057 -13.731105544089846, 23.86738588759013 -13.454398761274005, 24.201045942968648 -13.10986736009568 M24.201045942968648 -13.10986736009568 C24.380383365153296 -12.899207419409189, 24.559720787337945 -12.688547478722697, 25.011338908126582 -12.158051136245305 M24.201045942968648 -13.10986736009568 C24.455255144567023 -12.811258766984885, 24.7094643461654 -12.512650173874091, 25.011338908126582 -12.158051136245305 M25.011338908126582 -12.158051136245305 C25.183816908948376 -11.926946328213223, 25.35629490977017 -11.69584152018114, 25.758983964640635 -11.156274872382312 M25.011338908126582 -12.158051136245305 C25.257353038169583 -11.828414614335996, 25.50336716821258 -11.498778092426686, 25.758983964640635 -11.156274872382312 M25.758983964640635 -11.156274872382312 C25.923647484094946 -10.903307488154367, 26.088311003549254 -10.650340103926421, 26.440908878604247 -10.108655082055241 M25.758983964640635 -11.156274872382312 C25.980829164807 -10.81546107114941, 26.202674364973372 -10.47464726991651, 26.440908878604247 -10.108655082055241 M26.440908878604247 -10.108655082055241 C26.579246702649098 -9.863022267239927, 26.717584526693948 -9.617389452424614, 27.0543114742735 -9.019496659696287 M26.440908878604247 -10.108655082055241 C26.662953727253136 -9.714391968800083, 26.884998575902024 -9.320128855544922, 27.0543114742735 -9.019496659696287 M27.0543114742735 -9.019496659696287 C27.266959244400006 -8.577929015095206, 27.479607014526508 -8.136361370494123, 27.59667114880834 -7.893275190886684 M27.0543114742735 -9.019496659696287 C27.163783698042476 -8.792175244709657, 27.27325592181145 -8.564853829723026, 27.59667114880834 -7.893275190886684 M27.59667114880834 -7.893275190886684 C27.773866432176327 -7.455599415130011, 27.951061715544316 -7.017923639373337, 28.065759229970325 -6.734618561215508 M27.59667114880834 -7.893275190886684 C27.749159334168816 -7.5166264248878125, 27.901647519529288 -7.139977658888941, 28.065759229970325 -6.734618561215508 M28.065759229970325 -6.734618561215508 C28.18213404876388 -6.38411614881866, 28.29850886755744 -6.033613736421812, 28.45964813421488 -5.548287939305138 M28.065759229970325 -6.734618561215508 C28.2042353091324 -6.317550673946315, 28.342711388294475 -5.900482786677123, 28.45964813421488 -5.548287939305138 M28.45964813421488 -5.548287939305138 C28.56564353819081 -5.144081525246243, 28.67163894216674 -4.739875111187349, 28.77671928754556 -4.339158212148133 M28.45964813421488 -5.548287939305138 C28.566643842492695 -5.140266931408524, 28.673639550770513 -4.732245923511911, 28.77671928754556 -4.339158212148133 M28.77671928754556 -4.339158212148133 C28.853711534926383 -3.9438192941648627, 28.9307037823072 -3.5484803761815926, 29.015669776581777 -3.1121979531509023 M28.77671928754556 -4.339158212148133 C28.862540228792334 -3.8984858171083183, 28.948361170039103 -3.4578134220685035, 29.015669776581777 -3.1121979531509023 M29.015669776581777 -3.1121979531509023 C29.049874302350716 -2.8469144057346147, 29.084078828119655 -2.5816308583183267, 29.175517702509367 -1.872449005199798 M29.015669776581777 -3.1121979531509023 C29.067795322126656 -2.7079225152580557, 29.11992086767153 -2.3036470773652087, 29.175517702509367 -1.872449005199798 M29.175517702509367 -1.872449005199798 C29.1949119786956 -1.5703674988212357, 29.214306254881834 -1.2682859924426735, 29.255606215913414 -0.6250057626472757 M29.175517702509367 -1.872449005199798 C29.192073361935126 -1.614581246155851, 29.20862902136088 -1.3567134871119042, 29.255606215913414 -0.6250057626472757 M29.255606215913414 -0.6250057626472757 C29.255606215913414 -0.28703775506240714, 29.255606215913414 0.05093025252246142, 29.255606215913414 0.625005762647271 M29.255606215913414 -0.6250057626472757 C29.255606215913414 -0.3228613314017501, 29.255606215913414 -0.020716900156224516, 29.255606215913414 0.625005762647271 M29.255606215913414 0.625005762647271 C29.235439334529293 0.9391212186186416, 29.215272453145168 1.253236674590012, 29.175517702509367 1.8724490051997846 M29.255606215913414 0.625005762647271 C29.225086133643053 1.1003806793751412, 29.194566051372693 1.5757555961030114, 29.175517702509367 1.8724490051997846 M29.175517702509367 1.8724490051997846 C29.12456075881125 2.267660997935687, 29.073603815113135 2.6628729906715893, 29.015669776581777 3.1121979531508885 M29.175517702509367 1.8724490051997846 C29.135606931410837 2.1819890645668063, 29.095696160312304 2.491529123933828, 29.015669776581777 3.1121979531508885 M29.015669776581777 3.1121979531508885 C28.96203967473445 3.3875771914108905, 28.908409572887116 3.662956429670892, 28.77671928754556 4.339158212148129 M29.015669776581777 3.1121979531508885 C28.933222490175066 3.5355473436091995, 28.850775203768357 3.95889673406751, 28.77671928754556 4.339158212148129 M28.77671928754556 4.339158212148129 C28.69166363641536 4.663512273259972, 28.60660798528516 4.987866334371816, 28.459648134214884 5.548287939305125 M28.77671928754556 4.339158212148129 C28.659686172097306 4.7854562038254205, 28.542653056649048 5.231754195502712, 28.459648134214884 5.548287939305125 M28.459648134214884 5.548287939305125 C28.367992907078712 5.824338880161997, 28.27633767994254 6.100389821018868, 28.06575922997033 6.734618561215495 M28.459648134214884 5.548287939305125 C28.323986931015604 5.956877868663957, 28.188325727816324 6.365467798022789, 28.06575922997033 6.734618561215495 M28.06575922997033 6.734618561215495 C27.952008258101603 7.015585660956679, 27.838257286232874 7.296552760697864, 27.596671148808344 7.893275190886679 M28.06575922997033 6.734618561215495 C27.93199479527841 7.065019301063944, 27.798230360586494 7.395420040912393, 27.596671148808344 7.893275190886679 M27.596671148808344 7.893275190886679 C27.467155775744533 8.16221663423873, 27.337640402680723 8.431158077590782, 27.054311474273504 9.019496659696284 M27.596671148808344 7.893275190886679 C27.407218192061038 8.286678309216356, 27.21776523531373 8.680081427546034, 27.054311474273504 9.019496659696284 M27.054311474273504 9.019496659696284 C26.86026468575401 9.364046382080687, 26.666217897234514 9.708596104465093, 26.44090887860425 10.108655082055236 M27.054311474273504 9.019496659696284 C26.91370192105501 9.269163159696923, 26.77309236783652 9.518829659697564, 26.44090887860425 10.108655082055236 M26.44090887860425 10.108655082055236 C26.29980460504627 10.325429138043098, 26.158700331488287 10.54220319403096, 25.75898396464064 11.156274872382301 M26.44090887860425 10.108655082055236 C26.19221187515009 10.490720463856967, 25.943514871695925 10.872785845658697, 25.75898396464064 11.156274872382301 M25.75898396464064 11.156274872382301 C25.46950976383781 11.54414392981589, 25.180035563034973 11.932012987249479, 25.011338908126582 12.158051136245302 M25.75898396464064 11.156274872382301 C25.60192264218389 11.366722735893518, 25.44486131972714 11.577170599404734, 25.011338908126582 12.158051136245302 M25.011338908126582 12.158051136245302 C24.778314749802416 12.4317745720631, 24.54529059147825 12.705498007880898, 24.20104594296866 13.10986736009567 M25.011338908126582 12.158051136245302 C24.723493777721522 12.496170405270998, 24.435648647316462 12.834289674296695, 24.20104594296866 13.10986736009567 M24.20104594296866 13.10986736009567 C24.023263615909222 13.293442208985043, 23.845481288849786 13.477017057874415, 23.33143473676799 14.007812326905684 M24.20104594296866 13.10986736009567 C24.007206600376737 13.310022395827826, 23.813367257784815 13.510177431559981, 23.33143473676799 14.007812326905684 M23.33143473676799 14.007812326905684 C23.030950036274405 14.28070458150445, 22.73046533578082 14.553596836103218, 22.406078708501887 14.848196188198111 M23.33143473676799 14.007812326905684 C23.13664880661156 14.184711754920457, 22.941862876455136 14.361611182935228, 22.406078708501887 14.848196188198111 M22.406078708501887 14.848196188198111 C22.114974208939053 15.080344279983402, 21.823869709376215 15.312492371768693, 21.428780344578715 15.627565626425152 M22.406078708501887 14.848196188198111 C22.108129712636273 15.08580258364517, 21.810180716770663 15.32340897909223, 21.428780344578715 15.627565626425152 M21.428780344578715 15.627565626425152 C21.126634875114352 15.838329226256928, 20.824489405649988 16.049092826088703, 20.403555573605708 16.34271804539089 M21.428780344578715 15.627565626425152 C21.0530396225392 15.889666088566218, 20.677298900499682 16.151766550707283, 20.403555573605708 16.34271804539089 M20.403555573605708 16.34271804539089 C20.15949701764452 16.490667776261837, 19.915438461683326 16.638617507132782, 19.334617264076787 16.990714730406093 M20.403555573605708 16.34271804539089 C20.080216095927444 16.538728336913135, 19.756876618249184 16.734738628435384, 19.334617264076787 16.990714730406093 M19.334617264076787 16.990714730406093 C19.069673622441027 17.128935658542968, 18.804729980805263 17.267156586679842, 18.226357912792388 17.56889292409717 M19.334617264076787 16.990714730406093 C19.06551075279282 17.13110742497199, 18.796404241508856 17.27150011953789, 18.226357912792388 17.56889292409717 M18.226357912792388 17.56889292409717 C17.962787275668735 17.685567826606654, 17.699216638545078 17.80224272911614, 17.083331595147804 18.07487676824742 M18.226357912792388 17.56889292409717 C17.83723687998027 17.741145262457774, 17.448115847168157 17.913397600818378, 17.083331595147804 18.07487676824742 M17.083331595147804 18.07487676824742 C16.74861640925712 18.198055050728453, 16.413901223366437 18.321233333209484, 15.910235251460616 18.506587066708033 M17.083331595147804 18.07487676824742 C16.772753134303333 18.189172512794006, 16.462174673458865 18.30346825734059, 15.910235251460616 18.506587066708033 M15.910235251460616 18.506587066708033 C15.456978925990132 18.641111164916673, 15.003722600519648 18.77563526312531, 14.711889386235413 18.86224982926107 M15.910235251460616 18.506587066708033 C15.501535866249423 18.627886898931866, 15.09283648103823 18.7491867311557, 14.711889386235413 18.86224982926107 M14.711889386235413 18.86224982926107 C14.357261768463399 18.943191268856058, 14.002634150691385 19.02413270845104, 13.493218259676766 19.140403561325773 M14.711889386235413 18.86224982926107 C14.423157328934074 18.928151037187344, 14.134425271632738 18.994052245113615, 13.493218259676766 19.140403561325773 M13.493218259676766 19.140403561325773 C13.042366576474581 19.21329376505888, 12.591514893272398 19.28618396879199, 12.259229652847878 19.3399052695533 M13.493218259676766 19.140403561325773 C13.031145873818664 19.21510784124644, 12.569073487960564 19.289812121167106, 12.259229652847878 19.3399052695533 M12.259229652847878 19.3399052695533 C11.893914609471617 19.37514677243219, 11.528599566095354 19.410388275311075, 11.0149942896239 19.45993515863156 M12.259229652847878 19.3399052695533 C11.918896983952742 19.372736752811694, 11.578564315057605 19.40556823607009, 11.0149942896239 19.45993515863156 M11.0149942896239 19.45993515863156 C10.576466843836638 19.473997880276066, 10.137939398049376 19.48806060192057, 9.765625000000004 19.5 M11.0149942896239 19.45993515863156 C10.715270886620477 19.469546704789668, 10.415547483617054 19.479158250947773, 9.765625000000004 19.5 M9.765625000000004 19.5 C9.765625000000002 19.5, 9.765625000000002 19.5, 9.765625 19.5 M9.765625000000004 19.5 C9.765625000000002 19.5, 9.765625000000002 19.5, 9.765625 19.5 M9.765625 19.5 C5.384381972707135 19.5, 1.0031389454142694 19.5, -9.765624999999996 19.5 M9.765625 19.5 C5.011656852501168 19.5, 0.25768870500233554 19.5, -9.765624999999996 19.5 M-9.765624999999996 19.5 C-10.249437822011178 19.48448506448263, -10.733250644022359 19.468970128965264, -11.014994289623893 19.45993515863156 M-9.765624999999996 19.5 C-10.19894557227716 19.4861042526544, -10.632266144554322 19.4722085053088, -11.014994289623893 19.45993515863156 M-11.014994289623893 19.45993515863156 C-11.382920906662115 19.42444172038238, -11.750847523700338 19.388948282133196, -12.259229652847871 19.3399052695533 M-11.014994289623893 19.45993515863156 C-11.298580668362652 19.43257792173715, -11.582167047101413 19.405220684842742, -12.259229652847871 19.3399052695533 M-12.259229652847871 19.3399052695533 C-12.628402615364635 19.28022024795267, -12.997575577881399 19.220535226352045, -13.493218259676759 19.140403561325773 M-12.259229652847871 19.3399052695533 C-12.5243602214529 19.297041015339506, -12.789490790057929 19.254176761125713, -13.493218259676759 19.140403561325773 M-13.493218259676759 19.140403561325773 C-13.817095219647625 19.066480758707105, -14.140972179618489 18.992557956088433, -14.711889386235388 18.862249829261074 M-13.493218259676759 19.140403561325773 C-13.89385706513826 19.04896036839172, -14.29449587059976 18.957517175457667, -14.711889386235388 18.862249829261074 M-14.711889386235388 18.862249829261074 C-15.127682337795422 18.738844663779798, -15.543475289355458 18.61543949829852, -15.910235251460593 18.506587066708043 M-14.711889386235388 18.862249829261074 C-15.177387212723872 18.724092517807247, -15.642885039212354 18.58593520635342, -15.910235251460593 18.506587066708043 M-15.910235251460593 18.506587066708043 C-16.336694865734863 18.349645986505653, -16.763154480009135 18.19270490630326, -17.083331595147797 18.074876768247425 M-15.910235251460593 18.506587066708043 C-16.159856823036016 18.414724020891775, -16.40947839461144 18.322860975075507, -17.083331595147797 18.074876768247425 M-17.083331595147797 18.074876768247425 C-17.36894443441149 17.948444436709238, -17.65455727367518 17.822012105171055, -18.22635791279238 17.568892924097174 M-17.083331595147797 18.074876768247425 C-17.314141146728744 17.972704226484623, -17.54495069830969 17.870531684721822, -18.22635791279238 17.568892924097174 M-18.22635791279238 17.568892924097174 C-18.510165791792872 17.42083053541024, -18.79397367079336 17.27276814672331, -19.33461726407678 16.990714730406097 M-18.22635791279238 17.568892924097174 C-18.61542243803496 17.36591821048584, -19.00448696327754 17.16294349687451, -19.33461726407678 16.990714730406097 M-19.33461726407678 16.990714730406097 C-19.707773406647053 16.764505283871095, -20.080929549217327 16.53829583733609, -20.403555573605686 16.3427180453909 M-19.33461726407678 16.990714730406097 C-19.586569804675428 16.83797961965772, -19.838522345274075 16.685244508909342, -20.403555573605686 16.3427180453909 M-20.403555573605686 16.3427180453909 C-20.609877758061334 16.198796621058055, -20.816199942516985 16.05487519672521, -21.428780344578712 15.627565626425156 M-20.403555573605686 16.3427180453909 C-20.618050487950995 16.1930956784788, -20.832545402296304 16.043473311566704, -21.428780344578712 15.627565626425156 M-21.428780344578712 15.627565626425156 C-21.805590230123634 15.327069770035255, -22.182400115668557 15.026573913645354, -22.40607870850187 14.848196188198125 M-21.428780344578712 15.627565626425156 C-21.79607667620271 15.334656576120892, -22.163373007826703 15.041747525816628, -22.40607870850187 14.848196188198125 M-22.40607870850187 14.848196188198125 C-22.75569823253695 14.530680986895161, -23.105317756572035 14.213165785592198, -23.331434736767974 14.007812326905697 M-22.40607870850187 14.848196188198125 C-22.665470373059193 14.61262354157452, -22.924862037616517 14.377050894950914, -23.331434736767974 14.007812326905697 M-23.331434736767974 14.007812326905697 C-23.52944671676365 13.803348700474261, -23.727458696759328 13.598885074042828, -24.201045942968655 13.109867360095677 M-23.331434736767974 14.007812326905697 C-23.57780239541693 13.7534174921897, -23.824170054065892 13.499022657473702, -24.201045942968655 13.109867360095677 M-24.201045942968655 13.109867360095677 C-24.50611862807402 12.751511625043367, -24.81119131317939 12.393155889991059, -25.01133890812658 12.158051136245307 M-24.201045942968655 13.109867360095677 C-24.484274159470736 12.777171380850264, -24.767502375972814 12.444475401604851, -25.01133890812658 12.158051136245307 M-25.01133890812658 12.158051136245307 C-25.191087593959907 11.917204272670803, -25.370836279793235 11.6763574090963, -25.758983964640635 11.156274872382316 M-25.01133890812658 12.158051136245307 C-25.304893022801597 11.764715365910792, -25.598447137476615 11.371379595576277, -25.758983964640635 11.156274872382316 M-25.758983964640635 11.156274872382316 C-25.917277183251045 10.913093980915894, -26.07557040186145 10.669913089449473, -26.440908878604244 10.108655082055249 M-25.758983964640635 11.156274872382316 C-25.920202567073243 10.90859980578945, -26.081421169505848 10.660924739196586, -26.440908878604244 10.108655082055249 M-26.440908878604244 10.108655082055249 C-26.65166268428841 9.73444035892603, -26.86241648997258 9.36022563579681, -27.0543114742735 9.019496659696289 M-26.440908878604244 10.108655082055249 C-26.643976949298768 9.748087159665205, -26.84704501999329 9.387519237275162, -27.0543114742735 9.019496659696289 M-27.0543114742735 9.019496659696289 C-27.223038805620966 8.669130745966728, -27.39176613696843 8.318764832237164, -27.59667114880834 7.893275190886686 M-27.0543114742735 9.019496659696289 C-27.18219369907606 8.753946483652506, -27.310075923878614 8.488396307608722, -27.59667114880834 7.893275190886686 M-27.59667114880834 7.893275190886686 C-27.711650335504196 7.609274376776574, -27.826629522200054 7.325273562666461, -28.065759229970325 6.73461856121551 M-27.59667114880834 7.893275190886686 C-27.757775475562006 7.49534438906487, -27.918879802315672 7.0974135872430555, -28.065759229970325 6.73461856121551 M-28.065759229970325 6.73461856121551 C-28.1715651308041 6.415948045785127, -28.277371031637877 6.097277530354743, -28.45964813421488 5.5482879393051325 M-28.065759229970325 6.73461856121551 C-28.205960169320004 6.3123556698804, -28.346161108669683 5.890092778545291, -28.45964813421488 5.5482879393051325 M-28.45964813421488 5.5482879393051325 C-28.545533533552828 5.2207696886620125, -28.63141893289077 4.893251438018893, -28.776719287545557 4.339158212148136 M-28.45964813421488 5.5482879393051325 C-28.581378069363957 5.084078938494082, -28.70310800451303 4.619869937683033, -28.776719287545557 4.339158212148136 M-28.776719287545557 4.339158212148136 C-28.853507671957157 3.9448660874253605, -28.93029605636876 3.550573962702585, -29.015669776581777 3.112197953150904 M-28.776719287545557 4.339158212148136 C-28.866239110093264 3.879492843386858, -28.955758932640972 3.4198274746255803, -29.015669776581777 3.112197953150904 M-29.015669776581777 3.112197953150904 C-29.067687730179635 2.7087569771527193, -29.11970568377749 2.3053160011545346, -29.175517702509364 1.872449005199809 M-29.015669776581777 3.112197953150904 C-29.06304695237643 2.744749933369134, -29.110424128171083 2.377301913587364, -29.175517702509364 1.872449005199809 M-29.175517702509364 1.872449005199809 C-29.19799908664439 1.5222833006501306, -29.220480470779414 1.1721175961004522, -29.255606215913414 0.6250057626472781 M-29.175517702509364 1.872449005199809 C-29.20361906450751 1.4347476090675517, -29.231720426505657 0.9970462129352944, -29.255606215913414 0.6250057626472781 M-29.255606215913414 0.6250057626472781 C-29.255606215913414 0.21873088701335508, -29.255606215913414 -0.18754398862056798, -29.255606215913414 -0.6250057626472687 M-29.255606215913414 0.6250057626472781 C-29.255606215913414 0.1530158647601932, -29.255606215913414 -0.31897403312689177, -29.255606215913414 -0.6250057626472687 M-29.255606215913414 -0.6250057626472687 C-29.23526278359198 -0.9418711419765882, -29.21491935127055 -1.2587365213059076, -29.175517702509367 -1.8724490051997822 M-29.255606215913414 -0.6250057626472687 C-29.223674766006557 -1.122363869549001, -29.191743316099704 -1.6197219764507333, -29.175517702509367 -1.8724490051997822 M-29.175517702509367 -1.8724490051997822 C-29.112381263608977 -2.3621227576111523, -29.049244824708587 -2.8517965100225227, -29.015669776581777 -3.112197953150895 M-29.175517702509367 -1.8724490051997822 C-29.12520922283456 -2.2626316390246126, -29.074900743159752 -2.6528142728494433, -29.015669776581777 -3.112197953150895 M-29.015669776581777 -3.112197953150895 C-28.956703173670274 -3.414978996505536, -28.897736570758767 -3.7177600398601767, -28.77671928754556 -4.339158212148126 M-29.015669776581777 -3.112197953150895 C-28.95393124591866 -3.429212259662929, -28.892192715255543 -3.746226566174963, -28.77671928754556 -4.339158212148126 M-28.77671928754556 -4.339158212148126 C-28.708375994975707 -4.59978080688734, -28.640032702405858 -4.860403401626554, -28.459648134214884 -5.548287939305123 M-28.77671928754556 -4.339158212148126 C-28.708048639551276 -4.601029154997438, -28.63937799155699 -4.862900097846749, -28.459648134214884 -5.548287939305123 M-28.459648134214884 -5.548287939305123 C-28.314953702249486 -5.984084514457957, -28.170259270284085 -6.419881089610792, -28.065759229970332 -6.734618561215485 M-28.459648134214884 -5.548287939305123 C-28.323399852781936 -5.958646054765552, -28.187151571348988 -6.369004170225982, -28.065759229970332 -6.734618561215485 M-28.065759229970332 -6.734618561215485 C-27.905798565910885 -7.129724494071372, -27.745837901851438 -7.524830426927258, -27.596671148808344 -7.893275190886676 M-28.065759229970332 -6.734618561215485 C-27.92458864683722 -7.083312630901829, -27.7834180637041 -7.432006700588174, -27.596671148808344 -7.893275190886676 M-27.596671148808344 -7.893275190886676 C-27.479516664554456 -8.136548984144273, -27.36236218030057 -8.37982277740187, -27.054311474273504 -9.019496659696282 M-27.596671148808344 -7.893275190886676 C-27.43495924682544 -8.229073415434586, -27.273247344842535 -8.564871639982496, -27.054311474273504 -9.019496659696282 M-27.054311474273504 -9.019496659696282 C-26.906234996079593 -9.282421441098924, -26.75815851788568 -9.545346222501566, -26.440908878604247 -10.108655082055243 M-27.054311474273504 -9.019496659696282 C-26.8773281216034 -9.333748523869849, -26.7003447689333 -9.648000388043416, -26.440908878604247 -10.108655082055243 M-26.440908878604247 -10.108655082055243 C-26.176796999673886 -10.514401852062065, -25.912685120743525 -10.920148622068885, -25.75898396464064 -11.156274872382308 M-26.440908878604247 -10.108655082055243 C-26.244265193503033 -10.410752588593727, -26.047621508401818 -10.712850095132211, -25.75898396464064 -11.156274872382308 M-25.75898396464064 -11.156274872382308 C-25.478295736972232 -11.532371526234385, -25.197607509303825 -11.908468180086462, -25.011338908126586 -12.158051136245302 M-25.75898396464064 -11.156274872382308 C-25.58862962925921 -11.384534162194207, -25.418275293877777 -11.612793452006107, -25.011338908126586 -12.158051136245302 M-25.011338908126586 -12.158051136245302 C-24.71900431742023 -12.501443980798427, -24.42666972671387 -12.844836825351555, -24.201045942968662 -13.10986736009567 M-25.011338908126586 -12.158051136245302 C-24.82269807289916 -12.379639395271038, -24.634057237671737 -12.601227654296775, -24.201045942968662 -13.10986736009567 M-24.201045942968662 -13.10986736009567 C-23.87083621973161 -13.450836010060394, -23.540626496494557 -13.791804660025118, -23.331434736767996 -14.007812326905677 M-24.201045942968662 -13.10986736009567 C-23.980941705576438 -13.337143056097103, -23.760837468184214 -13.564418752098538, -23.331434736767996 -14.007812326905677 M-23.331434736767996 -14.007812326905677 C-23.0667058515081 -14.248232096156235, -22.80197696624821 -14.488651865406794, -22.406078708501887 -14.848196188198107 M-23.331434736767996 -14.007812326905677 C-23.00732441473419 -14.302160745887583, -22.68321409270038 -14.596509164869488, -22.406078708501887 -14.848196188198107 M-22.406078708501887 -14.848196188198107 C-22.015993952630893 -15.159278400413918, -21.625909196759896 -15.470360612629726, -21.42878034457872 -15.627565626425149 M-22.406078708501887 -14.848196188198107 C-22.091863374246007 -15.098774555645962, -21.77764803999013 -15.349352923093816, -21.42878034457872 -15.627565626425149 M-21.42878034457872 -15.627565626425149 C-21.09769939518388 -15.858513364459686, -20.76661844578904 -16.089461102494223, -20.40355557360571 -16.342718045390885 M-21.42878034457872 -15.627565626425149 C-21.177905256392467 -15.802565227736347, -20.927030168206215 -15.977564829047544, -20.40355557360571 -16.342718045390885 M-20.40355557360571 -16.342718045390885 C-20.02620544709659 -16.571469909636203, -19.648855320587472 -16.800221773881518, -19.33461726407679 -16.99071473040609 M-20.40355557360571 -16.342718045390885 C-20.072634582407172 -16.543324294963043, -19.741713591208633 -16.7439305445352, -19.33461726407679 -16.99071473040609 M-19.33461726407679 -16.99071473040609 C-18.942934983327277 -17.195055125388638, -18.551252702577766 -17.399395520371183, -18.226357912792388 -17.56889292409717 M-19.33461726407679 -16.99071473040609 C-18.89213164599944 -17.22155919393148, -18.449646027922093 -17.452403657456866, -18.226357912792388 -17.56889292409717 M-18.226357912792388 -17.56889292409717 C-17.84800340773481 -17.736379239998538, -17.469648902677235 -17.903865555899905, -17.083331595147804 -18.07487676824742 M-18.226357912792388 -17.56889292409717 C-17.993650742231274 -17.671905485491624, -17.76094357167016 -17.77491804688608, -17.083331595147804 -18.07487676824742 M-17.083331595147804 -18.07487676824742 C-16.80168718362008 -18.178524515182026, -16.52004277209235 -18.282172262116628, -15.910235251460618 -18.506587066708033 M-17.083331595147804 -18.07487676824742 C-16.803032251468 -18.178029517780317, -16.522732907788196 -18.281182267313216, -15.910235251460618 -18.506587066708033 M-15.910235251460618 -18.506587066708033 C-15.664615205868424 -18.579485806953866, -15.418995160276232 -18.652384547199702, -14.711889386235413 -18.862249829261067 M-15.910235251460618 -18.506587066708033 C-15.457207427017199 -18.641043347011262, -15.004179602573782 -18.775499627314492, -14.711889386235413 -18.862249829261067 M-14.711889386235413 -18.862249829261067 C-14.277640795332845 -18.961364236397696, -13.843392204430277 -19.060478643534328, -13.493218259676768 -19.140403561325773 M-14.711889386235413 -18.862249829261067 C-14.426424765275176 -18.9274052661645, -14.140960144314938 -18.99256070306793, -13.493218259676768 -19.140403561325773 M-13.493218259676768 -19.140403561325773 C-13.105469664078274 -19.203091747226868, -12.71772106847978 -19.265779933127966, -12.25922965284788 -19.3399052695533 M-13.493218259676768 -19.140403561325773 C-13.220362894159821 -19.18451670079759, -12.947507528642877 -19.22862984026941, -12.25922965284788 -19.3399052695533 M-12.25922965284788 -19.3399052695533 C-11.77872070726616 -19.38625938963701, -11.298211761684438 -19.432613509720724, -11.014994289623903 -19.45993515863156 M-12.25922965284788 -19.3399052695533 C-11.834843129167298 -19.380845327093297, -11.410456605486715 -19.421785384633292, -11.014994289623903 -19.45993515863156 M-11.014994289623903 -19.45993515863156 C-10.518121983037842 -19.475868886400498, -10.02124967645178 -19.49180261416944, -9.765625000000005 -19.5 M-11.014994289623903 -19.45993515863156 C-10.58412962072569 -19.473752149935923, -10.15326495182748 -19.487569141240286, -9.765625000000005 -19.5 M-9.765625000000005 -19.5 C-9.765625000000004 -19.5, -9.765625000000002 -19.5, -9.765625 -19.5 M-9.765625000000005 -19.5 C-9.765625000000004 -19.5, -9.765625000000002 -19.5, -9.765625 -19.5\" stroke=\"#9370DB\" stroke-width=\"1.3\" fill=\"none\" stroke-dasharray=\"0 0\" style=\"\"></path></g><g class=\"label\" style=\"\" transform=\"translate(-16.890625, -12)\"><rect></rect><foreignObject width=\"33.78125\" 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>User</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-flowchart-App-1\" data-look=\"classic\" transform=\"translate(149.484375, 198.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-74.9140625\" y=\"-39\" width=\"149.828125\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-44.9140625, -24)\"><rect></rect><foreignObject width=\"89.828125\" height=\"48\"><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><b>Chat app</b><br>source client</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-flowchart-Orig-2\" data-look=\"classic\" transform=\"translate(149.484375, 339.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-106.484375\" y=\"-27\" width=\"212.96875\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-76.484375, -12)\"><rect></rect><foreignObject width=\"152.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>Original access token</p></span></div></foreignObject></g></g></g></g></g></g></g><defs><filter id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs><defs><filter id=\"diagram-282030b7d3f3f7f34e7ebfe037f263ebd58da3a9def269c7248692541e6bd00c-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs></svg>","diagramHtmlDark":"<svg id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 1231.78125px;\" viewBox=\"0 0 1231.78125 412\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>\n    #diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b foreignObject {\n      overflow: visible;\n    }\n  </style><style>#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .error-icon{fill:#a44141;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .error-text{fill:#ddd;stroke:#ddd;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edge-thickness-normal{stroke-width:1px;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edge-thickness-thick{stroke-width:3.5px;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edge-pattern-solid{stroke-dasharray:0;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edge-pattern-dashed{stroke-dasharray:3;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edge-pattern-dotted{stroke-dasharray:2;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .marker{fill:lightgrey;stroke:lightgrey;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .marker.cross{stroke:lightgrey;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b p{margin:0;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .label{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;color:#ccc;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .cluster-label text{fill:#F9FFFE;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .cluster-label span{color:#F9FFFE;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .cluster-label span p{background-color:transparent;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .label text,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b span{fill:#ccc;color:#ccc;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node rect,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node circle,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node ellipse,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node polygon,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .rough-node .label text,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node .label text,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .image-shape .label,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .icon-shape .label{text-anchor:middle;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .rough-node .label,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node .label,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .image-shape .label,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .icon-shape .label{text-align:center;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node.clickable{cursor:pointer;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .arrowheadPath{fill:lightgrey;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edgePath .path{stroke:lightgrey;stroke-width:1px;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .flowchart-link{stroke:lightgrey;fill:none;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .cluster text{fill:#F9FFFE;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .cluster span{color:#F9FFFE;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b rect.text{fill:none;stroke-width:0;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .icon-shape,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .icon-shape p,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .icon-shape .label rect,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b .node .neo-node{stroke:#ccc;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].node rect,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].cluster rect,#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].node polygon{stroke:url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].node path{stroke:url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-gradient);stroke-width:1px;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].node circle{stroke:url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_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;\"></path></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_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;\"></path></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_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;\"></circle></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_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;\"></circle></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_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;\"></path></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_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;\"></path></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M744.016,206L758.339,206C772.661,206,801.307,206,829.286,206C857.266,206,884.578,206,898.234,206L911.891,206\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-L_MCP_API_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_MCP_API_0\" data-points=\"W3sieCI6NzQ0LjAxNTYyNSwieSI6MjA2fSx7IngiOjgyOS45NTMxMjUsInkiOjIwNn0seyJ4Ijo5MTUuODkwNjI1LCJ5IjoyMDZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-pointEnd)\"></path><path d=\"M290.969,206L303.066,206C315.164,206,339.359,206,362.888,206C386.417,206,409.279,206,420.71,206L432.141,206\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-L_App_MCP_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_App_MCP_0\" data-points=\"W3sieCI6MjkwLjk2ODc1LCJ5IjoyMDZ9LHsieCI6MzYzLjU1NDY4NzUsInkiOjIwNn0seyJ4Ijo0MzYuMTQwNjI1LCJ5IjoyMDZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"translate(829.953125, 206)\"><g class=\"label\" data-id=\"L_MCP_API_0\" transform=\"translate(-60.9375, -12)\"><foreignObject width=\"121.875\" 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>exchanged token</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(363.5546875, 206)\"><g class=\"label\" data-id=\"L_App_MCP_0\" transform=\"translate(-47.5859375, -12)\"><foreignObject width=\"95.171875\" 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>original token</p></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(907.890625, 69)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-right\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"307.890625\" height=\"258\"></rect><g class=\"cluster-label\" transform=\"translate(161.9453125, 8)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M161.945,99.5L161.945,105.75C161.945,112,161.945,124.5,161.945,136.333C161.945,148.167,161.945,159.333,161.945,164.917L161.945,170.5\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-L_API_New_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_API_New_0\" data-points=\"W3sieCI6MTYxLjk0NTMxMjUsInkiOjk5LjV9LHsieCI6MTYxLjk0NTMxMjUsInkiOjEzN30seyJ4IjoxNjEuOTQ1MzEyNSwieSI6MTc0LjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_API_New_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><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\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-flowchart-API-11\" data-look=\"classic\" transform=\"translate(161.9453125, 72.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-43.3359375\" y=\"-27\" width=\"86.671875\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-13.3359375, -12)\"><rect></rect><foreignObject width=\"26.671875\" 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><b>API</b></p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-flowchart-New-12\" data-look=\"classic\" transform=\"translate(161.9453125, 201.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-118.9453125\" y=\"-27\" width=\"237.890625\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-88.9453125, -12)\"><rect></rect><foreignObject width=\"177.890625\" 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>Exchanged access token</p></span></div></foreignObject></g></g></g></g><g class=\"root\" transform=\"translate(428.140625, 33)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-te\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"307.875\" height=\"330\"></rect><g class=\"cluster-label\" transform=\"translate(103.671875, 8)\"><foreignObject width=\"116.53125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Token exchange</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M161.938,123.5L161.938,131.75C161.938,140,161.938,156.5,161.938,172.333C161.938,188.167,161.938,203.333,161.938,210.917L161.938,218.5\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-L_MCP_Mosaic_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_MCP_Mosaic_0\" data-points=\"W3sieCI6MTYxLjkzNzUsInkiOjEyMy41fSx7IngiOjE2MS45Mzc1LCJ5IjoxNzN9LHsieCI6MTYxLjkzNzUsInkiOjIyMi41fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"translate(161.9375, 173)\"><g class=\"label\" data-id=\"L_MCP_Mosaic_0\" transform=\"translate(-34.6953125, -12)\"><foreignObject width=\"69.390625\" 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>exchange</p></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-flowchart-MCP-7\" data-look=\"classic\" transform=\"translate(161.9375, 84.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-118.9375\" y=\"-39\" width=\"237.875\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-88.9375, -24)\"><rect></rect><foreignObject width=\"177.875\" height=\"48\"><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><b>MCP server</b><br>exchanging client (proxy)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-flowchart-Mosaic-8\" data-look=\"classic\" transform=\"translate(161.9375, 261.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-99.375\" y=\"-39\" width=\"198.75\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-69.375, -24)\"><rect></rect><foreignObject width=\"138.75\" height=\"48\"><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>Mosaic<br>Authorization policy</p></span></div></foreignObject></g></g></g></g><g class=\"root\" transform=\"translate(0, 0)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-left\" data-look=\"classic\"><rect style=\"\" x=\"8\" y=\"8\" width=\"282.96875\" height=\"396\"></rect><g class=\"cluster-label\" transform=\"translate(149.484375, 8)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M149.984,85L149.901,91.167C149.818,97.333,149.651,109.667,149.568,121.417C149.484,133.167,149.484,144.333,149.484,149.917L149.484,155.5\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-L_User_App_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_User_App_0\" data-points=\"W3sieCI6MTQ5Ljk4NDM3NSwieSI6ODV9LHsieCI6MTQ5LjQ4NDM3NSwieSI6MTIyfSx7IngiOjE0OS40ODQzNzUsInkiOjE1OS41fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-pointEnd)\"></path><path d=\"M149.484,237.5L149.484,243.75C149.484,250,149.484,262.5,149.484,274.333C149.484,286.167,149.484,297.333,149.484,302.917L149.484,308.5\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-L_App_Orig_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_App_Orig_0\" data-points=\"W3sieCI6MTQ5LjQ4NDM3NSwieSI6MjM3LjV9LHsieCI6MTQ5LjQ4NDM3NSwieSI6Mjc1fSx7IngiOjE0OS40ODQzNzUsInkiOjMxMi41fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_User_App_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><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\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_App_Orig_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><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\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-flowchart-User-0\" data-look=\"classic\" transform=\"translate(149.484375, 65)\"><g class=\"basic label-container outer-path\"><path d=\"M-9.765625 -19.5 C-5.63402329788857 -19.5, -1.5024215957771396 -19.5, 9.765625 -19.5 C9.765625 -19.5, 9.765625 -19.5, 9.765624999999998 -19.5 C10.092003724879708 -19.489533669550756, 10.418382449759417 -19.479067339101515, 11.0149942896239 -19.45993515863156 C11.491710427599333 -19.413946926136106, 11.968426565574765 -19.367958693640652, 12.259229652847864 -19.3399052695533 C12.57326310417319 -19.28913477650881, 12.887296555498514 -19.238364283464318, 13.493218259676757 -19.140403561325776 C13.875614823253832 -19.05312404106009, 14.258011386830907 -18.965844520794406, 14.71188938623539 -18.862249829261074 C14.954513452115796 -18.79024028006748, 15.197137517996202 -18.718230730873888, 15.910235251460602 -18.50658706670804 C16.236931233427896 -18.386359925399525, 16.56362721539519 -18.266132784091006, 17.083331595147794 -18.074876768247425 C17.428929816205592 -17.921890687592118, 17.77452803726339 -17.76890460693681, 18.22635791279238 -17.568892924097174 C18.501891286529617 -17.425147339506008, 18.777424660266853 -17.28140175491484, 19.334617264076783 -16.990714730406097 C19.571504155319666 -16.84711250483277, 19.808391046562548 -16.703510279259437, 20.403555573605697 -16.342718045390892 C20.70462824027377 -16.132702786348926, 21.005700906941843 -15.92268752730696, 21.428780344578712 -15.627565626425154 C21.724958982773177 -15.391371044109638, 22.021137620967643 -15.155176461794122, 22.40607870850187 -14.848196188198123 C22.695675901401188 -14.585191679928807, 22.985273094300503 -14.322187171659488, 23.331434736767985 -14.007812326905688 C23.633122849035757 -13.696294581934552, 23.93481096130353 -13.384776836963418, 24.201045942968648 -13.10986736009568 C24.405354939738032 -12.869874386979111, 24.609663936507417 -12.629881413862542, 25.011338908126582 -12.158051136245305 C25.217459563138647 -11.881868236507108, 25.42358021815071 -11.60568533676891, 25.758983964640635 -11.156274872382312 C26.01220083596056 -10.767265759784308, 26.265417707280484 -10.378256647186303, 26.440908878604247 -10.108655082055241 C26.613349187773316 -9.802469851650802, 26.78578949694238 -9.496284621246362, 27.0543114742735 -9.019496659696287 C27.20256378136679 -8.711647571925857, 27.350816088460082 -8.403798484155425, 27.59667114880834 -7.893275190886684 C27.697626381631824 -7.643913813976035, 27.79858161445531 -7.394552437065387, 28.065759229970325 -6.734618561215508 C28.21349074009916 -6.289674790527091, 28.361222250228 -5.844731019838673, 28.45964813421488 -5.548287939305138 C28.53863851083866 -5.247063398592884, 28.617628887462438 -4.945838857880629, 28.77671928754556 -4.339158212148133 C28.825217967481304 -4.090127740877732, 28.873716647417044 -3.841097269607332, 29.015669776581777 -3.1121979531509023 C29.07768080172871 -2.6312526875732645, 29.139691826875644 -2.1503074219956266, 29.175517702509367 -1.872449005199798 C29.198489048760468 -1.5146517452019224, 29.22146039501157 -1.1568544852040468, 29.255606215913414 -0.6250057626472757 C29.255606215913414 -0.2950014626878984, 29.255606215913414 0.035002837271478904, 29.255606215913414 0.625005762647271 C29.230267831871416 1.0196715468768762, 29.204929447829418 1.4143373311064813, 29.175517702509367 1.8724490051997846 C29.116889001631595 2.3271616316612866, 29.058260300753822 2.781874258122789, 29.015669776581777 3.1121979531508885 C28.924614633226657 3.5797468697680674, 28.83355948987154 4.047295786385247, 28.77671928754556 4.339158212148129 C28.682410505477446 4.698798471858554, 28.58810172340933 5.058438731568979, 28.459648134214884 5.548287939305125 C28.36914869153913 5.820857841516464, 28.278649248863374 6.093427743727802, 28.06575922997033 6.734618561215495 C27.88059692956904 7.191973023076222, 27.69543462916775 7.64932748493695, 27.596671148808344 7.893275190886679 C27.444613228240684 8.209026716463724, 27.292555307673023 8.52477824204077, 27.054311474273504 9.019496659696284 C26.870437795440786 9.345982995692756, 26.686564116608068 9.672469331689229, 26.44090887860425 10.108655082055236 C26.268875729910235 10.372944195817908, 26.096842581216222 10.63723330958058, 25.75898396464064 11.156274872382301 C25.494299341996072 11.510928153460844, 25.229614719351506 11.865581434539386, 25.011338908126582 12.158051136245302 C24.805015351292127 12.400410526246018, 24.598691794457675 12.642769916246735, 24.20104594296866 13.10986736009567 C24.015982551365898 13.300960505912542, 23.830919159763138 13.492053651729412, 23.33143473676799 14.007812326905684 C23.047151486767124 14.265990852833852, 22.762868236766263 14.52416937876202, 22.406078708501887 14.848196188198111 C22.174258064541238 15.033066982750311, 21.94243742058059 15.217937777302513, 21.428780344578715 15.627565626425152 C21.1501319572457 15.821938678934387, 20.87148356991269 16.016311731443622, 20.403555573605708 16.34271804539089 C20.043561283701997 16.56094869949179, 19.68356699379829 16.77917935359269, 19.334617264076787 16.990714730406093 C18.917161461971194 17.20850115497138, 18.4997056598656 17.426287579536663, 18.226357912792388 17.56889292409717 C17.84694926877146 17.736845876047692, 17.46754062475053 17.904798827998217, 17.083331595147804 18.07487676824742 C16.724634281142574 18.20688069556297, 16.365936967137344 18.338884622878513, 15.910235251460616 18.506587066708033 C15.577857751732886 18.605234963942127, 15.245480252005155 18.70388286117622, 14.711889386235413 18.86224982926107 C14.31790615404653 18.95217393102732, 13.923922921857649 19.04209803279357, 13.493218259676766 19.140403561325773 C13.038136312303491 19.213977681363872, 12.583054364930216 19.287551801401975, 12.259229652847878 19.3399052695533 C11.889869970615766 19.37553695387822, 11.520510288383655 19.411168638203144, 11.0149942896239 19.45993515863156 C10.536726298828276 19.475272282204205, 10.058458308032652 19.490609405776848, 9.765625000000004 19.5 C9.765625000000002 19.5, 9.765625000000002 19.5, 9.765625 19.5 C5.086248977965264 19.5, 0.4068729559305275 19.5, -9.765624999999996 19.5 C-10.180562252690576 19.48669376993258, -10.595499505381158 19.47338753986516, -11.014994289623893 19.45993515863156 C-11.415494171074895 19.421299416739558, -11.815994052525896 19.38266367484756, -12.259229652847871 19.3399052695533 C-12.644626332416028 19.277597323196606, -13.030023011984184 19.215289376839912, -13.493218259676759 19.140403561325773 C-13.840956239220477 19.061034636697304, -14.188694218764192 18.981665712068835, -14.711889386235388 18.862249829261074 C-15.006498805962924 18.774811299922344, -15.301108225690461 18.68737277058361, -15.910235251460593 18.506587066708043 C-16.204524675062537 18.398285838440916, -16.498814098664482 18.289984610173793, -17.083331595147797 18.074876768247425 C-17.53085870706766 17.8767697912206, -17.978385818987526 17.678662814193775, -18.22635791279238 17.568892924097174 C-18.65101467570566 17.347349762890953, -19.07567143861894 17.125806601684733, -19.33461726407678 16.990714730406097 C-19.592079923462368 16.834639353268024, -19.849542582847953 16.678563976129954, -20.403555573605686 16.3427180453909 C-20.69443513074022 16.13981305830693, -20.985314687874755 15.936908071222962, -21.428780344578712 15.627565626425156 C-21.735572859497392 15.3829067598692, -22.042365374416068 15.138247893313247, -22.40607870850187 14.848196188198125 C-22.774925269796466 14.5132195003756, -23.143771831091062 14.178242812553075, -23.331434736767974 14.007812326905697 C-23.58819430520477 13.742686992142096, -23.84495387364157 13.477561657378494, -24.201045942968655 13.109867360095677 C-24.419830020551398 12.852871133400305, -24.638614098134138 12.595874906704932, -25.01133890812658 12.158051136245307 C-25.243288098122626 11.847260352656518, -25.475237288118674 11.536469569067728, -25.758983964640635 11.156274872382316 C-25.9240842661042 10.902636473695765, -26.089184567567763 10.648998075009214, -26.440908878604244 10.108655082055249 C-26.660057069578116 9.719535277820478, -26.879205260551984 9.330415473585708, -27.0543114742735 9.019496659696289 C-27.182381875930712 8.753555730387475, -27.310452277587924 8.487614801078662, -27.59667114880834 7.893275190886686 C-27.780355299598074 7.4395717871445814, -27.96403945038781 6.985868383402476, -28.065759229970325 6.73461856121551 C-28.153618726661165 6.469999755692466, -28.241478223352 6.205380950169424, -28.45964813421488 5.5482879393051325 C-28.544030503127498 5.226501395091295, -28.628412872040116 4.904714850877457, -28.776719287545557 4.339158212148136 C-28.84743962917297 3.9760242046408636, -28.918159970800385 3.612890197133591, -29.015669776581777 3.112197953150904 C-29.054435705504563 2.8115370636243124, -29.093201634427345 2.510876174097721, -29.175517702509364 1.872449005199809 C-29.19969767919159 1.4958263506482625, -29.223877655873814 1.1192036960967162, -29.255606215913414 0.6250057626472781 C-29.255606215913414 0.3369308990389795, -29.255606215913414 0.048856035430680844, -29.255606215913414 -0.6250057626472687 C-29.238460335891876 -0.8920666838879885, -29.221314455870335 -1.1591276051287083, -29.175517702509367 -1.8724490051997822 C-29.12908139223374 -2.232599857810893, -29.082645081958116 -2.5927507104220036, -29.015669776581777 -3.112197953150895 C-28.941746529175422 -3.491778204898654, -28.86782328176907 -3.871358456646413, -28.77671928754556 -4.339158212148126 C-28.675009314031662 -4.727022422537988, -28.573299340517764 -5.11488663292785, -28.459648134214884 -5.548287939305123 C-28.335501262117287 -5.922198537945214, -28.21135439001969 -6.2961091365853035, -28.065759229970332 -6.734618561215485 C-27.907974836409792 -7.12434906386374, -27.750190442849252 -7.514079566511995, -27.596671148808344 -7.893275190886676 C-27.39371440473239 -8.314719212539051, -27.190757660656438 -8.736163234191425, -27.054311474273504 -9.019496659696282 C-26.846345375514733 -9.388761526893525, -26.63837927675596 -9.758026394090768, -26.440908878604247 -10.108655082055243 C-26.25668811521795 -10.391667644818048, -26.07246735183165 -10.674680207580852, -25.75898396464064 -11.156274872382308 C-25.581721965477534 -11.393789802360535, -25.404459966314427 -11.63130473233876, -25.011338908126586 -12.158051136245302 C-24.739055808165052 -12.477890358807414, -24.466772708203518 -12.797729581369529, -24.201045942968662 -13.10986736009567 C-23.942627101252654 -13.376706030748927, -23.684208259536646 -13.643544701402185, -23.331434736767996 -14.007812326905677 C-23.025372897541576 -14.285769591338601, -22.719311058315153 -14.563726855771524, -22.406078708501887 -14.848196188198107 C-22.08859592061333 -15.101380262967432, -21.77111313272477 -15.354564337736754, -21.42878034457872 -15.627565626425149 C-21.027569772330946 -15.907432753499448, -20.626359200083172 -16.187299880573747, -20.40355557360571 -16.342718045390885 C-20.08265887383491 -16.537247510590273, -19.761762174064106 -16.73177697578966, -19.33461726407679 -16.99071473040609 C-18.906025874525145 -17.214310583809297, -18.477434484973497 -17.437906437212504, -18.226357912792388 -17.56889292409717 C-17.8105143201302 -17.75297454700683, -17.394670727468014 -17.937056169916485, -17.083331595147804 -18.07487676824742 C-16.821075188455605 -18.171389550181797, -16.558818781763406 -18.267902332116176, -15.910235251460618 -18.506587066708033 C-15.593799830592651 -18.600503438618226, -15.277364409724683 -18.69441981052842, -14.711889386235413 -18.862249829261067 C-14.255524545765798 -18.96641212603936, -13.799159705296184 -19.07057442281765, -13.493218259676768 -19.140403561325773 C-13.032584623647397 -19.214875235331803, -12.571950987618028 -19.289346909337834, -12.25922965284788 -19.3399052695533 C-11.956606314445033 -19.36909897905121, -11.653982976042185 -19.398292688549116, -11.014994289623903 -19.45993515863156 C-10.607519432076604 -19.473002084211405, -10.200044574529304 -19.48606900979125, -9.765625000000005 -19.5 C-9.765625000000004 -19.5, -9.765625000000004 -19.5, -9.765625 -19.5\" stroke=\"none\" stroke-width=\"0\" fill=\"#1f2020\" style=\"\"></path><path d=\"M-9.765625 -19.5 C-2.5768289256087344 -19.5, 4.611967148782531 -19.5, 9.765625 -19.5 M-9.765625 -19.5 C-2.1053738271076217 -19.5, 5.554877345784757 -19.5, 9.765625 -19.5 M9.765625 -19.5 C9.765625 -19.5, 9.765624999999998 -19.5, 9.765624999999998 -19.5 M9.765625 -19.5 C9.765625 -19.5, 9.765624999999998 -19.5, 9.765624999999998 -19.5 M9.765624999999998 -19.5 C10.114961138473058 -19.488797469980714, 10.46429727694612 -19.477594939961428, 11.0149942896239 -19.45993515863156 M9.765624999999998 -19.5 C10.246205688378303 -19.484588712717272, 10.726786376756607 -19.46917742543454, 11.0149942896239 -19.45993515863156 M11.0149942896239 -19.45993515863156 C11.481496850584465 -19.414932217627108, 11.94799941154503 -19.369929276622656, 12.259229652847864 -19.3399052695533 M11.0149942896239 -19.45993515863156 C11.422746566171412 -19.42059978690688, 11.830498842718926 -19.3812644151822, 12.259229652847864 -19.3399052695533 M12.259229652847864 -19.3399052695533 C12.551216292472333 -19.292699134049023, 12.843202932096801 -19.24549299854475, 13.493218259676757 -19.140403561325776 M12.259229652847864 -19.3399052695533 C12.57455978473826 -19.288925139250956, 12.889889916628658 -19.23794500894861, 13.493218259676757 -19.140403561325776 M13.493218259676757 -19.140403561325776 C13.921466967552666 -19.042658588337087, 14.349715675428577 -18.944913615348394, 14.71188938623539 -18.862249829261074 M13.493218259676757 -19.140403561325776 C13.928481787813826 -19.041057501388455, 14.363745315950897 -18.941711441451137, 14.71188938623539 -18.862249829261074 M14.71188938623539 -18.862249829261074 C15.15000801985781 -18.73221851853358, 15.588126653480229 -18.602187207806082, 15.910235251460602 -18.50658706670804 M14.71188938623539 -18.862249829261074 C15.086503489741522 -18.751066329730012, 15.461117593247657 -18.639882830198946, 15.910235251460602 -18.50658706670804 M15.910235251460602 -18.50658706670804 C16.296942683737036 -18.364275156945993, 16.683650116013474 -18.221963247183947, 17.083331595147794 -18.074876768247425 M15.910235251460602 -18.50658706670804 C16.354726284026004 -18.34301025789391, 16.799217316591406 -18.179433449079777, 17.083331595147794 -18.074876768247425 M17.083331595147794 -18.074876768247425 C17.388130511614754 -17.939951329466112, 17.69292942808172 -17.8050258906848, 18.22635791279238 -17.568892924097174 M17.083331595147794 -18.074876768247425 C17.458159874338524 -17.908951407935536, 17.83298815352925 -17.743026047623648, 18.22635791279238 -17.568892924097174 M18.22635791279238 -17.568892924097174 C18.598464153305134 -17.374765336767094, 18.97057039381789 -17.18063774943701, 19.334617264076783 -16.990714730406097 M18.22635791279238 -17.568892924097174 C18.604152429405335 -17.371797766769134, 18.98194694601829 -17.17470260944109, 19.334617264076783 -16.990714730406097 M19.334617264076783 -16.990714730406097 C19.63931609147915 -16.80600451062572, 19.94401491888151 -16.62129429084534, 20.403555573605697 -16.342718045390892 M19.334617264076783 -16.990714730406097 C19.649441066421733 -16.799866691314566, 19.964264868766687 -16.609018652223032, 20.403555573605697 -16.342718045390892 M20.403555573605697 -16.342718045390892 C20.68841341512895 -16.144013546441485, 20.9732712566522 -15.945309047492081, 21.428780344578712 -15.627565626425154 M20.403555573605697 -16.342718045390892 C20.706021674516354 -16.131730786942097, 21.00848777542701 -15.920743528493299, 21.428780344578712 -15.627565626425154 M21.428780344578712 -15.627565626425154 C21.669218619007417 -15.435822500899457, 21.90965689343612 -15.244079375373762, 22.40607870850187 -14.848196188198123 M21.428780344578712 -15.627565626425154 C21.66626427495021 -15.438178511666683, 21.90374820532171 -15.24879139690821, 22.40607870850187 -14.848196188198123 M22.40607870850187 -14.848196188198123 C22.73000634457983 -14.554013679767712, 23.053933980657796 -14.2598311713373, 23.331434736767985 -14.007812326905688 M22.40607870850187 -14.848196188198123 C22.62181174251971 -14.652273154686412, 22.837544776537552 -14.456350121174703, 23.331434736767985 -14.007812326905688 M23.331434736767985 -14.007812326905688 C23.590405253111197 -13.740404006906514, 23.849375769454404 -13.47299568690734, 24.201045942968648 -13.10986736009568 M23.331434736767985 -14.007812326905688 C23.613708782968864 -13.71634119907309, 23.89598282916974 -13.424870071240491, 24.201045942968648 -13.10986736009568 M24.201045942968648 -13.10986736009568 C24.471234247979883 -12.7924888028794, 24.741422552991114 -12.475110245663123, 25.011338908126582 -12.158051136245305 M24.201045942968648 -13.10986736009568 C24.48999392084135 -12.770452623680695, 24.778941898714052 -12.43103788726571, 25.011338908126582 -12.158051136245305 M25.011338908126582 -12.158051136245305 C25.16996957149543 -11.94550049888178, 25.328600234864275 -11.732949861518252, 25.758983964640635 -11.156274872382312 M25.011338908126582 -12.158051136245305 C25.27210696558713 -11.80864569570692, 25.53287502304768 -11.459240255168535, 25.758983964640635 -11.156274872382312 M25.758983964640635 -11.156274872382312 C26.024009890501485 -10.749123880834295, 26.289035816362336 -10.341972889286277, 26.440908878604247 -10.108655082055241 M25.758983964640635 -11.156274872382312 C25.98643777940955 -10.806844732996005, 26.21389159417846 -10.457414593609698, 26.440908878604247 -10.108655082055241 M26.440908878604247 -10.108655082055241 C26.677710453738666 -9.688189906644434, 26.91451202887308 -9.267724731233626, 27.0543114742735 -9.019496659696287 M26.440908878604247 -10.108655082055241 C26.644236701745278 -9.747625942893638, 26.847564524886305 -9.386596803732033, 27.0543114742735 -9.019496659696287 M27.0543114742735 -9.019496659696287 C27.21666392589114 -8.682368320126287, 27.379016377508776 -8.345239980556286, 27.59667114880834 -7.893275190886684 M27.0543114742735 -9.019496659696287 C27.235487189850936 -8.64328140976044, 27.41666290542837 -8.267066159824594, 27.59667114880834 -7.893275190886684 M27.59667114880834 -7.893275190886684 C27.77405873061549 -7.455124434267442, 27.95144631242264 -7.0169736776482, 28.065759229970325 -6.734618561215508 M27.59667114880834 -7.893275190886684 C27.73164878521938 -7.5598778193363465, 27.86662642163042 -7.22648044778601, 28.065759229970325 -6.734618561215508 M28.065759229970325 -6.734618561215508 C28.20795353667502 -6.306351965007044, 28.35014784337972 -5.878085368798581, 28.45964813421488 -5.548287939305138 M28.065759229970325 -6.734618561215508 C28.15666971398826 -6.4608106679720665, 28.247580198006194 -6.187002774728625, 28.45964813421488 -5.548287939305138 M28.45964813421488 -5.548287939305138 C28.547030122685285 -5.215062545674116, 28.63441211115569 -4.881837152043095, 28.77671928754556 -4.339158212148133 M28.45964813421488 -5.548287939305138 C28.525293965093386 -5.297951935082328, 28.590939795971888 -5.047615930859518, 28.77671928754556 -4.339158212148133 M28.77671928754556 -4.339158212148133 C28.84121012643225 -4.008011384608601, 28.905700965318943 -3.6768645570690683, 29.015669776581777 -3.1121979531509023 M28.77671928754556 -4.339158212148133 C28.856996564083694 -3.926951363733219, 28.937273840621828 -3.514744515318305, 29.015669776581777 -3.1121979531509023 M29.015669776581777 -3.1121979531509023 C29.0492672104696 -2.851622890480679, 29.082864644357425 -2.5910478278104554, 29.175517702509367 -1.872449005199798 M29.015669776581777 -3.1121979531509023 C29.07943477383846 -2.617649226251008, 29.143199771095144 -2.123100499351114, 29.175517702509367 -1.872449005199798 M29.175517702509367 -1.872449005199798 C29.195419119022823 -1.562468378868453, 29.21532053553628 -1.252487752537108, 29.255606215913414 -0.6250057626472757 M29.175517702509367 -1.872449005199798 C29.20466778395166 -1.418412957213829, 29.233817865393952 -0.9643769092278602, 29.255606215913414 -0.6250057626472757 M29.255606215913414 -0.6250057626472757 C29.255606215913414 -0.36612771028249214, 29.255606215913414 -0.10724965791770857, 29.255606215913414 0.625005762647271 M29.255606215913414 -0.6250057626472757 C29.255606215913414 -0.1345019866467091, 29.255606215913414 0.3560017893538575, 29.255606215913414 0.625005762647271 M29.255606215913414 0.625005762647271 C29.225597989444335 1.0924081121076101, 29.195589762975256 1.5598104615679491, 29.175517702509367 1.8724490051997846 M29.255606215913414 0.625005762647271 C29.233764645547737 0.9652058512909505, 29.211923075182064 1.30540593993463, 29.175517702509367 1.8724490051997846 M29.175517702509367 1.8724490051997846 C29.132086930283467 2.209289498207821, 29.08865615805757 2.546129991215857, 29.015669776581777 3.1121979531508885 M29.175517702509367 1.8724490051997846 C29.11874464446323 2.312769632297253, 29.06197158641709 2.7530902593947215, 29.015669776581777 3.1121979531508885 M29.015669776581777 3.1121979531508885 C28.95082687817534 3.4451525319165106, 28.885983979768906 3.7781071106821322, 28.77671928754556 4.339158212148129 M29.015669776581777 3.1121979531508885 C28.930986840829256 3.547026930495281, 28.846303905076734 3.981855907839674, 28.77671928754556 4.339158212148129 M28.77671928754556 4.339158212148129 C28.669153922069658 4.749351569832036, 28.561588556593758 5.1595449275159435, 28.459648134214884 5.548287939305125 M28.77671928754556 4.339158212148129 C28.67253511577559 4.736457612812696, 28.568350944005623 5.133757013477265, 28.459648134214884 5.548287939305125 M28.459648134214884 5.548287939305125 C28.313785123562713 5.987604087274787, 28.167922112910542 6.426920235244448, 28.06575922997033 6.734618561215495 M28.459648134214884 5.548287939305125 C28.317958041318175 5.975035923859492, 28.176267948421465 6.40178390841386, 28.06575922997033 6.734618561215495 M28.06575922997033 6.734618561215495 C27.941585857257454 7.041329192545134, 27.817412484544583 7.348039823874774, 27.596671148808344 7.893275190886679 M28.06575922997033 6.734618561215495 C27.907218269169082 7.126217799575535, 27.74867730836783 7.5178170379355755, 27.596671148808344 7.893275190886679 M27.596671148808344 7.893275190886679 C27.45391291380022 8.189715720417952, 27.311154678792093 8.486156249949225, 27.054311474273504 9.019496659696284 M27.596671148808344 7.893275190886679 C27.42426231220463 8.251285829052433, 27.251853475600917 8.609296467218188, 27.054311474273504 9.019496659696284 M27.054311474273504 9.019496659696284 C26.82555364653112 9.42567934709479, 26.596795818788735 9.831862034493298, 26.44090887860425 10.108655082055236 M27.054311474273504 9.019496659696284 C26.829953751323174 9.41786651547757, 26.605596028372847 9.816236371258855, 26.44090887860425 10.108655082055236 M26.44090887860425 10.108655082055236 C26.25157093188425 10.399529012574737, 26.062232985164243 10.690402943094236, 25.75898396464064 11.156274872382301 M26.44090887860425 10.108655082055236 C26.293266047777298 10.335474117856707, 26.145623216950344 10.56229315365818, 25.75898396464064 11.156274872382301 M25.75898396464064 11.156274872382301 C25.486838206720684 11.520925395006458, 25.21469244880073 11.885575917630613, 25.011338908126582 12.158051136245302 M25.75898396464064 11.156274872382301 C25.482770128508896 11.526376249200707, 25.206556292377147 11.896477626019115, 25.011338908126582 12.158051136245302 M25.011338908126582 12.158051136245302 C24.795098026359437 12.412059980423734, 24.57885714459229 12.666068824602165, 24.20104594296866 13.10986736009567 M25.011338908126582 12.158051136245302 C24.8105229142887 12.39394102936103, 24.609706920450822 12.62983092247676, 24.20104594296866 13.10986736009567 M24.20104594296866 13.10986736009567 C23.979141485680373 13.339001930940592, 23.757237028392083 13.568136501785514, 23.33143473676799 14.007812326905684 M24.20104594296866 13.10986736009567 C23.858135740966055 13.463950297114526, 23.515225538963453 13.818033234133381, 23.33143473676799 14.007812326905684 M23.33143473676799 14.007812326905684 C23.079526015679086 14.236589162259104, 22.827617294590183 14.465365997612524, 22.406078708501887 14.848196188198111 M23.33143473676799 14.007812326905684 C23.0383193620686 14.27401195479984, 22.745203987369205 14.540211582693997, 22.406078708501887 14.848196188198111 M22.406078708501887 14.848196188198111 C22.090003613779462 15.100257665127732, 21.773928519057034 15.35231914205735, 21.428780344578715 15.627565626425152 M22.406078708501887 14.848196188198111 C22.181981840876496 15.026907476661263, 21.957884973251108 15.205618765124413, 21.428780344578715 15.627565626425152 M21.428780344578715 15.627565626425152 C21.169328679125858 15.808547876763487, 20.909877013673 15.989530127101823, 20.403555573605708 16.34271804539089 M21.428780344578715 15.627565626425152 C21.124811670334097 15.83960101498637, 20.82084299608948 16.051636403547587, 20.403555573605708 16.34271804539089 M20.403555573605708 16.34271804539089 C20.061518808155746 16.5500627426378, 19.719482042705785 16.75740743988471, 19.334617264076787 16.990714730406093 M20.403555573605708 16.34271804539089 C20.06337381255851 16.548938228067627, 19.72319205151131 16.755158410744368, 19.334617264076787 16.990714730406093 M19.334617264076787 16.990714730406093 C19.07032066154734 17.128598098655655, 18.80602405901789 17.266481466905212, 18.226357912792388 17.56889292409717 M19.334617264076787 16.990714730406093 C18.993216528350242 17.168823275557024, 18.651815792623694 17.346931820707955, 18.226357912792388 17.56889292409717 M18.226357912792388 17.56889292409717 C17.964737684193405 17.684704438609597, 17.703117455594423 17.800515953122023, 17.083331595147804 18.07487676824742 M18.226357912792388 17.56889292409717 C17.848791480114294 17.73603038373348, 17.471225047436203 17.903167843369783, 17.083331595147804 18.07487676824742 M17.083331595147804 18.07487676824742 C16.72319108633526 18.207411804592805, 16.363050577522714 18.339946840938193, 15.910235251460616 18.506587066708033 M17.083331595147804 18.07487676824742 C16.668611955094295 18.22749742941344, 16.253892315040787 18.380118090579458, 15.910235251460616 18.506587066708033 M15.910235251460616 18.506587066708033 C15.565385816623243 18.608936568816144, 15.22053638178587 18.711286070924256, 14.711889386235413 18.86224982926107 M15.910235251460616 18.506587066708033 C15.652031062597782 18.583220714621078, 15.39382687373495 18.659854362534123, 14.711889386235413 18.86224982926107 M14.711889386235413 18.86224982926107 C14.278091941436587 18.96126126524352, 13.844294496637763 19.060272701225976, 13.493218259676766 19.140403561325773 M14.711889386235413 18.86224982926107 C14.418216758466883 18.929278690156245, 14.124544130698354 18.99630755105142, 13.493218259676766 19.140403561325773 M13.493218259676766 19.140403561325773 C13.246175549922029 19.180343510794092, 12.999132840167292 19.22028346026241, 12.259229652847878 19.3399052695533 M13.493218259676766 19.140403561325773 C13.165148377617125 19.193443355637243, 12.837078495557485 19.246483149948713, 12.259229652847878 19.3399052695533 M12.259229652847878 19.3399052695533 C11.805769677574244 19.383650008002537, 11.352309702300609 19.427394746451775, 11.0149942896239 19.45993515863156 M12.259229652847878 19.3399052695533 C11.936429911066474 19.371045372419463, 11.61363016928507 19.402185475285627, 11.0149942896239 19.45993515863156 M11.0149942896239 19.45993515863156 C10.671683926552115 19.470944453762186, 10.328373563480332 19.481953748892817, 9.765625000000004 19.5 M11.0149942896239 19.45993515863156 C10.59890217379825 19.473278422911918, 10.182810057972599 19.486621687192272, 9.765625000000004 19.5 M9.765625000000004 19.5 C9.765625000000002 19.5, 9.765625000000002 19.5, 9.765625 19.5 M9.765625000000004 19.5 C9.765625000000002 19.5, 9.765625000000002 19.5, 9.765625 19.5 M9.765625 19.5 C4.429386816175766 19.5, -0.9068513676484677 19.5, -9.765624999999996 19.5 M9.765625 19.5 C3.336506697475375 19.5, -3.0926116050492496 19.5, -9.765624999999996 19.5 M-9.765624999999996 19.5 C-10.025997392220212 19.491650364165615, -10.286369784440426 19.48330072833123, -11.014994289623893 19.45993515863156 M-9.765624999999996 19.5 C-10.106902788877568 19.489055885567616, -10.448180577755139 19.47811177113523, -11.014994289623893 19.45993515863156 M-11.014994289623893 19.45993515863156 C-11.364998759935347 19.426170648322575, -11.715003230246802 19.39240613801359, -12.259229652847871 19.3399052695533 M-11.014994289623893 19.45993515863156 C-11.364765736287127 19.426193127833667, -11.71453718295036 19.392451097035774, -12.259229652847871 19.3399052695533 M-12.259229652847871 19.3399052695533 C-12.575738889556963 19.288734510727963, -12.892248126266054 19.237563751902627, -13.493218259676759 19.140403561325773 M-12.259229652847871 19.3399052695533 C-12.610957903120564 19.28304057374253, -12.962686153393257 19.22617587793176, -13.493218259676759 19.140403561325773 M-13.493218259676759 19.140403561325773 C-13.925329221836574 19.041777054000345, -14.357440183996388 18.94315054667492, -14.711889386235388 18.862249829261074 M-13.493218259676759 19.140403561325773 C-13.739528861663171 19.084184773749264, -13.985839463649583 19.027965986172756, -14.711889386235388 18.862249829261074 M-14.711889386235388 18.862249829261074 C-15.147148674976656 18.733067157085298, -15.582407963717923 18.603884484909518, -15.910235251460593 18.506587066708043 M-14.711889386235388 18.862249829261074 C-15.186586079954566 18.721362342299017, -15.661282773673744 18.580474855336956, -15.910235251460593 18.506587066708043 M-15.910235251460593 18.506587066708043 C-16.272878138594184 18.37313113200878, -16.635521025727776 18.239675197309516, -17.083331595147797 18.074876768247425 M-15.910235251460593 18.506587066708043 C-16.374956719115662 18.335565270772822, -16.839678186770733 18.1645434748376, -17.083331595147797 18.074876768247425 M-17.083331595147797 18.074876768247425 C-17.416901934244443 17.927215074141877, -17.750472273341092 17.77955338003633, -18.22635791279238 17.568892924097174 M-17.083331595147797 18.074876768247425 C-17.41686949566149 17.927229433740294, -17.750407396175188 17.779582099233163, -18.22635791279238 17.568892924097174 M-18.22635791279238 17.568892924097174 C-18.594305429293513 17.376934940420167, -18.962252945794646 17.184976956743157, -19.33461726407678 16.990714730406097 M-18.22635791279238 17.568892924097174 C-18.48454130331375 17.43419881463653, -18.74272469383512 17.299504705175885, -19.33461726407678 16.990714730406097 M-19.33461726407678 16.990714730406097 C-19.65358014092285 16.797357560028086, -19.972543017768917 16.60400038965008, -20.403555573605686 16.3427180453909 M-19.33461726407678 16.990714730406097 C-19.664688607555572 16.790623542274734, -19.994759951034364 16.59053235414337, -20.403555573605686 16.3427180453909 M-20.403555573605686 16.3427180453909 C-20.67891328376394 16.150640426827657, -20.954270993922197 15.958562808264414, -21.428780344578712 15.627565626425156 M-20.403555573605686 16.3427180453909 C-20.80844585191414 16.06028411466058, -21.21333613022259 15.777850183930262, -21.428780344578712 15.627565626425156 M-21.428780344578712 15.627565626425156 C-21.724126126241934 15.392035225030064, -22.019471907905153 15.156504823634972, -22.40607870850187 14.848196188198125 M-21.428780344578712 15.627565626425156 C-21.67851687636569 15.428407388093254, -21.928253408152674 15.229249149761351, -22.40607870850187 14.848196188198125 M-22.40607870850187 14.848196188198125 C-22.690293559841034 14.590079780124784, -22.9745084111802 14.33196337205144, -23.331434736767974 14.007812326905697 M-22.40607870850187 14.848196188198125 C-22.74975519692472 14.536078294594082, -23.093431685347575 14.223960400990041, -23.331434736767974 14.007812326905697 M-23.331434736767974 14.007812326905697 C-23.6272571828908 13.702351363809367, -23.923079629013632 13.396890400713035, -24.201045942968655 13.109867360095677 M-23.331434736767974 14.007812326905697 C-23.5198190180129 13.813290089883182, -23.708203299257825 13.618767852860667, -24.201045942968655 13.109867360095677 M-24.201045942968655 13.109867360095677 C-24.475543900019275 12.787426440367785, -24.750041857069895 12.464985520639893, -25.01133890812658 12.158051136245307 M-24.201045942968655 13.109867360095677 C-24.43685057297 12.832877824032545, -24.67265520297134 12.555888287969413, -25.01133890812658 12.158051136245307 M-25.01133890812658 12.158051136245307 C-25.169256881797754 11.946455438149295, -25.32717485546893 11.734859740053283, -25.758983964640635 11.156274872382316 M-25.01133890812658 12.158051136245307 C-25.177952854338166 11.93480362716454, -25.344566800549753 11.711556118083772, -25.758983964640635 11.156274872382316 M-25.758983964640635 11.156274872382316 C-26.002653512626924 10.781933012240055, -26.246323060613214 10.407591152097794, -26.440908878604244 10.108655082055249 M-25.758983964640635 11.156274872382316 C-25.904399913804465 10.932876924816854, -26.049815862968295 10.709478977251393, -26.440908878604244 10.108655082055249 M-26.440908878604244 10.108655082055249 C-26.58726602643933 9.848783145805783, -26.733623174274413 9.588911209556317, -27.0543114742735 9.019496659696289 M-26.440908878604244 10.108655082055249 C-26.65869512440569 9.721953549386026, -26.87648137020713 9.335252016716803, -27.0543114742735 9.019496659696289 M-27.0543114742735 9.019496659696289 C-27.167645155198123 8.784156846304008, -27.280978836122745 8.548817032911725, -27.59667114880834 7.893275190886686 M-27.0543114742735 9.019496659696289 C-27.23328800549671 8.647848063126995, -27.412264536719924 8.276199466557701, -27.59667114880834 7.893275190886686 M-27.59667114880834 7.893275190886686 C-27.710535245815425 7.61202866986663, -27.824399342822513 7.330782148846574, -28.065759229970325 6.73461856121551 M-27.59667114880834 7.893275190886686 C-27.75604636157785 7.499615334035877, -27.915421574347363 7.105955477185067, -28.065759229970325 6.73461856121551 M-28.065759229970325 6.73461856121551 C-28.181124229664555 6.387157563053008, -28.296489229358787 6.039696564890507, -28.45964813421488 5.5482879393051325 M-28.065759229970325 6.73461856121551 C-28.17226097763323 6.413852266003928, -28.278762725296133 6.093085970792345, -28.45964813421488 5.5482879393051325 M-28.45964813421488 5.5482879393051325 C-28.550696402198128 5.201081432916049, -28.641744670181374 4.8538749265269665, -28.776719287545557 4.339158212148136 M-28.45964813421488 5.5482879393051325 C-28.557816320534116 5.173930098508801, -28.65598450685335 4.799572257712469, -28.776719287545557 4.339158212148136 M-28.776719287545557 4.339158212148136 C-28.851610067395587 3.9546098857901737, -28.926500847245613 3.5700615594322116, -29.015669776581777 3.112197953150904 M-28.776719287545557 4.339158212148136 C-28.83516144549874 4.039070082813001, -28.893603603451925 3.7389819534778654, -29.015669776581777 3.112197953150904 M-29.015669776581777 3.112197953150904 C-29.06890171061228 2.6993415846446682, -29.12213364464278 2.286485216138433, -29.175517702509364 1.872449005199809 M-29.015669776581777 3.112197953150904 C-29.07002019368031 2.69066685083849, -29.124370610778843 2.2691357485260766, -29.175517702509364 1.872449005199809 M-29.175517702509364 1.872449005199809 C-29.196973650073293 1.538255302962489, -29.21842959763722 1.204061600725169, -29.255606215913414 0.6250057626472781 M-29.175517702509364 1.872449005199809 C-29.20599167138169 1.3977923418683988, -29.236465640254014 0.9231356785369884, -29.255606215913414 0.6250057626472781 M-29.255606215913414 0.6250057626472781 C-29.255606215913414 0.12552420039199436, -29.255606215913414 -0.37395736186328943, -29.255606215913414 -0.6250057626472687 M-29.255606215913414 0.6250057626472781 C-29.255606215913414 0.14306873968741485, -29.255606215913414 -0.33886828327244845, -29.255606215913414 -0.6250057626472687 M-29.255606215913414 -0.6250057626472687 C-29.238221245071703 -0.8957907164028023, -29.220836274229992 -1.1665756701583359, -29.175517702509367 -1.8724490051997822 M-29.255606215913414 -0.6250057626472687 C-29.2257048057913 -1.0907443612830456, -29.195803395669184 -1.5564829599188226, -29.175517702509367 -1.8724490051997822 M-29.175517702509367 -1.8724490051997822 C-29.13859558562275 -2.1588096526757314, -29.10167346873613 -2.445170300151681, -29.015669776581777 -3.112197953150895 M-29.175517702509367 -1.8724490051997822 C-29.13281665224068 -2.203629918807591, -29.09011560197199 -2.5348108324154004, -29.015669776581777 -3.112197953150895 M-29.015669776581777 -3.112197953150895 C-28.95456889354171 -3.425938073885446, -28.89346801050164 -3.739678194619997, -28.77671928754556 -4.339158212148126 M-29.015669776581777 -3.112197953150895 C-28.937927627407394 -3.511387458352315, -28.860185478233007 -3.9105769635537344, -28.77671928754556 -4.339158212148126 M-28.77671928754556 -4.339158212148126 C-28.685918455260907 -4.685421138979154, -28.595117622976257 -5.031684065810183, -28.459648134214884 -5.548287939305123 M-28.77671928754556 -4.339158212148126 C-28.686845578273456 -4.681885617114658, -28.59697186900135 -5.024613022081191, -28.459648134214884 -5.548287939305123 M-28.459648134214884 -5.548287939305123 C-28.329547192406483 -5.940131247261976, -28.19944625059808 -6.33197455521883, -28.065759229970332 -6.734618561215485 M-28.459648134214884 -5.548287939305123 C-28.307348814998303 -6.00698922318428, -28.155049495781725 -6.465690507063438, -28.065759229970332 -6.734618561215485 M-28.065759229970332 -6.734618561215485 C-27.889695037949025 -7.169500519477701, -27.713630845927714 -7.604382477739918, -27.596671148808344 -7.893275190886676 M-28.065759229970332 -6.734618561215485 C-27.9265942454491 -7.078358763554871, -27.787429260927865 -7.422098965894256, -27.596671148808344 -7.893275190886676 M-27.596671148808344 -7.893275190886676 C-27.425248358344945 -8.249238283144063, -27.25382556788154 -8.605201375401451, -27.054311474273504 -9.019496659696282 M-27.596671148808344 -7.893275190886676 C-27.439342334801005 -8.219971839470269, -27.282013520793665 -8.54666848805386, -27.054311474273504 -9.019496659696282 M-27.054311474273504 -9.019496659696282 C-26.92574511028527 -9.24777925771345, -26.797178746297035 -9.476061855730618, -26.440908878604247 -10.108655082055243 M-27.054311474273504 -9.019496659696282 C-26.866450893024204 -9.353062144651043, -26.678590311774904 -9.686627629605804, -26.440908878604247 -10.108655082055243 M-26.440908878604247 -10.108655082055243 C-26.250972088679717 -10.400448996548814, -26.061035298755186 -10.692242911042385, -25.75898396464064 -11.156274872382308 M-26.440908878604247 -10.108655082055243 C-26.23275356401398 -10.428437542794253, -26.024598249423715 -10.748220003533262, -25.75898396464064 -11.156274872382308 M-25.75898396464064 -11.156274872382308 C-25.53430346827085 -11.457326268703529, -25.309622971901057 -11.758377665024748, -25.011338908126586 -12.158051136245302 M-25.75898396464064 -11.156274872382308 C-25.596138115174586 -11.374473475104741, -25.43329226570853 -11.592672077827174, -25.011338908126586 -12.158051136245302 M-25.011338908126586 -12.158051136245302 C-24.76114501159006 -12.451943123553118, -24.510951115053537 -12.745835110860932, -24.201045942968662 -13.10986736009567 M-25.011338908126586 -12.158051136245302 C-24.809678469730237 -12.394932961989664, -24.608018031333888 -12.631814787734028, -24.201045942968662 -13.10986736009567 M-24.201045942968662 -13.10986736009567 C-23.910919954117116 -13.409446263371564, -23.62079396526557 -13.709025166647457, -23.331434736767996 -14.007812326905677 M-24.201045942968662 -13.10986736009567 C-23.98635321111023 -13.331555232340596, -23.771660479251796 -13.553243104585524, -23.331434736767996 -14.007812326905677 M-23.331434736767996 -14.007812326905677 C-23.105423007446028 -14.213070199533222, -22.879411278124056 -14.418328072160769, -22.406078708501887 -14.848196188198107 M-23.331434736767996 -14.007812326905677 C-22.972693171156315 -14.333611925012512, -22.613951605544635 -14.659411523119347, -22.406078708501887 -14.848196188198107 M-22.406078708501887 -14.848196188198107 C-22.039036910435645 -15.140902254763487, -21.6719951123694 -15.433608321328865, -21.42878034457872 -15.627565626425149 M-22.406078708501887 -14.848196188198107 C-22.14431670827278 -15.056944417601452, -21.882554708043674 -15.265692647004794, -21.42878034457872 -15.627565626425149 M-21.42878034457872 -15.627565626425149 C-21.120699120701286 -15.842469751580815, -20.812617896823852 -16.05737387673648, -20.40355557360571 -16.342718045390885 M-21.42878034457872 -15.627565626425149 C-21.19059821776211 -15.793711167354328, -20.952416090945494 -15.959856708283507, -20.40355557360571 -16.342718045390885 M-20.40355557360571 -16.342718045390885 C-20.082046805987325 -16.537618549716388, -19.76053803836894 -16.732519054041894, -19.33461726407679 -16.99071473040609 M-20.40355557360571 -16.342718045390885 C-20.12971224923306 -16.508723477907587, -19.85586892486041 -16.674728910424292, -19.33461726407679 -16.99071473040609 M-19.33461726407679 -16.99071473040609 C-19.005982659856613 -17.162163192927245, -18.677348055636433 -17.333611655448404, -18.226357912792388 -17.56889292409717 M-19.33461726407679 -16.99071473040609 C-19.10303061914019 -17.11153333473119, -18.871443974203583 -17.23235193905629, -18.226357912792388 -17.56889292409717 M-18.226357912792388 -17.56889292409717 C-17.975430034873558 -17.679971252140806, -17.724502156954728 -17.791049580184442, -17.083331595147804 -18.07487676824742 M-18.226357912792388 -17.56889292409717 C-17.94291858105414 -17.694363108328652, -17.659479249315897 -17.81983329256013, -17.083331595147804 -18.07487676824742 M-17.083331595147804 -18.07487676824742 C-16.807318285497605 -18.17645221763776, -16.531304975847405 -18.2780276670281, -15.910235251460618 -18.506587066708033 M-17.083331595147804 -18.07487676824742 C-16.74097178047021 -18.20086834478821, -16.398611965792618 -18.326859921329, -15.910235251460618 -18.506587066708033 M-15.910235251460618 -18.506587066708033 C-15.49846195009956 -18.62879922110983, -15.086688648738502 -18.751011375511627, -14.711889386235413 -18.862249829261067 M-15.910235251460618 -18.506587066708033 C-15.654577549194785 -18.582464930765866, -15.398919846928955 -18.658342794823703, -14.711889386235413 -18.862249829261067 M-14.711889386235413 -18.862249829261067 C-14.323025108708032 -18.951005563030133, -13.93416083118065 -19.0397612967992, -13.493218259676768 -19.140403561325773 M-14.711889386235413 -18.862249829261067 C-14.440966699522145 -18.92408616456762, -14.170044012808878 -18.985922499874167, -13.493218259676768 -19.140403561325773 M-13.493218259676768 -19.140403561325773 C-13.115899940921123 -19.20140546095492, -12.73858162216548 -19.26240736058407, -12.25922965284788 -19.3399052695533 M-13.493218259676768 -19.140403561325773 C-13.00241128659454 -19.219753426468785, -12.511604313512313 -19.299103291611797, -12.25922965284788 -19.3399052695533 M-12.25922965284788 -19.3399052695533 C-11.991195594148959 -19.365762192837867, -11.72316153545004 -19.39161911612243, -11.014994289623903 -19.45993515863156 M-12.25922965284788 -19.3399052695533 C-11.918550074940661 -19.372770218706872, -11.577870497033445 -19.405635167860442, -11.014994289623903 -19.45993515863156 M-11.014994289623903 -19.45993515863156 C-10.520861140019184 -19.475781046967555, -10.026727990414464 -19.491626935303547, -9.765625000000005 -19.5 M-11.014994289623903 -19.45993515863156 C-10.60489003055688 -19.473086404000323, -10.194785771489858 -19.486237649369087, -9.765625000000005 -19.5 M-9.765625000000005 -19.5 C-9.765625000000004 -19.5, -9.765625000000002 -19.5, -9.765625 -19.5 M-9.765625000000005 -19.5 C-9.765625000000004 -19.5, -9.765625000000002 -19.5, -9.765625 -19.5\" stroke=\"#ccc\" stroke-width=\"1.3\" fill=\"none\" stroke-dasharray=\"0 0\" style=\"\"></path></g><g class=\"label\" style=\"\" transform=\"translate(-16.890625, -12)\"><rect></rect><foreignObject width=\"33.78125\" 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>User</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-flowchart-App-1\" data-look=\"classic\" transform=\"translate(149.484375, 198.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-74.9140625\" y=\"-39\" width=\"149.828125\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-44.9140625, -24)\"><rect></rect><foreignObject width=\"89.828125\" height=\"48\"><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><b>Chat app</b><br>source client</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-flowchart-Orig-2\" data-look=\"classic\" transform=\"translate(149.484375, 339.5)\"><rect class=\"basic label-container\" style=\"\" x=\"-106.484375\" y=\"-27\" width=\"212.96875\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-76.484375, -12)\"><rect></rect><foreignObject width=\"152.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>Original access token</p></span></div></foreignObject></g></g></g></g></g></g></g><defs><filter id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><defs><filter id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><linearGradient id=\"diagram-aed427d220dc935e8fc8bc601f8bf547bde01c4cfb3f670692578d516e24a28b-gradient\" gradientUnits=\"objectBoundingBox\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#cccccc\" stop-opacity=\"1\"></stop><stop offset=\"100%\" stop-color=\"hsl(180, 0%, 18.3529411765%)\" stop-opacity=\"1\"></stop></linearGradient></svg>"},"children":["flowchart LR\n  subgraph left [ ]\n    direction TB\n    User([\"User\"])\n    App[\"<b>Chat app</b><br/>source client\"]\n    Orig[\"Original access token\"]\n    User --> App\n    App -.-> Orig\n  end\n\n  subgraph te [Token exchange]\n    direction TB\n    MCP[\"<b>MCP server</b><br/>exchanging client (proxy)\"]\n    Mosaic[\"Mosaic<br/>Authorization policy\"]\n    MCP -->|exchange| Mosaic\n  end\n\n  subgraph right [ ]\n    direction TB\n    API[\"<b>API</b>\"]\n    New[\"Exchanged access token\"]\n    API -.-> New\n  end\n\n  App -->|original token| MCP\n  MCP -->|exchanged token| API\n"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The token exchange flow differs from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/delegate_access"},"children":["delegated access"]}," flow, where one user consents so another user can act on their behalf. Token exchange delegates between ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["clients"]}," while the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["user subject stays the same"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-it-works","__idx":1},"children":["How it works"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Token exchange always involves two clients in the same Mosaic application:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Source client"]},": the client the presented token was issued to. It controls which other clients may exchange those tokens."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Exchanging client"]},": the client that authenticates to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/oidc/token"]},", presents the existing token, and receives the new token. It must be allowed to initiate token exchange."]}]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"sequenceDiagram\n  participant U as User\n  participant S as Chat app\n  participant E as MCP server\n  participant M as Mosaic\n  participant R as API\n\n  U -->> S: Log in\n  Note right of S: Step 2\n  S ->> M: Authorization code flow\n  M -->> S: User access token\n  S -->> E: Present user access token\n  Note right of E: Step 3\n  E ->> M: POST /oidc/token<br/>grant_type=token-exchange\n  M -->> E: New user access token\n  E -->> R: Call API with exchanged token\n","diagramHtml":"<svg id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 1178px;\" viewBox=\"-50 -10 1178 597.5\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><style>\n    #diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 foreignObject {\n      overflow: visible;\n    }\n  </style><g><rect x=\"928\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"R\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"1003\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"1003\" dy=\"0\">API</tspan></text></g><g><rect x=\"728\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"M\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"803\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"803\" dy=\"0\">Mosaic</tspan></text></g><g><rect x=\"459\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"E\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"534\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"534\" dy=\"0\">MCP server</tspan></text></g><g><rect x=\"200\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"S\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"275\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"275\" dy=\"0\">Chat app</tspan></text></g><g><rect x=\"0\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"U\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">User</tspan></text></g><g><line id=\"actor4\" x1=\"1003\" y1=\"65\" x2=\"1003\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"R\" data-et=\"life-line\" data-id=\"R\"></line><g id=\"root-4\" data-et=\"participant\" data-type=\"participant\" data-id=\"R\"><rect x=\"928\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"R\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"1003\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"1003\" dy=\"0\">API</tspan></text></g></g><g><line id=\"actor3\" x1=\"803\" y1=\"65\" x2=\"803\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"M\" data-et=\"life-line\" data-id=\"M\"></line><g id=\"root-3\" data-et=\"participant\" data-type=\"participant\" data-id=\"M\"><rect x=\"728\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"M\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"803\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"803\" dy=\"0\">Mosaic</tspan></text></g></g><g><line id=\"actor2\" x1=\"534\" y1=\"65\" x2=\"534\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"E\" data-et=\"life-line\" data-id=\"E\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"E\"><rect x=\"459\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"E\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"534\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"534\" dy=\"0\">MCP server</tspan></text></g></g><g><line id=\"actor1\" x1=\"275\" y1=\"65\" x2=\"275\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"S\" data-et=\"life-line\" data-id=\"S\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"S\"><rect x=\"200\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"S\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"275\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"275\" dy=\"0\">Chat app</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"U\" data-et=\"life-line\" data-id=\"U\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"U\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"U\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">User</tspan></text></g></g><style>#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .error-icon{fill:#552222;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .error-text{fill:#552222;stroke:#552222;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .edge-thickness-normal{stroke-width:1px;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .edge-thickness-thick{stroke-width:3.5px;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .edge-pattern-solid{stroke-dasharray:0;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .marker{fill:#333333;stroke:#333333;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .marker.cross{stroke:#333333;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 p{margin:0;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .actor{stroke:#9370DB;fill:#ECECFF;stroke-width:1;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 rect.note[data-look=\"neo\"]{stroke:#aaaa33;fill:#fff5ad;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 text.actor&gt;tspan{fill:black;stroke:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .actor-line{stroke:#9370DB;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [id$=\"-arrowhead\"] path{fill:#333;stroke:#333;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .sequenceNumber{fill:white;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [id$=\"-sequencenumber\"]{fill:#333;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [id$=\"-crosshead\"] path{fill:#333;stroke:#333;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .messageText{fill:#333;stroke:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .labelBox{stroke:#9370DB;fill:#ECECFF;filter:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .labelText,#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .labelText&gt;tspan{fill:black;stroke:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .loopText,#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .loopText&gt;tspan{fill:black;stroke:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .sectionTitle,#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .sectionTitle&gt;tspan{fill:black;stroke:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#9370DB;fill:#9370DB;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .note{stroke:#aaaa33;fill:#fff5ad;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .noteText,#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .noteText&gt;tspan{fill:black;stroke:none;font-weight:normal;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .activation0{fill:#f4f4f4;stroke:#666;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .activation1{fill:#f4f4f4;stroke:#666;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .activation2{fill:#f4f4f4;stroke:#666;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .actorPopupMenu{position:absolute;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .actor-man circle,#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 line{fill:#ECECFF;stroke-width:2px;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 g rect.rect{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));stroke:#9370DB;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 .node .neo-node{stroke:#9370DB;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].node rect,#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].cluster rect,#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-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\"></path></symbol></defs><defs><symbol id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-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\"></path></symbol></defs><defs><symbol id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-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\"></path></symbol></defs><defs><marker id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-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\"></path></marker></defs><defs><marker id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-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;\"></path></marker></defs><defs><marker id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-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\"></path></marker></defs><defs><marker id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><g data-et=\"note\" data-id=\"i1\"><rect x=\"300\" y=\"121\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"150\" height=\"38\" class=\"note\"></rect><text x=\"375\" y=\"126\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"375\">Step 2</tspan></text></g><g data-et=\"note\" data-id=\"i5\"><rect x=\"559\" y=\"301\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"150\" height=\"38\" class=\"note\"></rect><text x=\"634\" y=\"306\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"634\">Step 3</tspan></text></g><text x=\"174\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Log in</text><line x1=\"76\" y1=\"111\" x2=\"271\" y2=\"111\" class=\"messageLine1\" data-et=\"message\" data-id=\"i0\" data-from=\"U\" data-to=\"S\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"538\" y=\"174\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Authorization code flow</text><line x1=\"276\" y1=\"203\" x2=\"799\" y2=\"203\" class=\"messageLine0\" data-et=\"message\" data-id=\"i2\" data-from=\"S\" data-to=\"M\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-arrowhead)\" style=\"fill: none;\"></line><text x=\"541\" y=\"218\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">User access token</text><line x1=\"802\" y1=\"247\" x2=\"279\" y2=\"247\" class=\"messageLine1\" data-et=\"message\" data-id=\"i3\" data-from=\"M\" data-to=\"S\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"403\" y=\"262\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Present user access token</text><line x1=\"276\" y1=\"291\" x2=\"530\" y2=\"291\" class=\"messageLine1\" data-et=\"message\" data-id=\"i4\" data-from=\"S\" data-to=\"E\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"667\" y=\"354\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">POST /oidc/token</text><text x=\"667\" y=\"371\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">grant_type=token-exchange</text><line x1=\"535\" y1=\"401.5\" x2=\"799\" y2=\"401.5\" class=\"messageLine0\" data-et=\"message\" data-id=\"i6\" data-from=\"E\" data-to=\"M\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-arrowhead)\" style=\"fill: none;\"></line><text x=\"670\" y=\"417\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">New user access token</text><line x1=\"802\" y1=\"445.5\" x2=\"538\" y2=\"445.5\" class=\"messageLine1\" data-et=\"message\" data-id=\"i7\" data-from=\"M\" data-to=\"E\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"767\" y=\"461\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Call API with exchanged token</text><line x1=\"535\" y1=\"491.5\" x2=\"999\" y2=\"491.5\" class=\"messageLine1\" data-et=\"message\" data-id=\"i8\" data-from=\"E\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-2954400eb0841a8f13cddc004c72346d538a3a186159649333c6e12085ee7ee2-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line></svg>","diagramHtmlDark":"<svg id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 1178px;\" viewBox=\"-50 -10 1178 597.5\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><style>\n    #diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd foreignObject {\n      overflow: visible;\n    }\n  </style><g><rect x=\"928\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"R\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"1003\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"1003\" dy=\"0\">API</tspan></text></g><g><rect x=\"728\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"M\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"803\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"803\" dy=\"0\">Mosaic</tspan></text></g><g><rect x=\"459\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"E\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"534\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"534\" dy=\"0\">MCP server</tspan></text></g><g><rect x=\"200\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"S\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"275\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"275\" dy=\"0\">Chat app</tspan></text></g><g><rect x=\"0\" y=\"511.5\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"U\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"544\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">User</tspan></text></g><g><line id=\"actor4\" x1=\"1003\" y1=\"65\" x2=\"1003\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"R\" data-et=\"life-line\" data-id=\"R\"></line><g id=\"root-4\" data-et=\"participant\" data-type=\"participant\" data-id=\"R\"><rect x=\"928\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"R\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"1003\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"1003\" dy=\"0\">API</tspan></text></g></g><g><line id=\"actor3\" x1=\"803\" y1=\"65\" x2=\"803\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"M\" data-et=\"life-line\" data-id=\"M\"></line><g id=\"root-3\" data-et=\"participant\" data-type=\"participant\" data-id=\"M\"><rect x=\"728\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"M\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"803\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"803\" dy=\"0\">Mosaic</tspan></text></g></g><g><line id=\"actor2\" x1=\"534\" y1=\"65\" x2=\"534\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"E\" data-et=\"life-line\" data-id=\"E\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"E\"><rect x=\"459\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"E\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"534\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"534\" dy=\"0\">MCP server</tspan></text></g></g><g><line id=\"actor1\" x1=\"275\" y1=\"65\" x2=\"275\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"S\" data-et=\"life-line\" data-id=\"S\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"S\"><rect x=\"200\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"S\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"275\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"275\" dy=\"0\">Chat app</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"511.5\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"U\" data-et=\"life-line\" data-id=\"U\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"U\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"U\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">User</tspan></text></g></g><style>#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .error-icon{fill:#a44141;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .error-text{fill:#ddd;stroke:#ddd;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .edge-thickness-normal{stroke-width:1px;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .edge-thickness-thick{stroke-width:3.5px;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .edge-pattern-solid{stroke-dasharray:0;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .edge-pattern-dashed{stroke-dasharray:3;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .edge-pattern-dotted{stroke-dasharray:2;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .marker{fill:lightgrey;stroke:lightgrey;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .marker.cross{stroke:lightgrey;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd p{margin:0;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .actor{stroke:#ccc;fill:#1f2020;stroke-width:1;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd rect.note[data-look=\"neo\"]{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd text.actor&gt;tspan{fill:lightgrey;stroke:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .actor-line{stroke:#ccc;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:lightgrey;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:lightgrey;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [id$=\"-arrowhead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .sequenceNumber{fill:black;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [id$=\"-sequencenumber\"]{fill:lightgrey;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [id$=\"-crosshead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .messageText{fill:lightgrey;stroke:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .labelBox{stroke:#ccc;fill:#1f2020;filter:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .labelText,#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .labelText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .loopText,#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .loopText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .sectionTitle,#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .sectionTitle&gt;tspan{fill:lightgrey;stroke:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#ccc;fill:#ccc;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .note{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .noteText,#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .noteText&gt;tspan{fill:rgb(183.8476190475, 181.5523809523, 181.5523809523);stroke:none;font-weight:normal;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .activation0{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .activation1{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .activation2{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .actorPopupMenu{position:absolute;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .actorPopupMenuPanel{position:absolute;fill:#1f2020;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .actor-man circle,#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd line{fill:#1f2020;stroke-width:2px;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd g rect.rect{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));stroke:#ccc;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd .node .neo-node{stroke:#ccc;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].node rect,#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].cluster rect,#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].node polygon{stroke:url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].node path{stroke:url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-gradient);stroke-width:1px;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].node circle{stroke:url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-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\"></path></symbol></defs><defs><symbol id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-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\"></path></symbol></defs><defs><symbol id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-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\"></path></symbol></defs><defs><marker id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-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\"></path></marker></defs><defs><marker id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-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;\"></path></marker></defs><defs><marker id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-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\"></path></marker></defs><defs><marker id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><g data-et=\"note\" data-id=\"i1\"><rect x=\"300\" y=\"121\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"150\" height=\"38\" class=\"note\"></rect><text x=\"375\" y=\"126\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"375\">Step 2</tspan></text></g><g data-et=\"note\" data-id=\"i5\"><rect x=\"559\" y=\"301\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"150\" height=\"38\" class=\"note\"></rect><text x=\"634\" y=\"306\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"634\">Step 3</tspan></text></g><text x=\"174\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Log in</text><line x1=\"76\" y1=\"111\" x2=\"271\" y2=\"111\" class=\"messageLine1\" data-et=\"message\" data-id=\"i0\" data-from=\"U\" data-to=\"S\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"538\" y=\"174\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Authorization code flow</text><line x1=\"276\" y1=\"203\" x2=\"799\" y2=\"203\" class=\"messageLine0\" data-et=\"message\" data-id=\"i2\" data-from=\"S\" data-to=\"M\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-arrowhead)\" style=\"fill: none;\"></line><text x=\"541\" y=\"218\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">User access token</text><line x1=\"802\" y1=\"247\" x2=\"279\" y2=\"247\" class=\"messageLine1\" data-et=\"message\" data-id=\"i3\" data-from=\"M\" data-to=\"S\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"403\" y=\"262\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Present user access token</text><line x1=\"276\" y1=\"291\" x2=\"530\" y2=\"291\" class=\"messageLine1\" data-et=\"message\" data-id=\"i4\" data-from=\"S\" data-to=\"E\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"667\" y=\"354\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">POST /oidc/token</text><text x=\"667\" y=\"371\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">grant_type=token-exchange</text><line x1=\"535\" y1=\"401.5\" x2=\"799\" y2=\"401.5\" class=\"messageLine0\" data-et=\"message\" data-id=\"i6\" data-from=\"E\" data-to=\"M\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-arrowhead)\" style=\"fill: none;\"></line><text x=\"670\" y=\"417\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">New user access token</text><line x1=\"802\" y1=\"445.5\" x2=\"538\" y2=\"445.5\" class=\"messageLine1\" data-et=\"message\" data-id=\"i7\" data-from=\"M\" data-to=\"E\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"767\" y=\"461\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Call API with exchanged token</text><line x1=\"535\" y1=\"491.5\" x2=\"999\" y2=\"491.5\" class=\"messageLine1\" data-et=\"message\" data-id=\"i8\" data-from=\"E\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-27ff321d0655fdb5cbc310101a6bbc53ac4c6658ffe282ad6a271e7b1353f3dd-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line></svg>"},"children":["sequenceDiagram\n  participant U as User\n  participant S as Chat app\n  participant E as MCP server\n  participant M as Mosaic\n  participant R as API\n\n  U -->> S: Log in\n  Note right of S: Step 2\n  S ->> M: Authorization code flow\n  M -->> S: User access token\n  S -->> E: Present user access token\n  Note right of E: Step 3\n  E ->> M: POST /oidc/token<br/>grant_type=token-exchange\n  M -->> E: New user access token\n  E -->> R: Call API with exchanged token\n"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The user authenticates with the chat app. The chat app obtains a user access token from Mosaic (",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#step-2-obtain-a-user-access-token"},"children":["Step 2"]},"). The original access token includes:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"sub\": \"user\",\n  \"client_id\": \"chat-app\",\n  \"scope\": \"read:mcp\"\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The chat app then presents that token to the MCP server."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The MCP server authenticates to Mosaic and exchanges the token for a new user access token targeted at the API (",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#step-3-exchange-the-token"},"children":["Step 3"]},"). When Mosaic accepts the token exchange request, it:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Authenticates the exchanging client using the client’s configured authentication method."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Checks that the exchanging client is allowed to perform the exchange flow."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Validates the presented access token and resolves the source client from that token (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_id"]},")."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Checks that the source client allows delegation for this exchanging client."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Checks that the exchanging client is allowed to request the target resource."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Grants the intersection of requested scopes and scopes allowed for the exchanging client. Scopes the client is not allowed to have are dropped rather than rejected. Mosaic never grants ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["openid"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["offline_access"]}," on an exchanged token, even when requested (meaning Mosaic never issues an ID token or refresh token for token-exchanging clients)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Recomputes authorization for the subject user and the target resource. Permissions and scopes that applied only to the previous resource are omitted."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Issues a new user access token whose ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_id"]}," is the exchanging client, and records that client in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["act"]}," claim. The exchanged access token includes:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"sub\": \"user\",\n  \"client_id\": \"mcp-server\",\n  \"scope\": \"read:resource\",\n  \"act\": {\n    \"sub\": \"mcp-server\",\n    \"act\": {\n      \"sub\": \"chat-app\"\n    }\n  }\n}\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The MCP server calls the API with the exchanged token."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Delegation is evaluated at each exchange. If the chat app allows the MCP server and the MCP server allows another client, that client can exchange a token currently issued to the MCP server even if the chat app does not list it. The chat app does not need to allow that client unless it presents a token whose current ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_id"]}," is the chat app."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1-configure-clients","__idx":2},"children":["Step 1: Configure clients"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge-wrapper"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge"},"children":["Admin Portal"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you don't already have a Mosaic application, create one first (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/create_new_application"},"children":["Create Mosaic applications"]},") and add clients."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure both sides of the trust relationship in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Applications"]}," > your app > ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Clients"]},". Edit each OIDC authentication client, open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Advanced"]}," > ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Token exchange"]},"."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Who configures it"},"children":["Who configures it"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Initiate token exchange"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Exchanging client"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Allows this client to call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/oidc/token"]}," with the token exchange grant. Disabled by default."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Delegate tokens issued by this client"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Source client"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Controls which clients may exchange user access tokens issued to this client. Disabled by default (none)."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Delegate tokens issued by this client"]}," is enabled, choose who may exchange:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["All"]},": every client in the same application, including dynamically registered clients"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Specific clients"]},": manually registered clients you select, and optionally Client Authorities (so clients registered through those authorities can exchange)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the complete client field list, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/configure_oidc_client#step-4---advanced-settings"},"children":["Configure OIDC clients"]},". Note that any changes to token exchange settings (including enabling or disabling exchange, or changing which clients may exchange) take up to 5 minutes to propagate."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Also confirm:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Both clients belong to the same application."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The exchanging client includes the target resource under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Resources"]},", if you will pass ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["resource"]}," in the request. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/manage_resources"},"children":["Manage resources"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The source client issues JWT access tokens signed with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RS256"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PS256"]},". Mosaic rejects opaque source tokens."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2-obtain-a-user-access-token","__idx":3},"children":["Step 2: Obtain a user access token"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge-wrapper"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge"},"children":["client"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Token exchange starts from a user access token already issued to the source client. You can obtain that token from any Mosaic API that returns a user access token—for example, an ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/auth_oidc"},"children":["OIDC authorization code flow"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After the user authenticates, the source client exchanges the authorization code for tokens:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"curl -i -X POST \\\n  https://api.transmitsecurity.io/oidc/token \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d client_id=CHAT_APP_CLIENT_ID \\\n  -d client_secret=CHAT_APP_CLIENT_SECRET \\\n  -d code=CODE \\\n  -d grant_type=authorization_code \\\n  -d redirect_uri=REDIRECT_URI\n","lang":"shell"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["access_token"]}," from the response as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subject_token"]}," in Step 3. Pass it from the source client to the exchanging client over your backend channel."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3-exchange-the-token","__idx":4},"children":["Step 3: Exchange the token"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge-wrapper"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge"},"children":["client"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["From the exchanging client's backend, send a POST request to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/user/oidc.openapi/other/oidctoken"},"children":["Token"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/oidc/token"]},") endpoint with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grant_type"]}," set to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["urn:ietf:params:oauth:grant-type:token-exchange"]}," and the user access token from Step 2. Authenticate as the exchanging client using its configured method (client secret, private key JWT, or mTLS)."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grant_type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Must be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["urn:ietf:params:oauth:grant-type:token-exchange"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subject_token"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The user access token to exchange. It must have been issued to a different client. An access token issued to the exchanging client itself, client-credentials tokens, ID tokens, and tokens with no user subject are rejected."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subject_token_type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["(Optional) Type of the presented token. Defaults to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["urn:ietf:params:oauth:token-type:access_token"]},". Only access tokens are supported."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["resource"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["(Optional) Target resource URI. This is what selects the audience of the new token. The URI must be configured as a resource and allowed for the exchanging client. Mosaic does not use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["audience"]}," to select the target."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["(Optional) Space-delimited scopes to request. Mosaic grants the intersection of this list and the scopes allowed for the exchanging client. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["openid"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["offline_access"]}," are never granted."]}]}]}]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"shell","header":{"controls":{"copy":{}}},"source":"curl -i -X POST \\\n  https://api.transmitsecurity.io/oidc/token \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d grant_type=urn:ietf:params:oauth:grant-type:token-exchange \\\n  -d client_id=MCP_SERVER_CLIENT_ID \\\n  -d client_secret=MCP_SERVER_CLIENT_SECRET \\\n  -d subject_token=USER_ACCESS_TOKEN \\\n  -d subject_token_type=urn:ietf:params:oauth:token-type:access_token \\\n  -d resource=https://api.example.com \\\n  -d scope=read:resource\n","lang":"shell"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A successful response returns a new user access token. Mosaic does not return an ID token. If the granted scope differs from the requested scope, the response includes the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope"]}," that was actually granted."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"issued_token_type\": \"urn:ietf:params:oauth:token-type:access_token\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Notes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Token exchange never returns a refresh token. If the request includes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["offline_access"]},", Mosaic drops it from the granted scope and still returns an access token."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the exchanging client is not allowed to use this grant, Mosaic returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["unauthorized_client"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the presented token is invalid, the source client does not allow this exchanging client, or the subject cannot be resolved in the exchanging client's application, Mosaic returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_grant"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_request"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the exchanging client is not allowed to request the target resource, Mosaic returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_target"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A client cannot exchange an access token issued to itself. Mosaic rejects that request with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_grant"]},". Cross-application exchange is rejected."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Specifying ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["actor_token"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["actor_token_type"]}," in the request isn't supported. A request that includes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["actor_token"]}," is rejected with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_request"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A subject token that expires during the exchange is rejected with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_grant"]}," and the description ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subject token has expired"]},"."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"resulting-token","__idx":5},"children":["Resulting token"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The exchanged token is a new authorization context, not a copy of the presented token."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Claim"},"children":["Claim"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Preserved from the presented token (the user)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The exchanging client."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aud"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The target resource when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["resource"]}," is requested."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scope"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Recomputed for the exchanging client and target resource. Never includes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["openid"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["offline_access"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["act"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Nested actor chain. The outermost ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sub"]}," is the current exchanging client. The innermost entry is always the source client—the client the original token was issued to, which never performed an exchange itself. Intermediate entries are previous exchanging clients. This innermost source-client entry is a Mosaic extension to RFC 8693."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example after the MCP server exchanges the chat app token:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"sub\": \"user\",\n  \"client_id\": \"MCP_SERVER_CLIENT_ID\",\n  \"aud\": \"https://api.example.com\",\n  \"scope\": \"read:resource\",\n  \"act\": {\n    \"sub\": \"MCP_SERVER_CLIENT_ID\",\n    \"act\": {\n      \"sub\": \"CHAT_APP_CLIENT_ID\"\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This records that:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the user remains the subject"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the MCP server is the current actor"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the chat app is the client the original token was issued to"]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Important"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An exchanged token is not an OIDC identity token. Mosaic does not return an ID token or a refresh token from the exchange, does not grant ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["openid"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["offline_access"]},", and does not return user profile claims from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/userinfo"},"children":["UserInfo"]}," for an exchanged token. Validate the access token as described in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/validate_tokens"},"children":["Validate tokens"]},", or call ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/token_introspection"},"children":["Introspection"]}," when you need a server-side activity check."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"limitations","__idx":6},"children":["Limitations"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following RFC 8693 scenarios are not supported:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Exchanging SAML assertions, ID tokens, or JWT assertions from external identity providers"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Issuing token types other than OAuth 2.0 access tokens (for example, exchanging an access token for an ID token)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Delegating across applications or exchanging a token minted for Mosaic management APIs (Admin Portal, tenants, clients, export/import)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Passing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["actor_token"]}," (rejected with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_request"]},")"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["SAML clients cannot participate; they have no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/oidc/token"]}," endpoint."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["act"]}," chain is limited to 10 levels, so at most 9 consecutive exchanges. A subject token at the maximum depth is rejected with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_request"]}," and the description ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subject token actor chain is at the maximum depth of 10"]},"."]},{"$$mdtype":"Tag","name":"style","attributes":{},"children":["\ntable th:first-of-type {\n    width: 25%;\n}\n"]}]},"headings":[{"value":"Token exchange","id":"token-exchange","depth":1},{"value":"How it works","id":"how-it-works","depth":2},{"value":"Step 1: Configure clients","id":"step-1-configure-clients","depth":2},{"value":"Step 2: Obtain a user access token","id":"step-2-obtain-a-user-access-token","depth":2},{"value":"Step 3: Exchange the token","id":"step-3-exchange-the-token","depth":2},{"value":"Resulting token","id":"resulting-token","depth":2},{"value":"Limitations","id":"limitations","depth":2}],"frontmatter":{"title":"Token exchange","markdown":{"toc":{"depth":2}},"seo":{"title":"Token exchange"}},"lastModified":"2026-10-21T11:53:46.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/user/token_exchange","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}