@continuumdao/continuum-node-sdk 1.2.28 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/mpa-wallet.d.ts +60 -29
- package/dist/config/mpa-wallet.d.ts.map +1 -1
- package/dist/config/mpa-wallet.js +35 -13
- package/dist/config/mpa-wallet.js.map +1 -1
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +12 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/core/mpc/mpa-billing-ops.d.ts +29 -0
- package/dist/core/mpc/mpa-billing-ops.d.ts.map +1 -0
- package/dist/core/mpc/mpa-billing-ops.js +473 -0
- package/dist/core/mpc/mpa-billing-ops.js.map +1 -0
- package/dist/core/mpc/mpa-top-up.d.ts.map +1 -1
- package/dist/core/mpc/mpa-top-up.js +17 -25
- package/dist/core/mpc/mpa-top-up.js.map +1 -1
- package/dist/core/mpc/register-keygen.d.ts.map +1 -1
- package/dist/core/mpc/register-keygen.js +1 -6
- package/dist/core/mpc/register-keygen.js.map +1 -1
- package/dist/core/mpc/schemas.d.ts +47 -0
- package/dist/core/mpc/schemas.d.ts.map +1 -1
- package/dist/core/mpc/schemas.js +35 -0
- package/dist/core/mpc/schemas.js.map +1 -1
- package/dist/core/ta/calculate.d.ts +15 -0
- package/dist/core/ta/calculate.d.ts.map +1 -0
- package/dist/core/ta/calculate.js +275 -0
- package/dist/core/ta/calculate.js.map +1 -0
- package/dist/core/ta/catalog.d.ts +26 -0
- package/dist/core/ta/catalog.d.ts.map +1 -0
- package/dist/core/ta/catalog.js +215 -0
- package/dist/core/ta/catalog.js.map +1 -0
- package/dist/core/ta/index.d.ts +5 -0
- package/dist/core/ta/index.d.ts.map +1 -0
- package/dist/core/ta/index.js +5 -0
- package/dist/core/ta/index.js.map +1 -0
- package/dist/core/ta/normalize-input.d.ts +30 -0
- package/dist/core/ta/normalize-input.d.ts.map +1 -0
- package/dist/core/ta/normalize-input.js +193 -0
- package/dist/core/ta/normalize-input.js.map +1 -0
- package/dist/core/ta/schemas.d.ts +151 -0
- package/dist/core/ta/schemas.d.ts.map +1 -0
- package/dist/core/ta/schemas.js +95 -0
- package/dist/core/ta/schemas.js.map +1 -0
- package/dist/core/vpn/schemas.d.ts +181 -0
- package/dist/core/vpn/schemas.d.ts.map +1 -0
- package/dist/core/vpn/schemas.js +112 -0
- package/dist/core/vpn/schemas.js.map +1 -0
- package/dist/core/vpn/vpn-admin.d.ts +22 -0
- package/dist/core/vpn/vpn-admin.d.ts.map +1 -0
- package/dist/core/vpn/vpn-admin.js +88 -0
- package/dist/core/vpn/vpn-admin.js.map +1 -0
- package/dist/core/vpn/vpn-egress.d.ts +30 -0
- package/dist/core/vpn/vpn-egress.d.ts.map +1 -0
- package/dist/core/vpn/vpn-egress.js +91 -0
- package/dist/core/vpn/vpn-egress.js.map +1 -0
- package/dist/core/vpn/vpn-files.d.ts +14 -0
- package/dist/core/vpn/vpn-files.d.ts.map +1 -0
- package/dist/core/vpn/vpn-files.js +32 -0
- package/dist/core/vpn/vpn-files.js.map +1 -0
- package/dist/core/vpn/vpn-host-binding.d.ts +4 -0
- package/dist/core/vpn/vpn-host-binding.d.ts.map +1 -0
- package/dist/core/vpn/vpn-host-binding.js +6 -0
- package/dist/core/vpn/vpn-host-binding.js.map +1 -0
- package/dist/core/vpn/vpn-parse.d.ts +115 -0
- package/dist/core/vpn/vpn-parse.d.ts.map +1 -0
- package/dist/core/vpn/vpn-parse.js +238 -0
- package/dist/core/vpn/vpn-parse.js.map +1 -0
- package/dist/core/vpn/vpn-signed.d.ts +13 -0
- package/dist/core/vpn/vpn-signed.d.ts.map +1 -0
- package/dist/core/vpn/vpn-signed.js +39 -0
- package/dist/core/vpn/vpn-signed.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/mpc.d.ts.map +1 -1
- package/dist/mcp/mpc.js +33 -2
- package/dist/mcp/mpc.js.map +1 -1
- package/dist/mcp/register.d.ts +1 -0
- package/dist/mcp/register.d.ts.map +1 -1
- package/dist/mcp/register.js +4 -0
- package/dist/mcp/register.js.map +1 -1
- package/dist/mcp/ta/register.d.ts +6 -0
- package/dist/mcp/ta/register.d.ts.map +1 -0
- package/dist/mcp/ta/register.js +51 -0
- package/dist/mcp/ta/register.js.map +1 -0
- package/dist/mcp/ta/resources/indicators.md +86 -0
- package/dist/mcp/ta-server/index.d.ts +2 -0
- package/dist/mcp/ta-server/index.d.ts.map +1 -0
- package/dist/mcp/ta-server/index.js +12 -0
- package/dist/mcp/ta-server/index.js.map +1 -0
- package/dist/mcp/vpn.d.ts +4 -0
- package/dist/mcp/vpn.d.ts.map +1 -0
- package/dist/mcp/vpn.js +107 -0
- package/dist/mcp/vpn.js.map +1 -0
- package/package.json +7 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { DEFAULT_MANAGEMENT_SIGNING, } from '../../schemas/extended.js';
|
|
2
|
+
import { saveVpnClientBundleToUserFolder } from './vpn-files.js';
|
|
3
|
+
import { isVpnObfuscated, parseVpnClientConfigPayload, parseVpnSetEnabledPayload, parseVpnStatusPayload, } from './vpn-parse.js';
|
|
4
|
+
import { DownloadVpnAdminClientConfigInputSchema, SetVpnEnabledInputSchema, } from './schemas.js';
|
|
5
|
+
import { getManagementRecord, postSignedManagementRequest } from './vpn-signed.js';
|
|
6
|
+
function normalizeProfile(raw) {
|
|
7
|
+
return raw === 'split' ? 'split' : 'full';
|
|
8
|
+
}
|
|
9
|
+
function buildSetEnabledFields(input) {
|
|
10
|
+
const fields = {
|
|
11
|
+
enabled: input.enabled,
|
|
12
|
+
profile: input.profile,
|
|
13
|
+
};
|
|
14
|
+
if (input.enabled) {
|
|
15
|
+
fields.obfuscation = input.obfuscation ?? 'none';
|
|
16
|
+
}
|
|
17
|
+
return fields;
|
|
18
|
+
}
|
|
19
|
+
function buildClientConfigFields(input) {
|
|
20
|
+
const fields = { profile: input.profile };
|
|
21
|
+
if (input.obfuscation && isVpnObfuscated(input.obfuscation)) {
|
|
22
|
+
fields.obfuscation = input.obfuscation;
|
|
23
|
+
}
|
|
24
|
+
return fields;
|
|
25
|
+
}
|
|
26
|
+
export async function getVpnStatus(config) {
|
|
27
|
+
const result = await getManagementRecord(config, '/vpn/status');
|
|
28
|
+
if (!result.ok)
|
|
29
|
+
return result;
|
|
30
|
+
return { ok: true, data: parseVpnStatusPayload(result.data) };
|
|
31
|
+
}
|
|
32
|
+
export async function setVpnEnabled(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
33
|
+
const parsed = SetVpnEnabledInputSchema.safeParse(input);
|
|
34
|
+
if (!parsed.success) {
|
|
35
|
+
return { ok: false, reason: 'Invalid set VPN enabled input.' };
|
|
36
|
+
}
|
|
37
|
+
const profile = normalizeProfile(parsed.data.profile);
|
|
38
|
+
const posted = await postSignedManagementRequest(config, '/vpn/setEnabled', () => buildSetEnabledFields({
|
|
39
|
+
enabled: parsed.data.enabled,
|
|
40
|
+
profile,
|
|
41
|
+
obfuscation: parsed.data.obfuscation,
|
|
42
|
+
}), signing);
|
|
43
|
+
if (!posted.ok)
|
|
44
|
+
return posted;
|
|
45
|
+
return {
|
|
46
|
+
ok: true,
|
|
47
|
+
data: {
|
|
48
|
+
result: parseVpnSetEnabledPayload(posted.data.data),
|
|
49
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
50
|
+
signingMessage: posted.data.signingMessage,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export async function downloadVpnAdminClientConfig(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
55
|
+
const parsed = DownloadVpnAdminClientConfigInputSchema.safeParse(input);
|
|
56
|
+
if (!parsed.success) {
|
|
57
|
+
return { ok: false, reason: 'Invalid download VPN admin client config input.' };
|
|
58
|
+
}
|
|
59
|
+
const profile = normalizeProfile(parsed.data.profile);
|
|
60
|
+
const posted = await postSignedManagementRequest(config, '/vpn/clientConfig', () => buildClientConfigFields({
|
|
61
|
+
profile,
|
|
62
|
+
obfuscation: parsed.data.obfuscation,
|
|
63
|
+
}), signing);
|
|
64
|
+
if (!posted.ok)
|
|
65
|
+
return posted;
|
|
66
|
+
try {
|
|
67
|
+
const bundle = parseVpnClientConfigPayload(posted.data.data);
|
|
68
|
+
const saved = await saveVpnClientBundleToUserFolder(bundle, 'admin', {
|
|
69
|
+
userFolder: parsed.data.userFolder,
|
|
70
|
+
profile,
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
ok: true,
|
|
74
|
+
data: {
|
|
75
|
+
...saved,
|
|
76
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
77
|
+
signingMessage: posted.data.signingMessage,
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
return {
|
|
83
|
+
ok: false,
|
|
84
|
+
reason: error instanceof Error ? error.message : 'Failed to save VPN client config.',
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=vpn-admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-admin.js","sourceRoot":"","sources":["../../../src/core/vpn/vpn-admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { NodeSdkConfig } from '../../config/schema.js';
|
|
2
|
+
import { type ManagementSigningMethod } from '../../schemas/extended.js';
|
|
3
|
+
import type { SdkResult } from '../result.js';
|
|
4
|
+
import { toSelectedSigner } from '../management-signer.js';
|
|
5
|
+
import { type VpnEgressExitPeer, type VpnEgressStatusData } from './vpn-parse.js';
|
|
6
|
+
export declare function getVpnEgressStatus(config: NodeSdkConfig): Promise<SdkResult<VpnEgressStatusData>>;
|
|
7
|
+
export declare function listVpnEgressExits(config: NodeSdkConfig): Promise<SdkResult<{
|
|
8
|
+
exits: VpnEgressExitPeer[];
|
|
9
|
+
}>>;
|
|
10
|
+
export declare function setVpnEgressSharing(config: NodeSdkConfig, input: unknown, signing?: ManagementSigningMethod): Promise<SdkResult<{
|
|
11
|
+
result: Record<string, unknown>;
|
|
12
|
+
selectedSigningKey?: ReturnType<typeof toSelectedSigner>;
|
|
13
|
+
signingMessage: string;
|
|
14
|
+
}>>;
|
|
15
|
+
export declare function revokeVpnEgressPeer(config: NodeSdkConfig, input: unknown, signing?: ManagementSigningMethod): Promise<SdkResult<{
|
|
16
|
+
result: Record<string, unknown>;
|
|
17
|
+
selectedSigningKey?: ReturnType<typeof toSelectedSigner>;
|
|
18
|
+
signingMessage: string;
|
|
19
|
+
}>>;
|
|
20
|
+
export declare function downloadVpnEgressClientConfig(config: NodeSdkConfig, input: unknown, signing?: ManagementSigningMethod): Promise<SdkResult<{
|
|
21
|
+
userFolder: string;
|
|
22
|
+
wireGuardPath: string;
|
|
23
|
+
transportPath?: string;
|
|
24
|
+
wireGuardFilename: string;
|
|
25
|
+
transportFilename?: string;
|
|
26
|
+
setupInstructions?: string;
|
|
27
|
+
selectedSigningKey?: ReturnType<typeof toSelectedSigner>;
|
|
28
|
+
signingMessage: string;
|
|
29
|
+
}>>;
|
|
30
|
+
//# sourceMappingURL=vpn-egress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-egress.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/vpn-egress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAEN,KAAK,uBAAuB,EAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAIN,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAExB,MAAM,gBAAgB,CAAC;AAQxB,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAIzC;AAED,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,SAAS,CAAC;IAAC,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAAC,CAAC,CAAC,CAIlD;AAED,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,uBAAoD,GAC3D,OAAO,CACT,SAAS,CAAC;IACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC,CACF,CA0BA;AAED,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,uBAAoD,GAC3D,OAAO,CACT,SAAS,CAAC;IACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC,CACF,CAuBA;AAED,wBAAsB,6BAA6B,CAClD,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,uBAAoD,GAC3D,OAAO,CACT,SAAS,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC,CACF,CAuCA"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { DEFAULT_MANAGEMENT_SIGNING, } from '../../schemas/extended.js';
|
|
2
|
+
import { saveVpnClientBundleToUserFolder } from './vpn-files.js';
|
|
3
|
+
import { parseVpnClientConfigPayload, parseVpnEgressExitsPayload, parseVpnEgressStatusPayload, } from './vpn-parse.js';
|
|
4
|
+
import { DownloadVpnEgressClientConfigInputSchema, RevokeVpnEgressPeerInputSchema, SetVpnEgressSharingInputSchema, } from './schemas.js';
|
|
5
|
+
import { getManagementRecord, postSignedManagementRequest } from './vpn-signed.js';
|
|
6
|
+
export async function getVpnEgressStatus(config) {
|
|
7
|
+
const result = await getManagementRecord(config, '/vpn/egress/status');
|
|
8
|
+
if (!result.ok)
|
|
9
|
+
return result;
|
|
10
|
+
return { ok: true, data: parseVpnEgressStatusPayload(result.data) };
|
|
11
|
+
}
|
|
12
|
+
export async function listVpnEgressExits(config) {
|
|
13
|
+
const result = await getManagementRecord(config, '/vpn/egress/availableExits');
|
|
14
|
+
if (!result.ok)
|
|
15
|
+
return result;
|
|
16
|
+
return { ok: true, data: { exits: parseVpnEgressExitsPayload(result.data) } };
|
|
17
|
+
}
|
|
18
|
+
export async function setVpnEgressSharing(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
19
|
+
const parsed = SetVpnEgressSharingInputSchema.safeParse(input);
|
|
20
|
+
if (!parsed.success) {
|
|
21
|
+
return { ok: false, reason: 'Invalid set VPN egress sharing input.' };
|
|
22
|
+
}
|
|
23
|
+
const posted = await postSignedManagementRequest(config, '/vpn/egress/setSharing', () => ({
|
|
24
|
+
enabled: parsed.data.enabled,
|
|
25
|
+
obfuscation: parsed.data.obfuscation ?? 'none',
|
|
26
|
+
defaultRateLimitMbps: parsed.data.defaultRateLimitMbps ?? 0,
|
|
27
|
+
}), signing);
|
|
28
|
+
if (!posted.ok)
|
|
29
|
+
return posted;
|
|
30
|
+
return {
|
|
31
|
+
ok: true,
|
|
32
|
+
data: {
|
|
33
|
+
result: posted.data.data,
|
|
34
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
35
|
+
signingMessage: posted.data.signingMessage,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export async function revokeVpnEgressPeer(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
40
|
+
const parsed = RevokeVpnEgressPeerInputSchema.safeParse(input);
|
|
41
|
+
if (!parsed.success) {
|
|
42
|
+
return { ok: false, reason: 'Invalid revoke VPN egress peer input.' };
|
|
43
|
+
}
|
|
44
|
+
const consumerNodeKey = parsed.data.consumerNodeKey.trim().toLowerCase();
|
|
45
|
+
const posted = await postSignedManagementRequest(config, '/vpn/egress/revokePeer', () => ({ consumerNodeKey }), signing);
|
|
46
|
+
if (!posted.ok)
|
|
47
|
+
return posted;
|
|
48
|
+
return {
|
|
49
|
+
ok: true,
|
|
50
|
+
data: {
|
|
51
|
+
result: posted.data.data,
|
|
52
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
53
|
+
signingMessage: posted.data.signingMessage,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export async function downloadVpnEgressClientConfig(config, input, signing = DEFAULT_MANAGEMENT_SIGNING) {
|
|
58
|
+
const parsed = DownloadVpnEgressClientConfigInputSchema.safeParse(input);
|
|
59
|
+
if (!parsed.success) {
|
|
60
|
+
return { ok: false, reason: 'Invalid download VPN egress client config input.' };
|
|
61
|
+
}
|
|
62
|
+
const targetAddress = parsed.data.targetAddress.trim();
|
|
63
|
+
const obfuscation = (parsed.data.obfuscation ?? 'none');
|
|
64
|
+
const posted = await postSignedManagementRequest(config, '/vpn/egress/requestClientConfig', () => ({
|
|
65
|
+
targetAddress,
|
|
66
|
+
obfuscation,
|
|
67
|
+
}), signing);
|
|
68
|
+
if (!posted.ok)
|
|
69
|
+
return posted;
|
|
70
|
+
try {
|
|
71
|
+
const bundle = parseVpnClientConfigPayload(posted.data.data);
|
|
72
|
+
const saved = await saveVpnClientBundleToUserFolder(bundle, 'egress', {
|
|
73
|
+
userFolder: parsed.data.userFolder,
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
ok: true,
|
|
77
|
+
data: {
|
|
78
|
+
...saved,
|
|
79
|
+
selectedSigningKey: posted.data.selectedSigningKey,
|
|
80
|
+
signingMessage: posted.data.signingMessage,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
return {
|
|
86
|
+
ok: false,
|
|
87
|
+
reason: error instanceof Error ? error.message : 'Failed to save egress client config.',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=vpn-egress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-egress.js","sourceRoot":"","sources":["../../../src/core/vpn/vpn-egress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { VpnClientBundle, VpnConnectSource, VpnProfile } from './vpn-parse.js';
|
|
2
|
+
export type SavedVpnClientFiles = {
|
|
3
|
+
userFolder: string;
|
|
4
|
+
wireGuardPath: string;
|
|
5
|
+
transportPath?: string;
|
|
6
|
+
wireGuardFilename: string;
|
|
7
|
+
transportFilename?: string;
|
|
8
|
+
setupInstructions?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function saveVpnClientBundleToUserFolder(bundle: VpnClientBundle, source: VpnConnectSource, options?: {
|
|
11
|
+
userFolder?: string;
|
|
12
|
+
profile?: VpnProfile;
|
|
13
|
+
}): Promise<SavedVpnClientFiles>;
|
|
14
|
+
//# sourceMappingURL=vpn-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-files.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/vpn-files.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,MAAM,gBAAgB,CAAC;AAOxB,MAAM,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAsB,+BAA+B,CACpD,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,UAAU,CAAC;CAChB,GACJ,OAAO,CAAC,mBAAmB,CAAC,CA+B9B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { resolveUserFolderPath } from '../../config/paths.js';
|
|
4
|
+
import { resolveTransportBundle, vpnDownloadWireGuardFilename, wireGuardConfigTextFromBundle, } from './vpn-parse.js';
|
|
5
|
+
export async function saveVpnClientBundleToUserFolder(bundle, source, options = {}) {
|
|
6
|
+
const configText = wireGuardConfigTextFromBundle(bundle);
|
|
7
|
+
if (!configText) {
|
|
8
|
+
throw new Error('Empty VPN client config.');
|
|
9
|
+
}
|
|
10
|
+
const userFolder = resolveUserFolderPath(options.userFolder);
|
|
11
|
+
await fs.mkdir(userFolder, { recursive: true });
|
|
12
|
+
const profile = bundle.profile ?? options.profile;
|
|
13
|
+
const wireGuardFilename = bundle.filename?.trim() ||
|
|
14
|
+
vpnDownloadWireGuardFilename(source === 'egress' ? 'egress' : profile);
|
|
15
|
+
const wireGuardPath = path.join(userFolder, wireGuardFilename);
|
|
16
|
+
await fs.writeFile(wireGuardPath, configText, { mode: 0o644 });
|
|
17
|
+
const transport = resolveTransportBundle(bundle, source);
|
|
18
|
+
let transportPath;
|
|
19
|
+
if (transport) {
|
|
20
|
+
transportPath = path.join(userFolder, transport.filename);
|
|
21
|
+
await fs.writeFile(transportPath, transport.text, { mode: 0o644 });
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
userFolder,
|
|
25
|
+
wireGuardPath,
|
|
26
|
+
transportPath,
|
|
27
|
+
wireGuardFilename,
|
|
28
|
+
transportFilename: transport?.filename,
|
|
29
|
+
setupInstructions: bundle.setupInstructions,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=vpn-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-files.js","sourceRoot":"","sources":["../../../src/core/vpn/vpn-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,IAAI,EAAE,EAAC,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EACN,sBAAsB,EACtB,4BAA4B,EAC5B,6BAA6B,GAC7B,MAAM,gBAAgB,CAAC;AAWxB,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACpD,MAAuB,EACvB,MAAwB,EACxB,UAGI,EAAE;IAEN,MAAM,UAAU,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAClD,MAAM,iBAAiB,GACtB,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE;QACvB,4BAA4B,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;IAE7D,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,IAAI,aAAiC,CAAC;IACtC,IAAI,SAAS,EAAE,CAAC;QACf,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACN,UAAU;QACV,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,iBAAiB,EAAE,SAAS,EAAE,QAAQ;QACtC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;KAC3C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Hex } from 'viem';
|
|
2
|
+
/** keccak256(abi.encodePacked(nodeKey, hostIpAddress)) — matches continuumdao-node-app vpnHostBinding.ts */
|
|
3
|
+
export declare function computeVpnHostBinding(nodeKey: string, hostIpAddress: string): Hex;
|
|
4
|
+
//# sourceMappingURL=vpn-host-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-host-binding.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/vpn-host-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,GAAG,EAAC,MAAM,MAAM,CAAC;AAEvD,4GAA4G;AAC5G,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,GAAG,CAEjF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { encodePacked, keccak256 } from 'viem';
|
|
2
|
+
/** keccak256(abi.encodePacked(nodeKey, hostIpAddress)) — matches continuumdao-node-app vpnHostBinding.ts */
|
|
3
|
+
export function computeVpnHostBinding(nodeKey, hostIpAddress) {
|
|
4
|
+
return keccak256(encodePacked(['string', 'string'], [nodeKey, hostIpAddress]));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=vpn-host-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-host-binding.js","sourceRoot":"","sources":["../../../src/core/vpn/vpn-host-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,SAAS,EAAW,MAAM,MAAM,CAAC;AAEvD,4GAA4G;AAC5G,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,aAAqB;IAC3E,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
export type VpnProfile = 'split' | 'full';
|
|
2
|
+
export declare const VPN_OBFUSCATION_PROTOCOLS: readonly ["shadowsocks", "wg_obfuscator", "lwo", "udp2raw"];
|
|
3
|
+
export type VpnObfuscationProtocol = (typeof VPN_OBFUSCATION_PROTOCOLS)[number];
|
|
4
|
+
export type VpnObfuscation = 'none' | VpnObfuscationProtocol;
|
|
5
|
+
export type VpnConnectSource = 'admin' | 'egress';
|
|
6
|
+
export declare const VPN_DOWNLOAD_WG_FULL = "cont-full.conf";
|
|
7
|
+
export declare const VPN_DOWNLOAD_WG_SPLIT = "cont-split.conf";
|
|
8
|
+
export declare const VPN_DOWNLOAD_WG_EGRESS = "cont-egress.conf";
|
|
9
|
+
export declare const VPN_DOWNLOAD_SS_LOCAL = "cont-ss.json";
|
|
10
|
+
export declare const VPN_DOWNLOAD_SS_EGRESS = "cont-egss.json";
|
|
11
|
+
export declare const VPN_DOWNLOAD_WG_OBFUSC = "cont-wgo.conf";
|
|
12
|
+
export declare const VPN_DOWNLOAD_LWO_CLIENT = "cont-lwo.json";
|
|
13
|
+
export declare const VPN_DOWNLOAD_UDP2RAW = "cont-u2r.sh";
|
|
14
|
+
export type VpnStatusData = {
|
|
15
|
+
available: boolean;
|
|
16
|
+
installed: boolean;
|
|
17
|
+
active: boolean;
|
|
18
|
+
listenPort: number;
|
|
19
|
+
serverAddress: string;
|
|
20
|
+
vpnNetworkCidr: string;
|
|
21
|
+
endpointHost: string;
|
|
22
|
+
profiles: VpnProfile[];
|
|
23
|
+
clientConfigured: boolean;
|
|
24
|
+
profile?: VpnProfile | '';
|
|
25
|
+
obfuscation?: VpnObfuscation;
|
|
26
|
+
obfuscationAvailable?: boolean;
|
|
27
|
+
availableObfuscations?: VpnObfuscationProtocol[];
|
|
28
|
+
shadowsocksListenPort?: number;
|
|
29
|
+
shadowsocksMethod?: string;
|
|
30
|
+
wgObfuscatorListenPort?: number;
|
|
31
|
+
directWireGuardBlocked?: boolean;
|
|
32
|
+
managementViaVpn?: string;
|
|
33
|
+
message?: string;
|
|
34
|
+
lastError?: string;
|
|
35
|
+
hostProfile?: string;
|
|
36
|
+
vpnBillingRegistered?: boolean;
|
|
37
|
+
vpnBillingMonthActive?: boolean;
|
|
38
|
+
vpnBillingMonthUTC?: number;
|
|
39
|
+
};
|
|
40
|
+
export type VpnClientBundle = {
|
|
41
|
+
profile?: VpnProfile;
|
|
42
|
+
obfuscation?: VpnObfuscation;
|
|
43
|
+
configText?: string;
|
|
44
|
+
wireGuardConfigText?: string;
|
|
45
|
+
transportConfigText?: string;
|
|
46
|
+
transportFilename?: string;
|
|
47
|
+
transportBinary?: string;
|
|
48
|
+
shadowsocksLocalConfigText?: string;
|
|
49
|
+
shadowsocksUri?: string;
|
|
50
|
+
setupInstructions?: string;
|
|
51
|
+
filename?: string;
|
|
52
|
+
shadowsocksLocalFilename?: string;
|
|
53
|
+
localTunnelPort?: number;
|
|
54
|
+
};
|
|
55
|
+
export type VpnTransportBundle = {
|
|
56
|
+
text: string;
|
|
57
|
+
filename: string;
|
|
58
|
+
binary?: string;
|
|
59
|
+
};
|
|
60
|
+
export type VpnSetEnabledResult = {
|
|
61
|
+
message?: string;
|
|
62
|
+
profile?: VpnProfile;
|
|
63
|
+
obfuscation?: VpnObfuscation;
|
|
64
|
+
pendingVpnWritten?: boolean;
|
|
65
|
+
pendingVpnFileError?: string;
|
|
66
|
+
transportError?: string;
|
|
67
|
+
};
|
|
68
|
+
export type VpnEgressStatusData = {
|
|
69
|
+
available: boolean;
|
|
70
|
+
active: boolean;
|
|
71
|
+
sharingEnabled: boolean;
|
|
72
|
+
listenPort: number;
|
|
73
|
+
vpnNetworkCidr: string;
|
|
74
|
+
endpointHost: string;
|
|
75
|
+
obfuscation: VpnObfuscation;
|
|
76
|
+
countryCode: string;
|
|
77
|
+
defaultRateLimitMbps: number;
|
|
78
|
+
shadowsocksListenPort?: number;
|
|
79
|
+
wgObfuscatorListenPort?: number;
|
|
80
|
+
udp2rawListenPort?: number;
|
|
81
|
+
availableObfuscations?: VpnObfuscationProtocol[];
|
|
82
|
+
peerCount?: number;
|
|
83
|
+
message?: string;
|
|
84
|
+
lastError?: string;
|
|
85
|
+
vpnBillingRegistered?: boolean;
|
|
86
|
+
vpnBillingMonthActive?: boolean;
|
|
87
|
+
vpnBillingMonthUTC?: number;
|
|
88
|
+
};
|
|
89
|
+
export type VpnEgressExitPeer = {
|
|
90
|
+
address: string;
|
|
91
|
+
publicKey: string;
|
|
92
|
+
countryCode?: string;
|
|
93
|
+
obfuscation?: VpnObfuscation;
|
|
94
|
+
endpointHost?: string;
|
|
95
|
+
listenPort?: number;
|
|
96
|
+
defaultRateLimitMbps?: number;
|
|
97
|
+
shadowsocksListenPort?: number;
|
|
98
|
+
wgObfuscatorListenPort?: number;
|
|
99
|
+
udp2rawListenPort?: number;
|
|
100
|
+
vpnBillingRegistered?: boolean;
|
|
101
|
+
vpnBillingMonthActive?: boolean;
|
|
102
|
+
vpnBillingMonthUTC?: number;
|
|
103
|
+
};
|
|
104
|
+
export declare function parseVpnObfuscation(raw: unknown): VpnObfuscation;
|
|
105
|
+
export declare function isVpnObfuscated(obfuscation?: VpnObfuscation | string): boolean;
|
|
106
|
+
export declare function parseVpnStatusPayload(data: Record<string, unknown>): VpnStatusData;
|
|
107
|
+
export declare function parseVpnClientConfigPayload(data: Record<string, unknown>): VpnClientBundle;
|
|
108
|
+
export declare function parseVpnSetEnabledPayload(data: Record<string, unknown>): VpnSetEnabledResult;
|
|
109
|
+
export declare function parseVpnEgressStatusPayload(data: Record<string, unknown>): VpnEgressStatusData;
|
|
110
|
+
export declare function parseVpnEgressExitsPayload(data: Record<string, unknown>): VpnEgressExitPeer[];
|
|
111
|
+
export declare function vpnDownloadWireGuardFilename(profile?: VpnProfile | 'egress' | ''): string;
|
|
112
|
+
export declare function vpnDownloadTransportFilename(obfuscation: VpnObfuscation, source: VpnConnectSource): string | undefined;
|
|
113
|
+
export declare function resolveTransportBundle(bundle: VpnClientBundle, source?: VpnConnectSource): VpnTransportBundle | undefined;
|
|
114
|
+
export declare function wireGuardConfigTextFromBundle(bundle: VpnClientBundle): string;
|
|
115
|
+
//# sourceMappingURL=vpn-parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpn-parse.d.ts","sourceRoot":"","sources":["../../../src/core/vpn/vpn-parse.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1C,eAAO,MAAM,yBAAyB,6DAK5B,CAAC;AACX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,sBAAsB,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElD,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AACvD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,UAAU,GAAG,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACjD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,cAAc,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAcF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAEhE;AAED,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAM9E;AA0BD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CA8ClF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CA6B1F;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAoB5F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAgC9F;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,EAAE,CAqC7F;AAED,wBAAgB,4BAA4B,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,EAAE,GAAG,MAAM,CAIzF;AAED,wBAAgB,4BAA4B,CAC3C,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,gBAAgB,GACtB,MAAM,GAAG,SAAS,CAapB;AAED,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,eAAe,EACvB,MAAM,GAAE,gBAA0B,GAChC,kBAAkB,GAAG,SAAS,CAUhC;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE7E"}
|