@aster-rpc/aster 0.1.2
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/capabilities.d.ts +26 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +29 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/client.d.ts +65 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +108 -0
- package/dist/client.js.map +1 -0
- package/dist/codec.d.ts +156 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +477 -0
- package/dist/codec.js.map +1 -0
- package/dist/config.d.ts +102 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +454 -0
- package/dist/config.js.map +1 -0
- package/dist/contract/identity.d.ts +115 -0
- package/dist/contract/identity.d.ts.map +1 -0
- package/dist/contract/identity.js +188 -0
- package/dist/contract/identity.js.map +1 -0
- package/dist/contract/manifest.d.ts +77 -0
- package/dist/contract/manifest.d.ts.map +1 -0
- package/dist/contract/manifest.js +127 -0
- package/dist/contract/manifest.js.map +1 -0
- package/dist/contract/publication.d.ts +71 -0
- package/dist/contract/publication.d.ts.map +1 -0
- package/dist/contract/publication.js +85 -0
- package/dist/contract/publication.js.map +1 -0
- package/dist/decorators.d.ts +139 -0
- package/dist/decorators.d.ts.map +1 -0
- package/dist/decorators.js +175 -0
- package/dist/decorators.js.map +1 -0
- package/dist/dynamic.d.ts +61 -0
- package/dist/dynamic.d.ts.map +1 -0
- package/dist/dynamic.js +147 -0
- package/dist/dynamic.js.map +1 -0
- package/dist/framing.d.ts +74 -0
- package/dist/framing.d.ts.map +1 -0
- package/dist/framing.js +162 -0
- package/dist/framing.js.map +1 -0
- package/dist/health.d.ts +127 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +236 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +101 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/audit.d.ts +25 -0
- package/dist/interceptors/audit.d.ts.map +1 -0
- package/dist/interceptors/audit.js +46 -0
- package/dist/interceptors/audit.js.map +1 -0
- package/dist/interceptors/auth.d.ts +13 -0
- package/dist/interceptors/auth.d.ts.map +1 -0
- package/dist/interceptors/auth.js +34 -0
- package/dist/interceptors/auth.js.map +1 -0
- package/dist/interceptors/base.d.ts +74 -0
- package/dist/interceptors/base.d.ts.map +1 -0
- package/dist/interceptors/base.js +103 -0
- package/dist/interceptors/base.js.map +1 -0
- package/dist/interceptors/capability.d.ts +16 -0
- package/dist/interceptors/capability.d.ts.map +1 -0
- package/dist/interceptors/capability.js +63 -0
- package/dist/interceptors/capability.js.map +1 -0
- package/dist/interceptors/circuit-breaker.d.ts +40 -0
- package/dist/interceptors/circuit-breaker.d.ts.map +1 -0
- package/dist/interceptors/circuit-breaker.js +91 -0
- package/dist/interceptors/circuit-breaker.js.map +1 -0
- package/dist/interceptors/compression.d.ts +11 -0
- package/dist/interceptors/compression.d.ts.map +1 -0
- package/dist/interceptors/compression.js +12 -0
- package/dist/interceptors/compression.js.map +1 -0
- package/dist/interceptors/deadline.d.ts +12 -0
- package/dist/interceptors/deadline.d.ts.map +1 -0
- package/dist/interceptors/deadline.js +28 -0
- package/dist/interceptors/deadline.js.map +1 -0
- package/dist/interceptors/metrics.d.ts +43 -0
- package/dist/interceptors/metrics.d.ts.map +1 -0
- package/dist/interceptors/metrics.js +132 -0
- package/dist/interceptors/metrics.js.map +1 -0
- package/dist/interceptors/rate-limit.d.ts +24 -0
- package/dist/interceptors/rate-limit.d.ts.map +1 -0
- package/dist/interceptors/rate-limit.js +84 -0
- package/dist/interceptors/rate-limit.js.map +1 -0
- package/dist/interceptors/retry.d.ts +25 -0
- package/dist/interceptors/retry.d.ts.map +1 -0
- package/dist/interceptors/retry.js +55 -0
- package/dist/interceptors/retry.js.map +1 -0
- package/dist/limits.d.ts +77 -0
- package/dist/limits.d.ts.map +1 -0
- package/dist/limits.js +137 -0
- package/dist/limits.js.map +1 -0
- package/dist/logging.d.ts +40 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +92 -0
- package/dist/logging.js.map +1 -0
- package/dist/metadata.d.ts +14 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +68 -0
- package/dist/metadata.js.map +1 -0
- package/dist/metrics.d.ts +40 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +92 -0
- package/dist/metrics.js.map +1 -0
- package/dist/peer-store.d.ts +53 -0
- package/dist/peer-store.d.ts.map +1 -0
- package/dist/peer-store.js +105 -0
- package/dist/peer-store.js.map +1 -0
- package/dist/protocol.d.ts +44 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +59 -0
- package/dist/protocol.js.map +1 -0
- package/dist/registration.d.ts +81 -0
- package/dist/registration.d.ts.map +1 -0
- package/dist/registration.js +161 -0
- package/dist/registration.js.map +1 -0
- package/dist/registry/acl.d.ts +57 -0
- package/dist/registry/acl.d.ts.map +1 -0
- package/dist/registry/acl.js +104 -0
- package/dist/registry/acl.js.map +1 -0
- package/dist/registry/client.d.ts +70 -0
- package/dist/registry/client.d.ts.map +1 -0
- package/dist/registry/client.js +115 -0
- package/dist/registry/client.js.map +1 -0
- package/dist/registry/gossip.d.ts +43 -0
- package/dist/registry/gossip.d.ts.map +1 -0
- package/dist/registry/gossip.js +102 -0
- package/dist/registry/gossip.js.map +1 -0
- package/dist/registry/keys.d.ts +25 -0
- package/dist/registry/keys.d.ts.map +1 -0
- package/dist/registry/keys.js +47 -0
- package/dist/registry/keys.js.map +1 -0
- package/dist/registry/models.d.ts +80 -0
- package/dist/registry/models.d.ts.map +1 -0
- package/dist/registry/models.js +35 -0
- package/dist/registry/models.js.map +1 -0
- package/dist/registry/publisher.d.ts +65 -0
- package/dist/registry/publisher.d.ts.map +1 -0
- package/dist/registry/publisher.js +164 -0
- package/dist/registry/publisher.js.map +1 -0
- package/dist/runtime.d.ts +267 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1366 -0
- package/dist/runtime.js.map +1 -0
- package/dist/server.d.ts +100 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +511 -0
- package/dist/server.js.map +1 -0
- package/dist/service.d.ts +72 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +98 -0
- package/dist/service.js.map +1 -0
- package/dist/session.d.ts +64 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +350 -0
- package/dist/session.js.map +1 -0
- package/dist/status.d.ts +113 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +206 -0
- package/dist/status.js.map +1 -0
- package/dist/transport/base.d.ts +46 -0
- package/dist/transport/base.d.ts.map +1 -0
- package/dist/transport/base.js +10 -0
- package/dist/transport/base.js.map +1 -0
- package/dist/transport/iroh.d.ts +45 -0
- package/dist/transport/iroh.d.ts.map +1 -0
- package/dist/transport/iroh.js +225 -0
- package/dist/transport/iroh.js.map +1 -0
- package/dist/transport/local.d.ts +48 -0
- package/dist/transport/local.d.ts.map +1 -0
- package/dist/transport/local.js +139 -0
- package/dist/transport/local.js.map +1 -0
- package/dist/trust/admission.d.ts +60 -0
- package/dist/trust/admission.d.ts.map +1 -0
- package/dist/trust/admission.js +149 -0
- package/dist/trust/admission.js.map +1 -0
- package/dist/trust/bootstrap.d.ts +109 -0
- package/dist/trust/bootstrap.d.ts.map +1 -0
- package/dist/trust/bootstrap.js +311 -0
- package/dist/trust/bootstrap.js.map +1 -0
- package/dist/trust/clock.d.ts +93 -0
- package/dist/trust/clock.d.ts.map +1 -0
- package/dist/trust/clock.js +154 -0
- package/dist/trust/clock.js.map +1 -0
- package/dist/trust/consumer.d.ts +139 -0
- package/dist/trust/consumer.d.ts.map +1 -0
- package/dist/trust/consumer.js +323 -0
- package/dist/trust/consumer.js.map +1 -0
- package/dist/trust/credentials.d.ts +98 -0
- package/dist/trust/credentials.d.ts.map +1 -0
- package/dist/trust/credentials.js +250 -0
- package/dist/trust/credentials.js.map +1 -0
- package/dist/trust/delegated.d.ts +118 -0
- package/dist/trust/delegated.d.ts.map +1 -0
- package/dist/trust/delegated.js +292 -0
- package/dist/trust/delegated.js.map +1 -0
- package/dist/trust/gossip.d.ts +146 -0
- package/dist/trust/gossip.d.ts.map +1 -0
- package/dist/trust/gossip.js +334 -0
- package/dist/trust/gossip.js.map +1 -0
- package/dist/trust/hooks.d.ts +84 -0
- package/dist/trust/hooks.d.ts.map +1 -0
- package/dist/trust/hooks.js +125 -0
- package/dist/trust/hooks.js.map +1 -0
- package/dist/trust/iid.d.ts +65 -0
- package/dist/trust/iid.d.ts.map +1 -0
- package/dist/trust/iid.js +104 -0
- package/dist/trust/iid.js.map +1 -0
- package/dist/trust/mesh.d.ts +43 -0
- package/dist/trust/mesh.d.ts.map +1 -0
- package/dist/trust/mesh.js +105 -0
- package/dist/trust/mesh.js.map +1 -0
- package/dist/trust/nonce.d.ts +39 -0
- package/dist/trust/nonce.d.ts.map +1 -0
- package/dist/trust/nonce.js +46 -0
- package/dist/trust/nonce.js.map +1 -0
- package/dist/trust/producer.d.ts +80 -0
- package/dist/trust/producer.d.ts.map +1 -0
- package/dist/trust/producer.js +151 -0
- package/dist/trust/producer.js.map +1 -0
- package/dist/trust/rcan.d.ts +29 -0
- package/dist/trust/rcan.d.ts.map +1 -0
- package/dist/trust/rcan.js +57 -0
- package/dist/trust/rcan.js.map +1 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +50 -0
- package/dist/types.js.map +1 -0
- package/dist/xlang.d.ts +26 -0
- package/dist/xlang.d.ts.map +1 -0
- package/dist/xlang.js +55 -0
- package/dist/xlang.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegated.js","sourceRoot":"","sources":["../../src/trust/delegated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Producer mesh gossip: signing, verification, message handling, heartbeat.
|
|
3
|
+
*
|
|
4
|
+
* Spec reference: Aster-trust-spec.md S2.3, S2.6. Plan: ASTER_PLAN.md S14.2-14.6.
|
|
5
|
+
*
|
|
6
|
+
* NOT to be confused with registry/gossip.ts which handles service discovery gossip.
|
|
7
|
+
* This module handles the producer mesh gossip protocol -- signing, verification,
|
|
8
|
+
* message dispatch, and lease heartbeat.
|
|
9
|
+
*
|
|
10
|
+
* Canonical signing bytes (normative -- S2.6, ASTER_PLAN.md S14.2):
|
|
11
|
+
*
|
|
12
|
+
* u8(type) || payload || sender.encode('utf-8') || u64_be(epoch_ms)
|
|
13
|
+
*
|
|
14
|
+
* Do NOT reorder epoch_ms before sender+payload -- the spec fixes this
|
|
15
|
+
* byte order and any deviation breaks cross-implementation verification.
|
|
16
|
+
*
|
|
17
|
+
* Topic derivation (S2.3):
|
|
18
|
+
*
|
|
19
|
+
* blake3(root_pubkey + "aster-producer-mesh" + salt).digest().slice(0, 32)
|
|
20
|
+
*/
|
|
21
|
+
import type { MeshState } from './mesh.js';
|
|
22
|
+
import type { ClockDriftTracker } from './clock.js';
|
|
23
|
+
export interface ProducerMessage {
|
|
24
|
+
type: number;
|
|
25
|
+
payload: Uint8Array;
|
|
26
|
+
sender: string;
|
|
27
|
+
epochMs: number;
|
|
28
|
+
signature: Uint8Array;
|
|
29
|
+
}
|
|
30
|
+
export declare enum ProducerMessageType {
|
|
31
|
+
INTRODUCE = 1,
|
|
32
|
+
DEPART = 2,
|
|
33
|
+
CONTRACT_PUBLISHED = 3,
|
|
34
|
+
LEASE_UPDATE = 4
|
|
35
|
+
}
|
|
36
|
+
export interface ContractPublishedPayload {
|
|
37
|
+
serviceName: string;
|
|
38
|
+
version: number;
|
|
39
|
+
contractCollectionHash: string;
|
|
40
|
+
}
|
|
41
|
+
export interface LeaseUpdatePayload {
|
|
42
|
+
serviceName: string;
|
|
43
|
+
version: number;
|
|
44
|
+
contractId: string;
|
|
45
|
+
healthStatus: string;
|
|
46
|
+
addressingInfo: Record<string, string>;
|
|
47
|
+
}
|
|
48
|
+
export interface HandleMessageOptions {
|
|
49
|
+
state: MeshState;
|
|
50
|
+
config: {
|
|
51
|
+
replayWindowMs: number;
|
|
52
|
+
};
|
|
53
|
+
peerPubkeys: Map<string, Uint8Array>;
|
|
54
|
+
registryCallback?: (eventType: string, payload: ContractPublishedPayload | LeaseUpdatePayload) => void;
|
|
55
|
+
driftTracker?: ClockDriftTracker;
|
|
56
|
+
onSelfDeparture?: () => void;
|
|
57
|
+
logger?: {
|
|
58
|
+
info(...args: unknown[]): void;
|
|
59
|
+
warn(...args: unknown[]): void;
|
|
60
|
+
debug(...args: unknown[]): void;
|
|
61
|
+
error(...args: unknown[]): void;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Derive the 32-byte gossip topic for the producer mesh.
|
|
66
|
+
*
|
|
67
|
+
* blake3(root_pubkey + "aster-producer-mesh" + salt).slice(0, 32)
|
|
68
|
+
*
|
|
69
|
+
* Falls back to sha256 if blake3 is not available.
|
|
70
|
+
*/
|
|
71
|
+
export declare function deriveGossipTopic(rootPubkey: Uint8Array, salt: Uint8Array): Promise<Uint8Array>;
|
|
72
|
+
/**
|
|
73
|
+
* Return the canonical bytes that are signed / verified.
|
|
74
|
+
*
|
|
75
|
+
* Normative byte order (S2.6):
|
|
76
|
+
* u8(type) || payload || sender.encode('utf-8') || u64_be(epoch_ms)
|
|
77
|
+
*/
|
|
78
|
+
export declare function producerMessageSigningBytes(msgType: number, payload: Uint8Array, sender: string, epochMs: number): Uint8Array;
|
|
79
|
+
/**
|
|
80
|
+
* Create and sign a ProducerMessage.
|
|
81
|
+
*
|
|
82
|
+
* @param msgType ProducerMessageType integer value.
|
|
83
|
+
* @param payload Serialized per-type payload bytes.
|
|
84
|
+
* @param sender This node's endpoint_id (hex string).
|
|
85
|
+
* @param epochMs Wall-clock timestamp in milliseconds.
|
|
86
|
+
* @param signingKeyRaw 32-byte raw ed25519 private key seed.
|
|
87
|
+
* @returns A fully signed ProducerMessage.
|
|
88
|
+
*/
|
|
89
|
+
export declare function signProducerMessage(msgType: number, payload: Uint8Array, sender: string, epochMs: number, signingKeyRaw: Uint8Array): Promise<ProducerMessage>;
|
|
90
|
+
/**
|
|
91
|
+
* Verify a ProducerMessage's signature against the sender's public key.
|
|
92
|
+
*
|
|
93
|
+
* @returns true on success, false on any verification failure.
|
|
94
|
+
*/
|
|
95
|
+
export declare function verifyProducerMessage(msg: ProducerMessage, peerPubkeyRaw: Uint8Array): Promise<boolean>;
|
|
96
|
+
/**
|
|
97
|
+
* Process one inbound ProducerMessage.
|
|
98
|
+
*
|
|
99
|
+
* Normative processing order (S2.6, S2.10):
|
|
100
|
+
* 1. Replay-window check.
|
|
101
|
+
* 2. Sender membership check.
|
|
102
|
+
* 3. Signature verification.
|
|
103
|
+
* 4. Track clock offset / run drift detection.
|
|
104
|
+
* 5. Dispatch by message type.
|
|
105
|
+
*
|
|
106
|
+
* @returns true if the message was accepted and dispatched, false otherwise.
|
|
107
|
+
*/
|
|
108
|
+
export declare function handleProducerMessage(msg: ProducerMessage, opts: HandleMessageOptions): Promise<boolean>;
|
|
109
|
+
/** Encode IntroducePayload. The rcan grant is stored as raw bytes. */
|
|
110
|
+
export declare function encodeIntroducePayload(rcan: Uint8Array): Uint8Array;
|
|
111
|
+
/** Encode DepartPayload as UTF-8 JSON. */
|
|
112
|
+
export declare function encodeDepartPayload(reason?: string): Uint8Array;
|
|
113
|
+
/** Encode ContractPublishedPayload as UTF-8 JSON. */
|
|
114
|
+
export declare function encodeContractPublishedPayload(serviceName: string, version: number, contractCollectionHash: string): Uint8Array;
|
|
115
|
+
/** Encode LeaseUpdatePayload as UTF-8 JSON. */
|
|
116
|
+
export declare function encodeLeaseUpdatePayload(serviceName: string, version: number, contractId: string, healthStatus: string, addressingInfo?: Record<string, string>): Uint8Array;
|
|
117
|
+
export interface StartLeaseHeartbeatOptions {
|
|
118
|
+
/** A gossip topic handle with a broadcast(data: Uint8Array) method. */
|
|
119
|
+
gossipTopicHandle: {
|
|
120
|
+
broadcast(data: Uint8Array): Promise<void>;
|
|
121
|
+
};
|
|
122
|
+
sender: string;
|
|
123
|
+
signingKeyRaw: Uint8Array;
|
|
124
|
+
serviceName: string;
|
|
125
|
+
version: number;
|
|
126
|
+
contractId: string;
|
|
127
|
+
healthGetter: () => string;
|
|
128
|
+
heartbeatIntervalMs?: number;
|
|
129
|
+
addressingInfo?: Record<string, string>;
|
|
130
|
+
logger?: HandleMessageOptions['logger'];
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Sign and broadcast a single LEASE_UPDATE message.
|
|
134
|
+
*/
|
|
135
|
+
export declare function runLeaseHeartbeat(gossipTopicHandle: {
|
|
136
|
+
broadcast(data: Uint8Array): Promise<void>;
|
|
137
|
+
}, sender: string, signingKeyRaw: Uint8Array, serviceName: string, version: number, contractId: string, healthGetter: () => string, addressingInfo?: Record<string, string>, logger?: HandleMessageOptions['logger']): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Spawn a periodic lease heartbeat that broadcasts LEASE_UPDATE messages.
|
|
140
|
+
*
|
|
141
|
+
* @returns An object with a stop() method to cancel the heartbeat.
|
|
142
|
+
*/
|
|
143
|
+
export declare function startLeaseHeartbeat(opts: StartLeaseHeartbeatOptions): {
|
|
144
|
+
stop: () => void;
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=gossip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gossip.d.ts","sourceRoot":"","sources":["../../src/trust/gossip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Producer mesh gossip: signing, verification, message handling, heartbeat.
|
|
3
|
+
*
|
|
4
|
+
* Spec reference: Aster-trust-spec.md S2.3, S2.6. Plan: ASTER_PLAN.md S14.2-14.6.
|
|
5
|
+
*
|
|
6
|
+
* NOT to be confused with registry/gossip.ts which handles service discovery gossip.
|
|
7
|
+
* This module handles the producer mesh gossip protocol -- signing, verification,
|
|
8
|
+
* message dispatch, and lease heartbeat.
|
|
9
|
+
*
|
|
10
|
+
* Canonical signing bytes (normative -- S2.6, ASTER_PLAN.md S14.2):
|
|
11
|
+
*
|
|
12
|
+
* u8(type) || payload || sender.encode('utf-8') || u64_be(epoch_ms)
|
|
13
|
+
*
|
|
14
|
+
* Do NOT reorder epoch_ms before sender+payload -- the spec fixes this
|
|
15
|
+
* byte order and any deviation breaks cross-implementation verification.
|
|
16
|
+
*
|
|
17
|
+
* Topic derivation (S2.3):
|
|
18
|
+
*
|
|
19
|
+
* blake3(root_pubkey + "aster-producer-mesh" + salt).digest().slice(0, 32)
|
|
20
|
+
*/
|
|
21
|
+
import { sign, verify, concatBytes, bytesToHex } from './credentials.js';
|
|
22
|
+
import { validateRcan } from './rcan.js';
|
|
23
|
+
// ── Hash backend (lazy-cached) ──────────────────────────────────────────────
|
|
24
|
+
let _blake3;
|
|
25
|
+
let _nodeCreateHash;
|
|
26
|
+
async function getBlake3() {
|
|
27
|
+
if (_blake3 !== undefined)
|
|
28
|
+
return _blake3;
|
|
29
|
+
try {
|
|
30
|
+
// @ts-ignore — optional dependency
|
|
31
|
+
const mod = await import('@noble/hashes/blake3');
|
|
32
|
+
_blake3 = mod.blake3;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
_blake3 = null;
|
|
36
|
+
}
|
|
37
|
+
return _blake3;
|
|
38
|
+
}
|
|
39
|
+
async function getCreateHash() {
|
|
40
|
+
if (_nodeCreateHash)
|
|
41
|
+
return _nodeCreateHash;
|
|
42
|
+
const { createHash } = await import('node:crypto');
|
|
43
|
+
_nodeCreateHash = createHash;
|
|
44
|
+
return _nodeCreateHash;
|
|
45
|
+
}
|
|
46
|
+
export var ProducerMessageType;
|
|
47
|
+
(function (ProducerMessageType) {
|
|
48
|
+
ProducerMessageType[ProducerMessageType["INTRODUCE"] = 1] = "INTRODUCE";
|
|
49
|
+
ProducerMessageType[ProducerMessageType["DEPART"] = 2] = "DEPART";
|
|
50
|
+
ProducerMessageType[ProducerMessageType["CONTRACT_PUBLISHED"] = 3] = "CONTRACT_PUBLISHED";
|
|
51
|
+
ProducerMessageType[ProducerMessageType["LEASE_UPDATE"] = 4] = "LEASE_UPDATE";
|
|
52
|
+
})(ProducerMessageType || (ProducerMessageType = {}));
|
|
53
|
+
/** Maximum gossip payload size (matches Python aster.limits.MAX_GOSSIP_PAYLOAD_SIZE). */
|
|
54
|
+
const MAX_GOSSIP_PAYLOAD_SIZE = 64 * 1024;
|
|
55
|
+
// ── Topic derivation ────────────────────────────────────────────────────────
|
|
56
|
+
/**
|
|
57
|
+
* Derive the 32-byte gossip topic for the producer mesh.
|
|
58
|
+
*
|
|
59
|
+
* blake3(root_pubkey + "aster-producer-mesh" + salt).slice(0, 32)
|
|
60
|
+
*
|
|
61
|
+
* Falls back to sha256 if blake3 is not available.
|
|
62
|
+
*/
|
|
63
|
+
export async function deriveGossipTopic(rootPubkey, salt) {
|
|
64
|
+
const label = new TextEncoder().encode('aster-producer-mesh');
|
|
65
|
+
const data = concatBytes([rootPubkey, label, salt]);
|
|
66
|
+
const blake3 = await getBlake3();
|
|
67
|
+
if (blake3) {
|
|
68
|
+
return blake3(data, { dkLen: 32 });
|
|
69
|
+
}
|
|
70
|
+
// Fallback: sha256 via node:crypto (note: Python uses blake3)
|
|
71
|
+
const createHash = await getCreateHash();
|
|
72
|
+
const hash = createHash('sha256').update(data).digest();
|
|
73
|
+
return new Uint8Array(hash.buffer, hash.byteOffset, 32);
|
|
74
|
+
}
|
|
75
|
+
// ── Canonical signing bytes ─────────────────────────────────────────────────
|
|
76
|
+
/**
|
|
77
|
+
* Return the canonical bytes that are signed / verified.
|
|
78
|
+
*
|
|
79
|
+
* Normative byte order (S2.6):
|
|
80
|
+
* u8(type) || payload || sender.encode('utf-8') || u64_be(epoch_ms)
|
|
81
|
+
*/
|
|
82
|
+
export function producerMessageSigningBytes(msgType, payload, sender, epochMs) {
|
|
83
|
+
const typeByte = new Uint8Array([msgType & 0xff]);
|
|
84
|
+
const senderBytes = new TextEncoder().encode(sender);
|
|
85
|
+
const epochBytes = writeU64BE(epochMs);
|
|
86
|
+
return concatBytes([typeByte, payload, senderBytes, epochBytes]);
|
|
87
|
+
}
|
|
88
|
+
/** u64 big-endian encoding. */
|
|
89
|
+
function writeU64BE(value) {
|
|
90
|
+
const buf = new ArrayBuffer(8);
|
|
91
|
+
const view = new DataView(buf);
|
|
92
|
+
view.setUint32(0, Math.floor(value / 0x100000000));
|
|
93
|
+
view.setUint32(4, value >>> 0);
|
|
94
|
+
return new Uint8Array(buf);
|
|
95
|
+
}
|
|
96
|
+
// ── Sign / verify ───────────────────────────────────────────────────────────
|
|
97
|
+
/**
|
|
98
|
+
* Create and sign a ProducerMessage.
|
|
99
|
+
*
|
|
100
|
+
* @param msgType ProducerMessageType integer value.
|
|
101
|
+
* @param payload Serialized per-type payload bytes.
|
|
102
|
+
* @param sender This node's endpoint_id (hex string).
|
|
103
|
+
* @param epochMs Wall-clock timestamp in milliseconds.
|
|
104
|
+
* @param signingKeyRaw 32-byte raw ed25519 private key seed.
|
|
105
|
+
* @returns A fully signed ProducerMessage.
|
|
106
|
+
*/
|
|
107
|
+
export async function signProducerMessage(msgType, payload, sender, epochMs, signingKeyRaw) {
|
|
108
|
+
const toSign = producerMessageSigningBytes(msgType, payload, sender, epochMs);
|
|
109
|
+
const signature = await sign(signingKeyRaw, toSign);
|
|
110
|
+
return {
|
|
111
|
+
type: msgType,
|
|
112
|
+
payload,
|
|
113
|
+
sender,
|
|
114
|
+
epochMs,
|
|
115
|
+
signature,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Verify a ProducerMessage's signature against the sender's public key.
|
|
120
|
+
*
|
|
121
|
+
* @returns true on success, false on any verification failure.
|
|
122
|
+
*/
|
|
123
|
+
export async function verifyProducerMessage(msg, peerPubkeyRaw) {
|
|
124
|
+
try {
|
|
125
|
+
const toVerify = producerMessageSigningBytes(msg.type, msg.payload, msg.sender, msg.epochMs);
|
|
126
|
+
return await verify(peerPubkeyRaw, toVerify, msg.signature);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// ── Gossip handler ──────────────────────────────────────────────────────────
|
|
133
|
+
/**
|
|
134
|
+
* Process one inbound ProducerMessage.
|
|
135
|
+
*
|
|
136
|
+
* Normative processing order (S2.6, S2.10):
|
|
137
|
+
* 1. Replay-window check.
|
|
138
|
+
* 2. Sender membership check.
|
|
139
|
+
* 3. Signature verification.
|
|
140
|
+
* 4. Track clock offset / run drift detection.
|
|
141
|
+
* 5. Dispatch by message type.
|
|
142
|
+
*
|
|
143
|
+
* @returns true if the message was accepted and dispatched, false otherwise.
|
|
144
|
+
*/
|
|
145
|
+
export async function handleProducerMessage(msg, opts) {
|
|
146
|
+
const { state, config, peerPubkeys, registryCallback, driftTracker, onSelfDeparture, logger } = opts;
|
|
147
|
+
const nowMs = Date.now();
|
|
148
|
+
// 1. Replay-window check
|
|
149
|
+
const delta = Math.abs(nowMs - msg.epochMs);
|
|
150
|
+
if (delta > config.replayWindowMs) {
|
|
151
|
+
logger?.debug('gossip: dropping message from %s (outside replay window: delta=%dms)', msg.sender, delta);
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
// 2. Sender membership check
|
|
155
|
+
if (!state.isPeerAccepted(msg.sender)) {
|
|
156
|
+
logger?.warn('gossip: SECURITY ALERT -- message from non-accepted sender %s; ' +
|
|
157
|
+
'possible salt leak or deauthorized node still subscribed', msg.sender);
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
// 3. Signature verification
|
|
161
|
+
const peerPubkey = peerPubkeys.get(msg.sender);
|
|
162
|
+
if (peerPubkey == null) {
|
|
163
|
+
logger?.warn('gossip: SECURITY ALERT -- no public key for accepted sender %s; dropping message', msg.sender);
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
if (!(await verifyProducerMessage(msg, peerPubkey))) {
|
|
167
|
+
logger?.warn('gossip: SECURITY ALERT -- invalid signature from accepted sender %s', msg.sender);
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
// 4. Clock offset tracking + drift detection
|
|
171
|
+
if (driftTracker != null) {
|
|
172
|
+
const newlyIsolated = driftTracker.update(msg.sender, msg.epochMs);
|
|
173
|
+
if (newlyIsolated) {
|
|
174
|
+
logger?.warn('gossip: peer %s clock drift exceeds tolerance; isolating', msg.sender);
|
|
175
|
+
}
|
|
176
|
+
else if (!driftTracker.isIsolated(msg.sender)) {
|
|
177
|
+
// Peer recovered -- already handled by driftTracker.update
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// 5. Message dispatch
|
|
181
|
+
switch (msg.type) {
|
|
182
|
+
case ProducerMessageType.INTRODUCE:
|
|
183
|
+
_handleIntroduce(msg, state, logger);
|
|
184
|
+
break;
|
|
185
|
+
case ProducerMessageType.DEPART:
|
|
186
|
+
_handleDepart(msg, state, driftTracker, onSelfDeparture, logger);
|
|
187
|
+
break;
|
|
188
|
+
case ProducerMessageType.CONTRACT_PUBLISHED:
|
|
189
|
+
_handleContractPublished(msg, state, driftTracker, registryCallback, logger);
|
|
190
|
+
break;
|
|
191
|
+
case ProducerMessageType.LEASE_UPDATE:
|
|
192
|
+
_handleLeaseUpdate(msg, state, driftTracker, registryCallback, logger);
|
|
193
|
+
break;
|
|
194
|
+
default:
|
|
195
|
+
logger?.debug('gossip: unknown message type %d from %s; dropping', msg.type, msg.sender);
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
// ── Type-specific dispatch helpers ──────────────────────────────────────────
|
|
201
|
+
function _handleIntroduce(msg, state, logger) {
|
|
202
|
+
const [ok, reason] = validateRcan(msg.payload);
|
|
203
|
+
if (!ok) {
|
|
204
|
+
logger?.debug('gossip: Introduce from %s has invalid rcan: %s', msg.sender, reason);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
state.addPeer(msg.sender);
|
|
208
|
+
logger?.info('gossip: Introduce accepted -- %s joined the mesh', msg.sender);
|
|
209
|
+
}
|
|
210
|
+
function _handleDepart(msg, state, driftTracker, onSelfDeparture, logger) {
|
|
211
|
+
state.remove(msg.sender);
|
|
212
|
+
driftTracker?.removePeer(msg.sender);
|
|
213
|
+
logger?.info('gossip: Depart -- %s left the mesh', msg.sender);
|
|
214
|
+
void onSelfDeparture; // used by caller for self-departure detection
|
|
215
|
+
}
|
|
216
|
+
function _handleContractPublished(msg, _state, driftTracker, registryCallback, logger) {
|
|
217
|
+
if (driftTracker?.isIsolated(msg.sender)) {
|
|
218
|
+
logger?.debug('gossip: ContractPublished from drift-isolated peer %s; skipping', msg.sender);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (registryCallback != null) {
|
|
222
|
+
try {
|
|
223
|
+
if (msg.payload.length > MAX_GOSSIP_PAYLOAD_SIZE) {
|
|
224
|
+
logger?.warn('gossip: payload too large (%d bytes), dropping', msg.payload.length);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
const d = JSON.parse(new TextDecoder().decode(msg.payload));
|
|
228
|
+
const payload = {
|
|
229
|
+
serviceName: d.service_name,
|
|
230
|
+
version: Number(d.version),
|
|
231
|
+
contractCollectionHash: d.contract_collection_hash,
|
|
232
|
+
};
|
|
233
|
+
registryCallback('contract_published', payload);
|
|
234
|
+
}
|
|
235
|
+
catch (exc) {
|
|
236
|
+
logger?.debug('gossip: malformed ContractPublished payload: %s', exc);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
function _handleLeaseUpdate(msg, _state, driftTracker, registryCallback, logger) {
|
|
241
|
+
if (driftTracker?.isIsolated(msg.sender)) {
|
|
242
|
+
logger?.debug('gossip: LeaseUpdate from drift-isolated peer %s; skipping', msg.sender);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
if (registryCallback != null) {
|
|
246
|
+
try {
|
|
247
|
+
if (msg.payload.length > MAX_GOSSIP_PAYLOAD_SIZE) {
|
|
248
|
+
logger?.warn('gossip: LeaseUpdate payload too large (%d bytes)', msg.payload.length);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const d = JSON.parse(new TextDecoder().decode(msg.payload));
|
|
252
|
+
const payload = {
|
|
253
|
+
serviceName: d.service_name,
|
|
254
|
+
version: Number(d.version),
|
|
255
|
+
contractId: d.contract_id,
|
|
256
|
+
healthStatus: d.health_status,
|
|
257
|
+
addressingInfo: d.addressing_info ?? {},
|
|
258
|
+
};
|
|
259
|
+
registryCallback('lease_update', payload);
|
|
260
|
+
}
|
|
261
|
+
catch (exc) {
|
|
262
|
+
logger?.debug('gossip: malformed LeaseUpdate payload: %s', exc);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// ── Payload serializers (JSON-based for Phase 12) ───────────────────────────
|
|
267
|
+
/** Encode IntroducePayload. The rcan grant is stored as raw bytes. */
|
|
268
|
+
export function encodeIntroducePayload(rcan) {
|
|
269
|
+
return rcan;
|
|
270
|
+
}
|
|
271
|
+
/** Encode DepartPayload as UTF-8 JSON. */
|
|
272
|
+
export function encodeDepartPayload(reason = '') {
|
|
273
|
+
return new TextEncoder().encode(JSON.stringify({ reason }));
|
|
274
|
+
}
|
|
275
|
+
/** Encode ContractPublishedPayload as UTF-8 JSON. */
|
|
276
|
+
export function encodeContractPublishedPayload(serviceName, version, contractCollectionHash) {
|
|
277
|
+
return new TextEncoder().encode(JSON.stringify({
|
|
278
|
+
service_name: serviceName,
|
|
279
|
+
version,
|
|
280
|
+
contract_collection_hash: contractCollectionHash,
|
|
281
|
+
}));
|
|
282
|
+
}
|
|
283
|
+
/** Encode LeaseUpdatePayload as UTF-8 JSON. */
|
|
284
|
+
export function encodeLeaseUpdatePayload(serviceName, version, contractId, healthStatus, addressingInfo = {}) {
|
|
285
|
+
return new TextEncoder().encode(JSON.stringify({
|
|
286
|
+
service_name: serviceName,
|
|
287
|
+
version,
|
|
288
|
+
contract_id: contractId,
|
|
289
|
+
health_status: healthStatus,
|
|
290
|
+
addressing_info: addressingInfo,
|
|
291
|
+
}));
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Sign and broadcast a single LEASE_UPDATE message.
|
|
295
|
+
*/
|
|
296
|
+
export async function runLeaseHeartbeat(gossipTopicHandle, sender, signingKeyRaw, serviceName, version, contractId, healthGetter, addressingInfo = {}, logger) {
|
|
297
|
+
const epochMs = Date.now();
|
|
298
|
+
const payload = encodeLeaseUpdatePayload(serviceName, version, contractId, healthGetter(), addressingInfo);
|
|
299
|
+
const msg = await signProducerMessage(ProducerMessageType.LEASE_UPDATE, payload, sender, epochMs, signingKeyRaw);
|
|
300
|
+
// Serialize the signed envelope as JSON for the gossip wire.
|
|
301
|
+
const wire = new TextEncoder().encode(JSON.stringify({
|
|
302
|
+
type: msg.type,
|
|
303
|
+
payload: bytesToHex(msg.payload),
|
|
304
|
+
sender: msg.sender,
|
|
305
|
+
epoch_ms: msg.epochMs,
|
|
306
|
+
signature: bytesToHex(msg.signature),
|
|
307
|
+
}));
|
|
308
|
+
try {
|
|
309
|
+
await gossipTopicHandle.broadcast(wire);
|
|
310
|
+
logger?.debug('heartbeat: LeaseUpdate broadcast for %s v%d (epoch=%d)', serviceName, version, epochMs);
|
|
311
|
+
}
|
|
312
|
+
catch (exc) {
|
|
313
|
+
logger?.warn('heartbeat: broadcast failed: %s', exc);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Spawn a periodic lease heartbeat that broadcasts LEASE_UPDATE messages.
|
|
318
|
+
*
|
|
319
|
+
* @returns An object with a stop() method to cancel the heartbeat.
|
|
320
|
+
*/
|
|
321
|
+
export function startLeaseHeartbeat(opts) {
|
|
322
|
+
const { gossipTopicHandle, sender, signingKeyRaw, serviceName, version, contractId, healthGetter, heartbeatIntervalMs = 900_000, addressingInfo = {}, logger, } = opts;
|
|
323
|
+
const timer = setInterval(() => {
|
|
324
|
+
runLeaseHeartbeat(gossipTopicHandle, sender, signingKeyRaw, serviceName, version, contractId, healthGetter, addressingInfo, logger).catch((err) => {
|
|
325
|
+
logger?.warn('heartbeat: tick failed: %s', err);
|
|
326
|
+
});
|
|
327
|
+
}, heartbeatIntervalMs);
|
|
328
|
+
return {
|
|
329
|
+
stop() {
|
|
330
|
+
clearInterval(timer);
|
|
331
|
+
},
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=gossip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gossip.js","sourceRoot":"","sources":["../../src/trust/gossip.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gate 0 connection hooks — ALPN-level connection gating.
|
|
3
|
+
*
|
|
4
|
+
* Spec reference: Aster-trust-spec.md
|
|
5
|
+
*
|
|
6
|
+
* The MeshEndpointHook runs a background loop reading hook events
|
|
7
|
+
* from the IrohNode and accepting/denying connections based on
|
|
8
|
+
* admission policy.
|
|
9
|
+
*/
|
|
10
|
+
/** Hook decision: allow or deny a connection. */
|
|
11
|
+
export interface HookDecision {
|
|
12
|
+
allow: boolean;
|
|
13
|
+
errorCode?: number;
|
|
14
|
+
reason?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Connection gating policy.
|
|
18
|
+
* Implement this to customize which connections are accepted.
|
|
19
|
+
*/
|
|
20
|
+
export interface ConnectionPolicy {
|
|
21
|
+
/** Called before a connection is established. */
|
|
22
|
+
onBeforeConnect(remoteEndpointId: string, alpn: Uint8Array): Promise<HookDecision>;
|
|
23
|
+
}
|
|
24
|
+
/** Default policy: allow all connections. */
|
|
25
|
+
export declare class AllowAllPolicy implements ConnectionPolicy {
|
|
26
|
+
onBeforeConnect(): Promise<HookDecision>;
|
|
27
|
+
}
|
|
28
|
+
/** Policy that denies all connections. */
|
|
29
|
+
export declare class DenyAllPolicy implements ConnectionPolicy {
|
|
30
|
+
onBeforeConnect(): Promise<HookDecision>;
|
|
31
|
+
}
|
|
32
|
+
/** Admission ALPN for producer enrollment. */
|
|
33
|
+
export declare const PRODUCER_ADMISSION_ALPN: Uint8Array;
|
|
34
|
+
/** Admission ALPN for consumer enrollment. */
|
|
35
|
+
export declare const CONSUMER_ADMISSION_ALPN: Uint8Array;
|
|
36
|
+
/**
|
|
37
|
+
* Connection-level admission gate (Gate 0, S3.3).
|
|
38
|
+
*
|
|
39
|
+
* Maintains an allowlist of admitted peer endpoint IDs. The decision logic is:
|
|
40
|
+
*
|
|
41
|
+
* - Admission ALPNs (aster.producer_admission, aster.consumer_admission)
|
|
42
|
+
* -> always allow (credential presentation must be possible).
|
|
43
|
+
* - Any other ALPN, peer in admitted set -> allow.
|
|
44
|
+
* - Any other ALPN, peer NOT in admitted and allowUnenrolled=false -> deny.
|
|
45
|
+
* - allowUnenrolled=true -> allow all (local/dev mode; must be explicit opt-in).
|
|
46
|
+
*/
|
|
47
|
+
export declare class MeshEndpointHook {
|
|
48
|
+
readonly admitted: Set<string>;
|
|
49
|
+
readonly allowUnenrolled: boolean;
|
|
50
|
+
private _peerStore?;
|
|
51
|
+
constructor(allowUnenrolled?: boolean, peerStore?: {
|
|
52
|
+
get(endpointId: string): unknown | undefined;
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Return true if this connection should be allowed.
|
|
56
|
+
*
|
|
57
|
+
* @param remoteEndpointId - NodeId of the connecting peer (from handshake).
|
|
58
|
+
* @param alpn - ALPN negotiated for this connection (Uint8Array).
|
|
59
|
+
*/
|
|
60
|
+
shouldAllow(remoteEndpointId: string, alpn: Uint8Array): boolean;
|
|
61
|
+
/** Add a peer to the admitted set after successful credential check. */
|
|
62
|
+
addPeer(endpointId: string): void;
|
|
63
|
+
/** Remove a peer from the admitted set (e.g., on lease expiry). */
|
|
64
|
+
removePeer(endpointId: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Background loop: poll hookReceiver and apply Gate 0 decisions.
|
|
67
|
+
*
|
|
68
|
+
* Wires this hook to Iroh's Phase 1b HookReceiver. Run via a detached
|
|
69
|
+
* promise after obtaining the receiver from netClient.takeHookReceiver().
|
|
70
|
+
*
|
|
71
|
+
* @param hookReceiver - An object with recvBeforeConnect() that returns
|
|
72
|
+
* { info: { remoteEndpointId: string; alpn: Uint8Array }, respond(d: HookDecision): Promise<void> } | null
|
|
73
|
+
*/
|
|
74
|
+
runHookLoop(hookReceiver: {
|
|
75
|
+
recvBeforeConnect(): Promise<{
|
|
76
|
+
info: {
|
|
77
|
+
remoteEndpointId: string;
|
|
78
|
+
alpn: Uint8Array;
|
|
79
|
+
};
|
|
80
|
+
respond(decision: HookDecision): Promise<void>;
|
|
81
|
+
} | null>;
|
|
82
|
+
}): Promise<void>;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/trust/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,eAAe,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACpF;AAED,6CAA6C;AAC7C,qBAAa,cAAe,YAAW,gBAAgB;IAC/C,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;CAG/C;AAED,0CAA0C;AAC1C,qBAAa,aAAc,YAAW,gBAAgB;IAC9C,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;CAG/C;AAOD,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB,EAAE,UAAwD,CAAC;AAE/F,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB,EAAE,UAAwD,CAAC;AAS/F;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAC3C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,UAAU,CAAC,CAAmD;gBAE1D,eAAe,UAAQ,EAAE,SAAS,CAAC,EAAE;QAAE,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;KAAE;IAOjG;;;;;OAKG;IACH,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO;IAuBhE,wEAAwE;IACxE,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjC,mEAAmE;IACnE,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMpC;;;;;;;;OAQG;IACG,WAAW,CAAC,YAAY,EAAE;QAC9B,iBAAiB,IAAI,OAAO,CAAC;YAC3B,IAAI,EAAE;gBAAE,gBAAgB,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,UAAU,CAAA;aAAE,CAAC;YACrD,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;SAChD,GAAG,IAAI,CAAC,CAAC;KACX,GAAG,OAAO,CAAC,IAAI,CAAC;CAqBlB"}
|