anyray-connect 0.11.41 → 0.11.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -51
- package/dist/assets/vscodeExtensionAsset.js +12 -0
- package/dist/assets/vscodeExtensionAsset.js.map +1 -0
- package/dist/cli.js +428 -268
- package/dist/cli.js.map +1 -1
- package/dist/commands/acpAgent.js +114 -0
- package/dist/commands/acpAgent.js.map +1 -0
- package/dist/commands/desktop.js +298 -100
- package/dist/commands/desktop.js.map +1 -1
- package/dist/commands/desktopHelper.js +340 -0
- package/dist/commands/desktopHelper.js.map +1 -0
- package/dist/commands/doctor.js +149 -15
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/managed.js +27 -39
- package/dist/commands/managed.js.map +1 -1
- package/dist/commands/mcpServer.js +1 -101
- package/dist/commands/mcpServer.js.map +1 -1
- package/dist/commands/printKey.js +27 -11
- package/dist/commands/printKey.js.map +1 -1
- package/dist/commands/retrieval.js +145 -0
- package/dist/commands/retrieval.js.map +1 -0
- package/dist/target.js +13 -1
- package/dist/target.js.map +1 -1
- package/dist/tools/acpAgents.js +161 -0
- package/dist/tools/acpAgents.js.map +1 -0
- package/dist/tools/claudeCode.js +27 -6
- package/dist/tools/claudeCode.js.map +1 -1
- package/dist/tools/claudeCodeEnv.js +5 -4
- package/dist/tools/claudeCodeEnv.js.map +1 -1
- package/dist/tools/claudeDesktop.js +378 -0
- package/dist/tools/claudeDesktop.js.map +1 -0
- package/dist/tools/claudeDesktopNative.js +793 -0
- package/dist/tools/claudeDesktopNative.js.map +1 -0
- package/dist/tools/claudeDesktopWindows.js +1296 -0
- package/dist/tools/claudeDesktopWindows.js.map +1 -0
- package/dist/tools/codex.js +47 -9
- package/dist/tools/codex.js.map +1 -1
- package/dist/tools/copilotChat.js +536 -366
- package/dist/tools/copilotChat.js.map +1 -1
- package/dist/tools/cursor.js +452 -120
- package/dist/tools/cursor.js.map +1 -1
- package/dist/tools/devinDesktop.js +315 -0
- package/dist/tools/devinDesktop.js.map +1 -0
- package/dist/tools/index.js +4 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/jetbrains.js +230 -0
- package/dist/tools/jetbrains.js.map +1 -0
- package/dist/tools/jetbrainsCapability.js +460 -0
- package/dist/tools/jetbrainsCapability.js.map +1 -0
- package/dist/tools/manual.js +5 -101
- package/dist/tools/manual.js.map +1 -1
- package/dist/tools/opencode.js +116 -36
- package/dist/tools/opencode.js.map +1 -1
- package/dist/tools/shellEnv.js +114 -6
- package/dist/tools/shellEnv.js.map +1 -1
- package/dist/types.js +3 -3
- package/dist/types.js.map +1 -1
- package/dist/util/atomicFile.js +48 -0
- package/dist/util/atomicFile.js.map +1 -0
- package/dist/util/devRefresh.js +50 -17
- package/dist/util/devRefresh.js.map +1 -1
- package/dist/util/hookCache.js +3 -2
- package/dist/util/hookCache.js.map +1 -1
- package/dist/util/jsonFile.js +367 -5
- package/dist/util/jsonFile.js.map +1 -1
- package/dist/util/retrieval.js +181 -0
- package/dist/util/retrieval.js.map +1 -0
- package/dist/util/seatState.js +5 -5
- package/dist/util/secureTextFile.js +30 -0
- package/dist/util/secureTextFile.js.map +1 -0
- package/dist/util/ssoGateState.js +3 -2
- package/dist/util/ssoGateState.js.map +1 -1
- package/dist/util/verify.js +21 -10
- package/dist/util/verify.js.map +1 -1
- package/dist/util/vscodeExtension.js +361 -0
- package/dist/util/vscodeExtension.js.map +1 -0
- package/dist/util/vscodeState.js +54 -68
- package/dist/util/vscodeState.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -1,94 +1,168 @@
|
|
|
1
1
|
# anyray-connect
|
|
2
2
|
|
|
3
3
|
The on-ramp. A small, dependency-free Node CLI that points a developer's local
|
|
4
|
-
coding tools at the **Anyray gateway**
|
|
5
|
-
|
|
6
|
-
content encryption, optimizer) — this only does capture/onboarding.
|
|
4
|
+
coding tools at the **Anyray gateway** through supported application config and
|
|
5
|
+
the developer's personal gateway key. The gateway stays the brain (routing,
|
|
6
|
+
spend store, content encryption, optimizer) — this only does capture/onboarding.
|
|
7
7
|
|
|
8
8
|
> The Anyray gateway you target may itself front an existing gateway (LiteLLM, OpenRouter, Portkey, homegrown) via the `anyray-upstream` provider — that's configured server-side on the gateway, with no client-side difference to `connect`.
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
|
-
npx anyray-connect --
|
|
11
|
+
npx anyray-connect --enroll https://app.anyray.ai/enroll/enl_…
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
An `npx` run first copies its published runtime into a versioned directory under
|
|
15
15
|
`~/.anyray/bin`. Hooks, MCP registrations, and login services point at that
|
|
16
16
|
durable copy instead of npm's disposable `_npx` cache.
|
|
17
17
|
|
|
18
|
-
## Personal gateway keys (
|
|
18
|
+
## Personal gateway keys (enrollment)
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
Every gateway `/v1` request requires a **personal gateway key** (`ark_...`). Enroll
|
|
21
|
+
before a real apply:
|
|
22
22
|
|
|
23
|
-
1. An org admin
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
directly, skipping the invite step.)
|
|
27
|
-
2. The dev redeems it while connecting:
|
|
23
|
+
1. An org admin uses the console's **Users** page to create a passwordless
|
|
24
|
+
enrollment link, or shares the org's SSO enrollment command.
|
|
25
|
+
2. The developer enrolls while connecting:
|
|
28
26
|
|
|
29
27
|
```bash
|
|
30
|
-
npx anyray-connect --
|
|
28
|
+
npx anyray-connect --enroll https://app.anyray.ai/enroll/enl_…
|
|
29
|
+
# Enterprise SSO:
|
|
30
|
+
npx anyray-connect --sso https://app.anyray.ai/sso/tnt_…
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
Enrollment mints the short-lived personal key and binds its verified user/team
|
|
34
|
+
to spend attribution. The key lands in owner-only local state and the supported
|
|
35
|
+
tool credential stores; it is never printed in full. Connect reuses a cached,
|
|
36
|
+
unexpired key on later runs. A dry run never consumes an enrollment link or
|
|
37
|
+
writes configuration; without an existing key it reports the selected installs
|
|
38
|
+
that would be configured after enrollment.
|
|
39
39
|
|
|
40
|
-
Already have a key? Set `ANYRAY_CLIENT_KEY` in the environment
|
|
41
|
-
|
|
40
|
+
Already have a key? Set `ANYRAY_CLIENT_KEY` in the environment. It must be a
|
|
41
|
+
minted `ark_...` key; the old `anyray-placeholder` value cannot authenticate.
|
|
42
42
|
|
|
43
43
|
How the key is sent depends on the auth mode:
|
|
44
44
|
|
|
45
|
-
- **
|
|
46
|
-
the
|
|
45
|
+
- **Org API mode**: the personal key is the `Authorization` bearer; the gateway
|
|
46
|
+
selects the server-held provider credential after authenticating the developer.
|
|
47
47
|
- **`--subscription`**: the tool's seat OAuth token keeps the `Authorization`
|
|
48
48
|
header, and the personal key rides the `x-anyray-api-key` header instead so
|
|
49
49
|
the gateway can still identify the dev.
|
|
50
50
|
|
|
51
|
-
##
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
| **
|
|
61
|
-
| **
|
|
62
|
-
| **Cursor
|
|
51
|
+
## Automatic coverage matrix
|
|
52
|
+
|
|
53
|
+
“Automatic” has two different meanings here: **route** means the request takes a supported path
|
|
54
|
+
through the gateway and can be optimized; **visibility** means content-free usage arrives through
|
|
55
|
+
the request path or an official vendor reporting API. A visibility connector does not pretend that
|
|
56
|
+
closed first-party traffic was routed.
|
|
57
|
+
|
|
58
|
+
| Tool | Route setup | Spend visibility | Boundary |
|
|
59
|
+
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
60
|
+
| **Claude Code** | **Automatic** — writes the supported `env` block in `~/.claude/settings.json`. | **Automatic** — API-key and Anthropic seat traffic is attributed on the gateway path. | Seat OAuth passes through unchanged; provider routing applies only to API-key traffic. |
|
|
61
|
+
| **Codex app / CLI / IDE** | **Automatic** — all three share `~/.codex/config.toml`; Connect makes the `anyray` provider the default without replacing foreign config. | **Automatic** — API-key and ChatGPT-seat traffic is attributed on the gateway path. | The genuine Codex seat envelope and OAuth token are preserved. If an app/IDE picker omits custom-provider models, pin `ANYRAY_CODEX_MODEL` and rerun Connect. |
|
|
62
|
+
| **Cursor** | **Automatic only when Cursor is closed and a system `sqlite3` executable is available**; Connect updates the exact application-owned OpenAI custom-endpoint/BYOK cells with a reversible value backup. | **Automatic** — routed BYOK requests are recorded by the gateway; native Cursor Teams usage can be imported by the official Admin API connector. | Restart Cursor afterward. A running app, missing `sqlite3`, or unfamiliar store shape falls back to the supported manual UI. The route also requires a publicly reachable TLS gateway and an eligible paid plan. |
|
|
63
|
+
| **OpenCode** | **Automatic** for direct API providers and its Copilot provider. | **Automatic** for those routed lanes. | Restart OpenCode afterward. Built-in ChatGPT OAuth exposes no endpoint override; use Codex for that seat. |
|
|
64
|
+
| **VS Code Copilot Chat** | **Automatic** on VS Code 1.121+ — Connect installs and configures an explicit Anyray chat provider through VS Code's supported language-model-provider API. | **Automatic** for gateway API-key mode. Copilot-seat/native automatic reporting requires Copilot Business or Enterprise plus the official GitHub connector; the current Anyray connector does not cover Individual plans. | The developer selects an “Anyray · …” chat model. Native Copilot Chat and inline completions remain GitHub traffic. VS Code profiles scope extensions: Connect installs the Default Profile; use the official **Apply Extension to all Profiles** action for additional profiles. |
|
|
65
|
+
| **JetBrains AI Assistant** | **Automatic** on IDE 2025.3.2+ with enabled JetBrains AI 253.30387.147+ — registers pinned Claude and Codex ACP launchers in `~/.jetbrains/acp.json`. | **Automatic** on those ACP carriers; native Copilot reporting requires Copilot Business or Enterprise plus the official GitHub connector. | Connect proves both versions from local JetBrains metadata before writing. Native JetBrains AI and Copilot traffic is untouched. A carrier may request its normal provider sign-in on first launch. |
|
|
66
|
+
| **Claude Desktop** | **Automatic** on Windows and on macOS for Claude Desktop 1.21459.0. Other macOS builds use the in-app flow. | **Automatic** for third-party API traffic. | Restart Claude after first setup. Later enrolled-key renewals need no restart. First-party subscription traffic stays direct; use Claude Code. Machine-level Windows policy takes priority. |
|
|
67
|
+
| **Devin Desktop** | **Automatic registry write only** for pinned Claude and Codex ACP agents; route activation is not automatic. | **Automatic** once requests use those carriers; the official enterprise consumption connector covers native Devin usage. | Devin requires its documented one-time vendor UI agent-enable action and an app restart. Native Devin traffic is not redirected. |
|
|
68
|
+
| **Shell / SDK env** | **Automatic** — writes a managed, idempotent shell-profile block. | **Automatic** on the gateway request path. | Subscription seats are not applicable to generic SDK traffic. |
|
|
63
69
|
|
|
64
70
|
The real provider key is never written here — it stays server-side in the
|
|
65
|
-
gateway (`ANYRAY_PROVIDER_KEY_*`), which swaps it in per request.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
+
gateway (`ANYRAY_PROVIDER_KEY_*`), which swaps it in per request. Connect itself
|
|
72
|
+
only writes routing and attribution configuration; it never reads or persists
|
|
73
|
+
prompt/response content. Routed requests are handled by the gateway under the
|
|
74
|
+
deployment's configured content mode.
|
|
75
|
+
|
|
76
|
+
These adapters use application-owned configuration only. Cursor's BYOK route is a supported UI
|
|
77
|
+
setting, but Cursor publishes no managed-config contract for it; Connect's best-effort automation
|
|
78
|
+
targets only its exact journaled settings cells. Existing malformed values fail closed. Missing rows
|
|
79
|
+
are seeded as first use, so a future release moving the keys cannot be distinguished automatically;
|
|
80
|
+
verify the override after Cursor upgrades and use the UI when it no longer appears.
|
|
81
|
+
Claude Desktop similarly publishes its third-party inference UI, not a managed contract for the
|
|
82
|
+
local config-library files. The macOS write is limited to the observed Claude Desktop `1.21459.0`
|
|
83
|
+
build, journaled, and fails closed to the supported UI on every other or unverifiable version.
|
|
84
|
+
On Windows, Connect writes Claude's per-user policy and installs a key-free credential helper.
|
|
85
|
+
Restart Claude after first setup. Later enrolled-key renewals need no policy update or restart.
|
|
86
|
+
Connect changes only settings and files it owns, and rolls back incomplete setup. Normal `npx`
|
|
87
|
+
setup saves the stable Connect copy the helper needs; direct temporary-only runs stop before making
|
|
88
|
+
changes.
|
|
89
|
+
The adapters do **not** install a certificate authority, change DNS/NAT, or modify the
|
|
90
|
+
operating-system proxy.
|
|
71
91
|
When a first-party client has no supported endpoint seam, Connect leaves it
|
|
72
92
|
untouched and names a config-native alternative.
|
|
73
93
|
|
|
94
|
+
JetBrains and Devin ACP carriers require Node.js with npm/npx on the endpoint. Connect resolves
|
|
95
|
+
the absolute `npx` launcher during setup and stores only that non-secret path in its durable ACP
|
|
96
|
+
launcher, so an IDE's reduced GUI `PATH` does not create a false-success install. JetBrains setup
|
|
97
|
+
also fails closed unless local `product-info.json`, the AI Assistant plugin descriptor, and the
|
|
98
|
+
enabled-plugin state prove IDE 2025.3.2+ with JetBrains AI 253.30387.147+. Custom IDE/plugin paths
|
|
99
|
+
that are not represented by those local metadata locations are left for the supported in-IDE ACP
|
|
100
|
+
flow. For JetBrains Remote Development, run Connect in the remote backend user's shell: that is
|
|
101
|
+
where the plugin and ACP process run, and configuring only the local frontend does not configure
|
|
102
|
+
the backend. JetBrains currently does not support ACP in WSL. A key supplied
|
|
103
|
+
through `ANYRAY_CLIENT_KEY` is usable by these durable helpers but cannot be refreshed on this
|
|
104
|
+
machine; rerun Connect with a replacement key when the administrator rotates or expires it.
|
|
105
|
+
|
|
106
|
+
## Desktop fleet credential helper
|
|
107
|
+
|
|
108
|
+
Claude Desktop and Codex fleet artifacts contain no static personal key. They require an
|
|
109
|
+
explicitly deployed local helper; artifact generation fails if `--helper-path` is missing.
|
|
110
|
+
|
|
111
|
+
First deploy the standalone binary to a stable absolute path, then install the helper on each
|
|
112
|
+
endpoint:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
sudo /usr/local/bin/anyray-connect desktop helper --write --platform posix \
|
|
116
|
+
--bin /usr/local/bin/anyray-connect
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```powershell
|
|
120
|
+
& "C:\Program Files\Anyray\anyray-connect.exe" desktop helper --write `
|
|
121
|
+
--platform windows --bin "C:\Program Files\Anyray\anyray-connect.exe"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The default destinations are `/usr/local/bin/anyray-credential-helper` and
|
|
125
|
+
`C:\Program Files\Anyray\anyray-credential-helper.cmd`. `--write` verifies the runtime and writes
|
|
126
|
+
atomically (mode `0755` on POSIX); `--print` emits only wrapper bytes for MDM packaging. The wrapper
|
|
127
|
+
never uses `PATH` and contains no key. Each signed-in user must already be enrolled.
|
|
128
|
+
|
|
129
|
+
Generate a policy only after choosing the matching helper path:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
anyray-connect desktop --mobileconfig claude.mobileconfig \
|
|
133
|
+
--gateway https://gw.example.com \
|
|
134
|
+
--helper-path /usr/local/bin/anyray-credential-helper
|
|
135
|
+
|
|
136
|
+
anyray-connect desktop --reg claude.reg \
|
|
137
|
+
--gateway https://gw.example.com \
|
|
138
|
+
--helper-path "C:\Program Files\Anyray\anyray-credential-helper.cmd"
|
|
139
|
+
|
|
140
|
+
anyray-connect desktop codex --mobileconfig codex.mobileconfig \
|
|
141
|
+
--gateway https://gw.example.com \
|
|
142
|
+
--helper-path /usr/local/bin/anyray-credential-helper
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Claude consumes the helper's `print-key --json` output. Codex's supported command-auth contract
|
|
146
|
+
expects a raw bearer token, so its generated config selects the wrapper's private raw-token mode;
|
|
147
|
+
on Windows it invokes the `.cmd` through the system `cmd.exe` instead of relying on shell lookup.
|
|
148
|
+
|
|
74
149
|
## Common flags
|
|
75
150
|
|
|
76
151
|
```
|
|
77
152
|
--gateway <url> Gateway origin (default: $ANYRAY_GATEWAY_URL or http://localhost:8787)
|
|
78
153
|
--user <id> Attribute spend to this user (default: git email, else OS user)
|
|
79
154
|
--team <id> Attribute spend to this team
|
|
80
|
-
--tools <ids> Subset: claude-code, codex, cursor, copilot
|
|
81
|
-
jetbrains, claude-desktop, windsurf, shell-env
|
|
82
|
-
--
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
Already have a key? Set $ANYRAY_CLIENT_KEY instead.
|
|
155
|
+
--tools <ids> Subset: claude-code, codex, cursor, copilot, opencode,
|
|
156
|
+
jetbrains, claude-desktop, windsurf (Devin Desktop), shell-env
|
|
157
|
+
--enroll <link> Passwordless enrollment link; mints the personal gateway key.
|
|
158
|
+
--sso <link> Enterprise SSO enrollment; mints the same kind of key after
|
|
159
|
+
the developer signs in with the configured identity provider.
|
|
86
160
|
--subscription Seat-billed (subscription) auth: pass the tool's own OAuth
|
|
87
161
|
token through the gateway instead of the org API key.
|
|
88
162
|
Honored directly by Claude Code (Anthropic seats) and Codex
|
|
89
|
-
(ChatGPT seats), plus supported Copilot
|
|
163
|
+
(ChatGPT seats), plus supported Copilot provider routes.
|
|
90
164
|
Unsupported first-party endpoints are left untouched. With a
|
|
91
|
-
personal gateway key (--
|
|
165
|
+
personal gateway key (--enroll / --sso / $ANYRAY_CLIENT_KEY), the key
|
|
92
166
|
rides x-anyray-api-key while the seat token stays the bearer.
|
|
93
167
|
--dry-run Show what would change without writing
|
|
94
168
|
--yes, -y Skip confirmation (scripted/fleet rollout)
|
|
@@ -114,8 +188,10 @@ line to the registry. Nothing in the CLI orchestrator changes.
|
|
|
114
188
|
## Develop
|
|
115
189
|
|
|
116
190
|
```bash
|
|
117
|
-
|
|
191
|
+
# From the monorepo root; Connect's build embeds the sibling VS Code extension.
|
|
192
|
+
corepack pnpm install
|
|
193
|
+
cd connect
|
|
118
194
|
npm run dev -- --dry-run # run from source
|
|
119
195
|
npm test # node --test
|
|
120
|
-
npm run build # tsc → dist/
|
|
196
|
+
npm run build # build/check bundled VSIX, then tsc → dist/
|
|
121
197
|
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated from the `vscode-extension/` package by
|
|
3
|
+
* `connect/scripts/package-vscode-extension.mjs`. The archive is embedded as
|
|
4
|
+
* source so both npm/npx runtimes and Bun's single-file executable carry the
|
|
5
|
+
* same installable extension without a Marketplace dependency.
|
|
6
|
+
*/
|
|
7
|
+
export const BUNDLED_VSCODE_EXTENSION_VERSION = "0.1.1";
|
|
8
|
+
export const BUNDLED_VSCODE_EXTENSION_SOURCE_SHA256 = "bc3d1964758b33bf4ee057403aa5ad35e55f32b604456eda311363ae2546c518";
|
|
9
|
+
export const BUNDLED_VSCODE_EXTENSION_DIST_SHA256 = "55806ad0c3421697458cf3e84f6d3ff3a60b1ac40950211d45b3e35db85e232f";
|
|
10
|
+
export const BUNDLED_VSCODE_EXTENSION_SHA256 = "e65704e9d318d06aa8ca6fd03d34ee9cfdab182f4b8cfc98581c8b982ee26768";
|
|
11
|
+
export const BUNDLED_VSCODE_EXTENSION_BASE64 = "UEsDBBQAAAgIAHxM8FzNxxJs/wIAAKkJAAAWAAAAZXh0ZW5zaW9uLnZzaXhtYW5pZmVzdL1W224bNxB9tr+CYIE+VUvLT4Wz2kBQ7ESoFKiQ68cAI3K0mpoiCQ5XlvL1we7qZuVW2UXedjkz53AuPGT+dr20YoWRybue7GZXUqDT3pAre7JK886f8m1xeZFPQD9CiWNwNEdO4mEXcp1d1UHrpXXck4uUwo1SrBe4BM6WpKNnP0+Z9ktlcIXWB4xqxetO66Our7rdbfiNeQFAxyBT6Vqc4vLiIh9jAgMJ6p+LfGjQJUobMQJXVlBiT6Lr/DOVYmh6EtwmwqazYu0NykNWV1k360oxqWaWeIFx5ymFamHfEQcLm4+wxKLfmMTcR/EwFQNvMFfH9jYAWUcKibyrs73hABp7MkRkjCuURd8YgetgSVMSW8gSEj7BRiy9QcvCx62h8xQhBDRi4ANZnwRXswP81jstoq/KxW5Pv0Pw/IaFn89JE1hhtwXpNP4iRL8ig1H0J8MsV0f7bRO4h5KL5zGcq2a1sQ8gYekjIRf94R9j0AtyKEYI0ZErc3Vkb/zfg7UYN3e2RmgKrXP1bLF2a1wnsW562oXuFzZND8f7GXkgrsBOU2XIZ3XO2a0rydWNBVthT37qZt3rZsjV2UjrhK4ejncY0Bl0mpD3wK8BrI/W/wL0FzmzB6roBVAjr8HSZzS7w/K6DB3MLJp+oDrEM9hvwJ2dLOoqIQ/a89qCpVjhCwCnGFekkbMRuUfOpr6K+gBaKxHfKFVSWlSzRn9aDfjwt1p65yMGn5WUzivMCed7TJwgJjS/mJfSh2r2azmnVQg+prNIFTFX9RS+greRoLNYf4sIZnkyUi/gb6t8Z2HlI5oxxEfjn9y3x/Y85IF3CV3KJpE0uXIPeRcRpSoun287VycKmo9Io2MscKcdajQc3H6c3mZpnXK1M28VOFfHd2o+dJzAWjjcDccr9xBLTD87yLJJO1enWPmxvLY+fWZM23033+J+E/DHMrF7p0gxgbToyUOeoX3IZP+yd1L0jYnIXOvU8378F6avurEt29ekR8X9Pmeu9pnm6uS9VXwBUEsDBBQAAAgIAHxM8Fzfow3fvAAAAGUBAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbH3QMW7DMAwF0D2nELjHdDsUQWE7Q9ob9AKEQjtKJUowGUO9feFkC+rO/O9/gN2xpugWnjVk6eGlacGx+HwOMvVws3F/gOOw675+CqurKYr2cDEr74jqL5xIm1xYaopjnhOZNnmesJD/ponxtW3f0GcxFtvb2gFD98Ej3aK5z2osj93mquBOj9w61QOVEoMnC1nwSgupn0MxwC2e5b+C9bxBrdqTNK6GJVLYNIuGmkjCyPonrimuFO9fG3a/UEsDBBQACAgIAFtM8FwAAAAAAAAAAAAAAAAWAAAAZXh0ZW5zaW9uL3BhY2thZ2UuanNvbnVUTW/bMAy951cQvgzYajlJi2LLaUXXYcXWoUP3cdg6QJFYm6sjCRKdJijy3wfJSuwO3ck23yP5+OXHCUBh5AqLBRTSbL3cluugrMbiKEKagmvl9nNmnCUG3FkP32/gfKBhUJ4ckzWJpjXgxrWkiCH71JLxQW5hZTW2AazPQPngpXOo4dw6ai1D6JaHYHs2N952dbNP+iKAvbsjRbKFVpq6kzWWiQrO2zVp9HB2fSl6cWv0IQubipmY9VbnaS05VsW+w97ULVsKDfqhGT23JYUmpA5cXX7tbR6dDcTWb4sFPE4AAAreukSqiRMJoOh8my2vGmYXFlVVEzfdUii7qvokH75UK2tsjChGrpo8qpyg6IdS4obRpGomALskBE1NBsOgIs9vAcXvmZjNZ2I6kJVkrK2nxP/Z888u9xmvpGrIIHxC6Q2ZOvrdJr+VpNRAUWkKXB1kiD+hb8fB8pGMHmJ3NMRQ0skltcQ0VtsZ9l1g1D+svw9OqhEIUITOOesZdR5Usu8O9UjFcYxkzcUaDY+qsuaGpefOvScTh6r3RVrzzY9VWcOelh2PRe2X6iru1Hkj+Tqv1ZAADhrTihlt/12bjD17QkXGd+l5e6in3/yRkmVHbay9MFYjYEjfYpXbHpdWqntZ42IdaJMXBSEboSyNLTU6NBqNIgxQlrZjeHLpIrnmcA+SVfNcPijLHjsadl01qO4jmYNKuS5Ww/oyBj4EKktaxTkChw2UZcTgVxG8quJr9VLEh+Dwq9i799oWzmM+y/+Ict7qTvGTk9C4fjcqeujm26g6VCbfx/xUxOs4egIO5zMTs+nJCO+RSEjwsXgj5nswi+p/MvPX+S8T2xDSWE7E/HgIlTKlUUfsVEzFcVI/2U3+AlBLBwin//2ZlwIAAJIFAABQSwMEFAAICAgA5UrwXAAAAAAAAAAAAAAAABUAAABleHRlbnNpb24vTElDRU5TRS50eHRdUUFu2zAQvPMVg5xSQEiLHHrojZFoi6hMGhQd10daoiMWMmmIdAP/vqDsJE1PBHd3ZnZmV1yjcZ310RJShtNlci9Dwn33BY/fHr+D+stkLoSs7XR0Mbrg4SIGO9n9BS+T8cn2BQ6TtQgHdIOZXmyBFGD8BSc7xeAR9sk47/wLDLpwupBwQBpcRAyH9GomC+N7mBhD50yyPfrQnY/WJ5Oy3sGNNuI+DRZ37Q1x92UW6a0ZifPIvbcWXl0awjlhsjFNrsscBZzvxnOfd3hrj+7obgoZPvuOJAWcoy3mPQscQ+8O+bWzrdN5P7o4FOhdpt6fky0Qc3EOsMg+voYJ0Y4j6cLJ2YjZ68d280xe/ZQDTbeIYq68DuH42YmL5HCevIuDnTF9QAyz4m/bpVzJ44cwjuE1W+uC7112FH8QogcLsw9/7OzlelYfkuuucc8HOH1c9daKgxlH7O0tMNvDeZh/7ExZPibjkzMjTmGa9f63+UCIrhlaudBbqhh4i7WSz7xiFe5oC97eFdhyXcuNxpYqRYXeQS5AxQ4/uagKsF9rxdoWUhG+WjecVQW4KJtNxcUSTxsNITUavuKaVdASWfBGxVmbyVZMlTUVmj7xhutdQRZci8y5kAoUa6o0LzcNVVhv1Fq2DFRUEFJwsVBcLNmKCf0ALiAk2DMTGm1NmyZLEbrRtVR5P5RyvVN8WWvUsqmYavHE0HD61LCrlNihbChfFajoii7ZjJK6Zorkset22NYsl7IeFaCl5lJkG6UUWtFSF9BS6XfolresAFW8zYEslFwVJMcpF3mEi4wT7MqSo8ani0g1/zcteydExWjDxbLN4GzxbfiB/AVQSwcIsoZ6jXkCAAAnBAAAUEsDBBQACAgIAHxM8FwAAAAAAAAAAAAAAAAbAAAAZXh0ZW5zaW9uL2Rpc3QvZXh0ZW5zaW9uLmpzxVxtd9s2sv6+v4LiydEhTmDGTtpsSy2t4zpumzaJs3lpt3W9NkxCEhoKUAHIjiPxv98zAAiClOS43b33fkhMAUNgMBjMDB4MGC8VjZSWrNDx6JrI6CXNT69+p4VOC0mJpqbweVNW0gnj9LUUCyr1rak79i9MqT694U3lM6oKyRZaSEP2cQfZKzKnylB8CCleS6GFvl3Q0wl+4ysWTWk6IypoxLz/luYJxRzlh6uJkAkU6YjxiKPnCcUar6ZUZ/xMn2PKl3MqyVVFs8F+jWr8g3kTayzgbTZJ+HAI3YhJxPM8Fqb3eL0OyiZLXmgmeIygs4rqiERiEn2kCUdo8IamBamqhGKChkMyyHM9HAIbxLKRoPyQn5EuK4nIj2nCMUFovRZpW1WjkaR6KXlEazPUnxy/KD9MdE4HOV9W1fglTT7QhCKUrWr8Q8LX6wGFf+nFBVUvRbms6Ph5onFc0glZVjrGq2tSLWlG+xLJNKYI4Sua0/zwh+R5sqpx3LbiXwRaTJHhifB8VY/e0oRwvCKFZtdEUzNQwXFJOyWS12g0N22l9ONCSK3yK3jTNvUx/ymR9I8lkzSJr1UhShojhK9p7ku5KGlWyNuFFjHC7/o1E/VoIcWcKapi2+arPCb8VpLbdEo0vSG3x4JP2DS9Pojx9/26H+mtXQ0vaM7pTfSW6uQsXioqYxxrSuYxjhnXlGv/8IJc0SrGsaJKgVqcI/zciI/meR5XoiDVTChQIlNwlmUH5/F6/ejfB4//noyz39LfytUBflKj1ZP6waNUU6UTivBraAI00qkeHeQxLFc+jZHViTgeaXm7Ag3khtn3b14kNNWSzRPkFYfbtVOIapDn8UzrRRYPh5ulKovX67Y4D4gHz2nCUxgEJ3OKgAwkAj/MK0SpGyFL+6xnUA6tPjINKkpkMYOnGVGzcRxnPBWSTRmvC6KL2aoZTF3j72DMoLrBmP0SPJIwT0yZvwlF41WdOeswkWJ+wrVkVCWuiLqfFKUTVmkqk+SMY32O8sMXxogkHPmlrnMv2+FQpxXlUz073G+f/5E//vLpcDh4dPbbcn9/f38P/hxM4P+/T87dpGmE0jlZtB3Zvwj/AsNqhhR29ejfRH64ODva+5Xsfdrf+/pi73z1eB9/efA40IQxza4FK6N9/M2udmjAMm1Z3t//HMth61eNwg36knb6dnY+srp2do51szpGjREUYARpqipW0GQfP/0CIdOY8LMpds+mQKgQXDO+pKYPkgss828SkrISYWWejO6NBnK9Hqj1Wps5lGi9TnRKyjKRCPN0sVSzZMXKTGIgz1SNUN0shBr/6K09JvkZTJFZPTJ/DStO5b8kHI2AadeJADUuxIJVQu8pSnQ8HJoyZy32yILFSM+kuIlAHidSCpnEjF+TipWRo4oKY3CWkli3YUbI8quEmM5E3mtwOGRuDvM83/9883NR0mqjEzfqH96evkqtorDJbbK6phKsVHaA3evvZZVJ3Jq/TOE51aQkmmTfJRphaD4TDcVL6ExlDJznz0ZjrE6sam+MlrnpdEGkogkdj+MYjZZ+rS1btzoc9lRtiYbDZepYzPP8YDhMeL5EzlLU0LrOXyc8bZlHWMC8BQYcYZJ/l/C0GQbCMucpDKMvabBKTXlnmse2vFkaKpfjcZcCwwT6Xq1UGqGvAtHqULSiFS2xclV9uWKmjt1M0jILbREonuVnOJTBc6I22F+vmX8R1TZyeN9zlELFCP/RKwTzHSN8fZdTxXyXNzb9/LrLVb+8s9F/bmPvlfWj47Rwk3Ty6vTk1bsYU5oTdcsLu5zzZB//M11URE+EnKMEuVhOw1K9YfzJ4xityA1hOtnHL1NJjSkxIaObMaNZIr98sOJ1aiOCPVGVew9WCykKqlS6YGW992CV7ONfU0l4Kebv3z9/hhJUX2KSDw689su87alSmmjkjUrK1LesogkaDs2Pt7fzK1Gx4gXjHxK0udAlnSwV49NIi0jSRUUKGpGIC743YRWNSqo048163xwfxwKWwmDfLp9EWoP8iiay6UzWwPZ20XTeImg7ofCEqz77lxPCKloC84vlVcXULDJsE15GkiotJI30jEYLSa+ZWKpwPKNI0kJcUwnGc3EbSTonjKuI6OjBStSXqG74J8NhwNUcOIJNQOECfKOSr2nugsm9GUzdZKJi/F1bKGlB2UKrGGuaP8Z/0PzRv7tO+eApPnj8Vf3gEX4fxoUmPsXmzx7jipVUqhjbZtlyDqGgMI3t731t2ztvH9OHe+erffwUoj4sDRnZm+zvfX2+evoFlH1qtzUwb/cMi3b7i46HiJwknDvSOQUd1Y3xhX0LdJhywQuI5rjvXafXRDLCdRuQrteD9zao8pV/gQ82SRINuwJaaFqefNSUAys/eY6sxQOuNoieMaXfzsjjL596OjQcJp7l3a0GYxDUBXI7yVEghTt5CFqVu1tt30B/TV46JWYvCrZRUkV1szeItIujXie64yxlrre7PBDrNh851j1XeNW22Li9gBMbMTkHBsMnIIL1Wm5GOSqIcgK5FhWjXP9IbztSvEeoHLz6F6TpXHeapjoMjZyflj0/reoak44TwgLc0Pt0Jua0ZLL1QoM/aBNs35crs+jsDAdKee11MNCpMlChna3TRuGiqyWryoiVlGumb93iJ8D5H+nvgnGwn7HzgDF+TfHlgxWt09+V4JcIS+/lKu/lrhsvZ6PZasOvrdeDynu+9bpKFftEDw+ePvnqi02Ol1yRCb3TRICQA1/f+vjhMEkqo6zDp0+gvNWqxotPqV6yMgRxhsMqXbJykOddmmTbivwMdzL/RJMg9m1FJCkpQQAoIThe6slXgGpQVE8YJ1XVOtbrdMkrxj+ANFPrfwE1WdXIRChq10R9R9sA4DqdfzAKqPBK0mIpFbsGb2gV+YsvvqqbHUjQmIKJlo3x9hO+tBoeVS7On0KIxOrUBEKc9iKhVM8Xl6MwULhObyTT1A59Cn3s2o9oio3WZxRbQ5JVmPasb+bXQFvVmtAsXAw4TdMq79ii4VAG1jIsD+N1GVhLt/SNStU1qv92iVem6MlXX9QIm0FGlCZTzLZNJajnNIxGejNaN3u0XXzJzzvD4TC5k8pLbL3eQtfxmh1bMrbKGy0hCq0EKfdceF7GCG8WZcn2MYxtKzz1RUlHwLI12fi7RIZbNiN1fNXSO2eDsqZN4/CSZh6WngV42T3Z+G+yFVU0Vd/TPH50ffDI65N6ZAkeiYVmc/aJxviZoylmRD8qxHxRUWhcWaDwgYvcfKiIbfT2O813QC/41sBcA+r3xPSOPTFFmJlt0KoF+8L9td/p3yYcjbnz0x1sra7xWxNKAoqF/gyExIfDwe/efeFvqceIkgGwtl7TFFobhCZ1vYa6tPmNYLuTDN4mFMCc9do8NZWpQxQbltoKIqfLOeVadcIARpNtNKjBqAD7gX4wNJi1POHmKVsZYKjHAfYtZduar+sa/6sdux35wOPCRCmmNDGYsBaiis9TxotqWVKVvDWsJzSVoqKeTQek2VLwambdtO20mgErB1DmQWeufKHB/9drE3bd7/X12vRl+BwOzWTA8wWcWlyYCTKNufpuZRCDb/QYUKo2Bg+Gq004k2ylGw43UMeAzKqZ/9lo6uMvnwL6l3fqAID9tgV9vxGiooQj3CApgzzf0hZqFQhmJOPYyS3zEgSPoofDVftupmtT2Ig6lFS4tFZhRdalA8364T9cVf21FJSU7iiu6zI2F1uHrtWUgGJBJJlTTWU4aR2OApJWmn9yGYbi3MZcR6xBebad3MzPLh6Hw1X7K9tKU8P0/NTdhjcTZFBXWID2ab3eUOA5VYpMqVXf5kdnz7NRfHhAv+ismTwgAdX+16Zq291XoN29NsP2hAEvXpIFJg2MgWV+du5R/BJQfN6yvmoqCqgog5UzHp+dG2hImI1/Aca96Uqk4JmhCNt5Lnaa22KbuQUPbqD8S+gqe7CCpgD1YZOkNDYzMGFl134ZtMqw1KtomCPmuKBX6TuUVC0rnT1YdQmgcxeCN3Jj/mm5IUH9WcFB1SwXsNuwsoNpVK0o1+vZOHUnaT3prdez0Dvm20TYDFaZwZoW8fK+MrXcFXlXBMZ8W8kW4P6Uf2TuqemU2U7bHr1QCy/HKt/vimxpRTaq/iGd4g6H8qw6H+R5OULVw/zAbC/zPJd9xX6YH9SdthRqlQDsJHOP4VKYQnPWGAf+atv5l6XxTihYq0/W62SaN8WwPn/Y4nqmfdfTep2An9Ljigm3VEZRTKuz/HDWM/MIF/4Ijk2SaarEnCbJyhvYWY3yw0FpRj5rXEMR/hwP9rOkMHPlSvDgwJtuM0s3udnwVJmzcrgxDJnxh1Pn3FQ2NaaWw86OknngIla2JGuq6hrPc4ov8rPVB3qbxZrOF1QSDbsFPGc828dz8jF7XGNXLxYXi7DmoKmZk48XWnygXHVepF9jOJefUgl7roC2jdzv/doCthi8oBcLykmlb+0be4+7LE5gb0F5cbuDzNsGQ16aysLUzXyf/6rFJLqwC+80n5+V5/go52flOUzuad7qp3OPR3ke8+X8ikqAPW7OyvP8CI2aM9S6TRs4HXjC9XrwyjwZNIYzTZNTtF6f/qNYr08PZ+v1v4bDluK55cyQJCXYhkDg67Uv2RRrALwehb2fHh55jTccnzZHszc1rkwQlKxiF27tQQtxFpPFomKFQVoeASgRY7LUMyHZJ1OWXX5DiaQyerCiwRFgfQnq6FIBPtBbZdyx21sGO51V/HHPHfc01XHWgyiCN+sa4TJA/ZoDZHDTM0oA/jcG3Q/C9uSwWhetw7H/b+VDj1qi4dAKPdHokDvQyWEL6ZUob8dpQXhBq6QHIOAAmToyg/BHwlautIwIj4RBAD7R0pwFw9HLQnDVwIu2CxSeFgfgFUS19KOGdBIbPlhyGOQbM17Yfhs79I5+1M8o7JwlljngxDGckbqDMWPZR8gdD9umhUHFEsPGMi0Fp2ilHuYkLU0zCYLX90dXkpIPoNDyYb5MTfZRenWr6QsjWiy9yP5TaYR9u45wY73MWdKmjFQL+7D1uhnWjtmC8VaUKPpCFB8SVNf4Qy+fwy/ojUVI0XBID/P98UuiZ+mc8YTix/Rr5DND2i3EfY+JuhtRrPMuBcTRBTOICBoHPxrvRgDBIH4vQe5AMEibaEPSD4x3NkcPHLpgaxAKE0iM7yNgFaAusySwsD8kJIXDwjnRtHxnrM5bck1LFDqebQTZzjfrGnlpiuCIz9gfWkJ+1we2WJinkilImINHzeZULGHjT0H14vPOQYJLGkwdlmQs1vOymwHUO2h054xWKP03Yc/SLcn6JOGWFHwu0UsVdmij9aYGGQcNT1lTVFsB87QiGpzaS9WRqi/NujR1sz/2muK2x0D2V+dqx5uwKyu6GQATqouZTeK0Jxor45SVznjt7FyYWNHYOzKyR/Yw30dXQupjwbUUVUUlVrlJWEwJlCdoJMb2kZZjX5hBYVmeXEMeIFOaciqT2FTGWOGVQbTBeDjEXVH9zmpM0mkcH3y5v4+CDBprS3RyGfi197KqH6y+pzXA0FTPRJnFr0/fvoux8z1ZBXggBgvdd2KBOBBWbMoJQN32AUs4sKKFzpwS19Y1LFPxoSsod+oTgYXEX9Cnlu42qVCXbpr/RJMqdX22aRbRdOwZmeJQcbNv4IWwBNUZ6aCYEfHGtqgokY0gGcJinEo6F9d0x0Q0OTBv2uxZsJXUOuQ2nXJrtiXE/S5i2HQ1l/dyNRAjRw9Wur4M8nnxknbZ4QGwRZ/s0XY35yogXcnvPZ7uaU9gfeH9/WCPM99PjEZBrw9zjvt9PMwbFmo8aYGRJgiymBqEQA6XaI+jzW7L1psDwPzpluO/XQxrIaI54beWX9NK3IQkAPnGsc33i+MAWohjf8LiewbOIC1G1PgXGqSvMYOkgzb/iXCiOV7dEGKQcdib4wY77m8xi5lgBVWoC9b48nTCeAmu0HpTyIvkJf04Hu8jkyM4asBDgQxOKNKSVpqgIBR3RQ2c2fUJnarhUCcOuIPgL8Y25btHVSM86A2joQiQW+Qgon5Fo8f/uRJsaXsi5AmByItg2cqdbDnQvWP1diYX2nUKp3IvfBkYDLV9n9UEcAAfqH/sr9fqzyn+NkYi073PI53AzQEFZ7W3CWnx4XH7DLcCqvyNyabFcDgam2aeP7N7gMrMEUtZCZmnBuWv/gSH5ji8YoW2mWoNk7b1lJV5VVuf8CZZWvTPsABPtv9pYPf2mCFpAJK/FtkbJpr2TXsP8yle0oRh4MGvVGwMLY6DpQvpbBCaq75t66U7n2FxLiZnaZrS81SBD0/gUseZhKRisidd8vPbRFgwz6Yrmx//4eQ3s2aznk2L2PRjYaG/3LiTF/dLX4hqz+g9hv+flxn0Zc2s7Qwzvljq7BeaiAB4NOL7+f/L7Dl8qmv4XOF209er3Gn8enRbzV9Ds8UAblb9N03gltZ3GUEjqMBO/JeMorFCEo0UrPitpgYrozWmsnsaENgDWKUKd0jus1ynvVQsTOyOwOdOdqL/5vjm85n8PVEcvX5usu0jpiIutE8EghSIUZD8G5EtgfuzvxS4cx+ui11xuoQ4/fOBqQm7I5eUm0C2j9vwoctmElf2XNOfEXVCv2y/dt1thboMXofG7cm3WT+PKETkexZGiRFa/dwgSyVNJP6KPkVYYY0woCk2SMPaZ2Xb7gxAdW8t5cKDOhG86f2k3ISulhvQVQWw1TQfHOCbfO6M/0U+T9WiYjp59Jsc/8YfeYi/zA9LkKLU6memZ0lsUvtjdw/I1ho440tkrmW9BdIEIZN0lVz+7dJM4IUxERfmctiz01cn5zFaTQH6clL4sZNUdmEFVtctsDaYOmht7tSPBdDa3EJZw+F8Azw7fEyf/kUXayc0MrProgiA5xx8Nu/DZ3OD79UIV97X/7e6NjNk3PLoIrcTZGcppR9pkVTIyabMK48tXVg/Yvn25a704cXZ/nkTgOCbpER4ijwKaUfifg+mkD5oL9wNhzdJ1UsDi9guMJD1wMCO+tvN6szsTxoFPeFGQROUUvMEF9sCGPRXGmKJYyv/bn6P9eL+KAH/s/dKUx/chPN1xnD7Gnz72Vd7jn7cuE2EF/ZOR7OEfqV2sfD8kFuu3eqIY4Qpt7SOILgNyTeG2Ow0XSujDeVSWi4LOGdy7sseSqqISGqM+emC8qPne2C1IjjUIJpdVTRGdcDQg2DLGJz5anP3zeqZyCEq1M2AzzHJRTPYW7vHJOGtnvZw8GBzQczZR8funmU3ag7g+my78g7nnj8F/BHU3I8zKS72qBd3clOUm8k2+4WDWrqpqxsf58ej8sPBLcDgZliyHco+MhGqO1V+bCWjctm8+E+KRl1ughyqpvMFXFQBCFGFJzZB/o09cmUAELMyYw3zn8k5Yf0UhJ7HZamJa8djk6OJ4F9NK0WjLsM296vDax3eNbyhHd1NPpcK02bAdFJYenkum+kt3LL7tpjROQkx1SC5pUNTw6DwnP7JJMRnzYZo4x5u7+AAje2gE3up/lmiMT8T5whlNBvMqd0IzKkhvN8FXnupVmNhLtVqrMFVBnJoTZXYYr7g4n9bPIaf2TO4uHSmzxFcz/29e82mue0Ksj0ftbu/l2SR2JGJ/PBM9GJYGGB75XpSEf3SUjo82nzboNmlNYRkfAbnBCLA7Mmfy3vaTm4UQ+xSjKAYBBGSYbI1Vaquz7Ozc7jyyfmdqai7PqCwoVDcI8bNNfB65+2FJhN3E2ir8QXd8BDcJ7OoW6XpfEtY/9Pb6BjC+Irw6RKspkluUFEpjElVywV8mSCy73uT669K+eOVjQ3l2JdlFk5umWkNXCfTMDR84HpsYgUP84V8Ooyxfcc2RO/nPAowMVs26l0ttTt2zhOxLWfIGLsu1y4fyACj3YypDaH2psn5K6aiOVPmFiPTyuFXZXvfpuOL7PjhxxubMdSMqNu3I6zrutOItchNnc3vPqL+mlOMv22+9rDnIswsxtqFGCZ9xgQhLunKJ7o2M2pJdH4I3xaBGStACSbpC6dEJj8dQrXXROr1+k4qN49AOR4cZJ+jtdIw1C07bdwAiTy6y6bIDweJuAejCGWDfYTwOzCCoHnNV1R8XMObuIaO0zN9HmCeYuuZtUstEX6Fi7rGL5qb92CYmuu5+bY0YXOZtmFAAgMCtUHfmTzvZL5QKNDmlisakfU6oWfibP/8PNeoxp/yoiJKrQrBbfAnZMLRSs+Y2btaQCDntX8eFTPCp/RkzrSm9lRwkpozJVc0gjsT5bGh6ojzeEb0cw5XkszhVW766LSWmg3LSNKJpGpmLzMkjpku4QTuKaC6ZGohFN1O4ytre0FHUlKZNhM3XTrnKetuTq3uZzGc57NmZ/p3BNFBic/Euds8TtJqnipa0ULDqBynq2vKSyGzI4pZmWk8IXNW3WY8tQ+4ucfDmwsn7adrhONxIcU1K++UWwKQoVM3dwTamazE3YnrwTkafpuNVmWaeWPBDn/Oe2a0Vmy93+i1tHvPxBhV6ULLywerb2tATCBj0lpWaQ2qEwPUeBE0zceQ4/UcLK49vM4OHn9Fn0Dh6VIHpQBqgXnTbJH1t8DGMcW4pJqwKouPXj/f+0BvIy3JZMKK6LeP3/w9kmKpzSY5dJVXt5FrytDYXc0MPlxQkAW5YhXTjKrMuxTGp9ngALM5mVLDczY4gEDRrkl7qeueClKjzrnt2XkTFZOuUJ0+duV6GXINVVBaX7aC7umb9FfCesKWabfgM3L/RSxldGw9hfuixg3Ts0aI4cl0Ox3fMf398sq/ppZXPgSzA2jn42ZGeVQJpSqqVGVmkKuKaEgkuXNO9jfn5DPr6Y2DvxIHhWLZ7L/uWFKqmx9hvXvPZxhHn74Sr6k0Pl1w5TGbDUQ0jd4seeT8bSE4p4WOyJQwnnpITm1dkXiZs7F1DFnAcWjiDMtsOBws7+ZUfyuWvEzidzMazUEnIQ7pzZqdbMN/VAk+pTIi14RVMDMNq1XO4JtJXYP6bceQfttARi6LCFhkcK+lMrnSXePiknVZmS0gTXeRw5HbFij+uQuBt1mFyC5B+/UHcKccvkBkjvI+i6y5eLdYSkm5rm59yLvksN7KAGbgpTEee4JXtx3gpJHNwqnVMlWUl870wuYPjgMmQtpcRuPOj8GdL1wmMCKppNBpctz5DMc0F23+M/YZyGxcZUswsz4F+QF8nQaykPvwgMpuaDK1KUnvnNmvTs2yVLiTcdxJQgoqss+8tqtpm6wMf1/32oaaba123tjRbJjpDD/euTzbsIOWZksvuxq4o78t2dJQfuyLdzGx8eIOfu7dwQ4mN3OzfdFrV9LhrU+/ha37NLmDmy054G3ZVn423tjC0P1adbt90PyX1pz2rCE4hXeuNn3jLu16KM0ctWaxv8xb4zbp1Rgx6z0WW5PkjnOZCr419jJY96LJcEMjuStIGw49VXt5PJrCQeANPskPV95QnBiUxOxL4Wx2bAP0rfua5MShydk2omD/lZw0uOGJDelOLCCCUI0XLkOuhfWPg8g7sFnzrcK5+Ixw5vcSjqey10SMiEpncwsrJJv9ON/g9iLg1gC0d4fJI3vtp4vUlE0aX3spzCM8QR2INcBBfE12g2f570lhTToOTDucW/9pnQ1t/Sy4SzccJkW+uysru9P8giZFOw4Tji7sZnSxDagxin8MSP/C5MEPh8cWA75L8SwpatH3E+v1PHjTXgA7pbnTNi9S97uFzsauJFvVozt6v0ujT2n7FbwtYn7pkgeOmoEnx17K4+Msjv3Li/7dOzsqC0+M72j6vaIyOdvBd4tuJGF7zSC2vhYIu33ByB0w3exzrLg5qhE+yg0C2zG8AP3XoxfJEe4Z5CINooBeSIC304N/77v57aStkx6P7a8NF7nTk/9Jl7qdgb77u59D3N7Whue6rzMzC/WEbo0pT7EL72a4MRxZa0P6N36OOhd9Qv6yo7reDE4XsExP6EZ0uujtt4wQj8WSa7vBQg7hv2NzRf5vN1fmiHEr1uH2gZufPR3r/jHYgwTORzyIMzO3XcIcl+2bMvm/vyHzX00pYBKsTpvDproe2ZlqsO1I8MQdy8LHFvxHPtIFKT6QKTVDdvhBgGsGd+B37qTaTyq5tqIZMRy75vxhgf/CDcft91Uy+EAMdR/a/p6oGUpiZWpilC4XJdHt14Pe0eDzQTQl6uhKiWqp6WtiUk6Y0u3nS9LfVYwQSks2hRUTzyBRtMbCpUeh/PBnf7NL0UJSbdN4XqHmItenREAWeIhlKOt2CMJbyz8CHiTpFNLu5YbdfW1XjWzwxxi+cn1HQwHCGqBLwDmsyA54urudG8ZLceOZei/Z94SXFZXJamYe3kuWOeTU+n9pPl1sPlvcfr4mjItU84nlt+aDxq/hdEwlMv1jSeUtsrlQ7rtd8MlTf5eDNSlhEKqtfNu292SJKzzFN3gOmHh/Ysw3EpNX+MeAzH92yFOVtKKaJt+jGpsv4mR+qjcadKSv7mqkhvwrCPvtN+V6H/pZedmqmbj5mUjO+NS51tZcwalDVZnkYE5vqOx/gCyN3piGI3cQh+FDkDySd9g0F2xv6ADuMBRAyQ1TrPdFoobJBgJpbWrs0dfuB77MbROob3DNTpfGLPQlUIhlVRqbfU0lm9yaD10KTvfgvlgz6u3fEbvTtJuz+9qbN8kTtKoh+O19Ut1/hj34/nqNRn/7H1BLBwgQVrozYB8AAPVfAABQSwECPwMUAAAICAB8TPBczccSbP8CAACpCQAAFgAAAAAAAAAAAAAAtIEAAAAAZXh0ZW5zaW9uLnZzaXhtYW5pZmVzdFBLAQI/AxQAAAgIAHxM8Fzfow3fvAAAAGUBAAATAAAAAAAAAAAAAAC0gTMDAABbQ29udGVudF9UeXBlc10ueG1sUEsBAj8DFAAICAgAW0zwXKf//ZmXAgAAkgUAABYAAAAAAAAAAAAAAKSBIAQAAGV4dGVuc2lvbi9wYWNrYWdlLmpzb25QSwECPwMUAAgICADlSvBcsoZ6jXkCAAAnBAAAFQAAAAAAAAAAAAAApIH7BgAAZXh0ZW5zaW9uL0xJQ0VOU0UudHh0UEsBAj8DFAAICAgAfEzwXBBWujNgHwAA9V8AABsAAAAAAAAAAAAAAKSBtwkAAGV4dGVuc2lvbi9kaXN0L2V4dGVuc2lvbi5qc1BLBQYAAAAABQAFAFUBAABgKQAAAAA=";
|
|
12
|
+
//# sourceMappingURL=vscodeExtensionAsset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscodeExtensionAsset.js","sourceRoot":"","sources":["../../src/assets/vscodeExtensionAsset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAO,CAAC;AACxD,MAAM,CAAC,MAAM,sCAAsC,GACjD,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,oCAAoC,GAC/C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,kEAAkE,CAAC;AACrE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,kxcAAkxc,CAAC"}
|