glow.ts 1.0.2 → 1.1.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/README.md +6 -21
- package/dist/glow.cjs.js +4 -0
- package/dist/glow.cjs.js.map +1 -0
- package/dist/glow.es.js +993 -0
- package/dist/glow.es.js.map +1 -0
- package/dist/index.d.ts +544 -0
- package/package.json +34 -26
- package/dist/cjs2/config.js +0 -18
- package/dist/cjs2/config.js.map +0 -1
- package/dist/cjs2/crypto-storage/crypto-storage.js +0 -118
- package/dist/cjs2/crypto-storage/crypto-storage.js.map +0 -1
- package/dist/cjs2/crypto-storage/in-memory-storage.js +0 -36
- package/dist/cjs2/crypto-storage/in-memory-storage.js.map +0 -1
- package/dist/cjs2/crypto-storage/local-storage.driver.js +0 -36
- package/dist/cjs2/crypto-storage/local-storage.driver.js.map +0 -1
- package/dist/cjs2/crypto-storage/storage-driver.interface.js +0 -3
- package/dist/cjs2/crypto-storage/storage-driver.interface.js.map +0 -1
- package/dist/cjs2/index.js +0 -28
- package/dist/cjs2/index.js.map +0 -1
- package/dist/cjs2/keyring/keyring.js +0 -151
- package/dist/cjs2/keyring/keyring.js.map +0 -1
- package/dist/cjs2/keys/keys.js +0 -40
- package/dist/cjs2/keys/keys.js.map +0 -1
- package/dist/cjs2/mailbox/mailbox.js +0 -352
- package/dist/cjs2/mailbox/mailbox.js.map +0 -1
- package/dist/cjs2/nacl/encryption.helper.js +0 -101
- package/dist/cjs2/nacl/encryption.helper.js.map +0 -1
- package/dist/cjs2/nacl/js-nacl-driver.js +0 -110
- package/dist/cjs2/nacl/js-nacl-driver.js.map +0 -1
- package/dist/cjs2/nacl/keypair.interface.js +0 -3
- package/dist/cjs2/nacl/keypair.interface.js.map +0 -1
- package/dist/cjs2/nacl/nacl-driver.interface.js +0 -3
- package/dist/cjs2/nacl/nacl-driver.interface.js.map +0 -1
- package/dist/cjs2/nacl/nacl.js +0 -29
- package/dist/cjs2/nacl/nacl.js.map +0 -1
- package/dist/cjs2/relay/network-error.js +0 -12
- package/dist/cjs2/relay/network-error.js.map +0 -1
- package/dist/cjs2/relay/relay-factory.js +0 -22
- package/dist/cjs2/relay/relay-factory.js.map +0 -1
- package/dist/cjs2/relay/relay.js +0 -300
- package/dist/cjs2/relay/relay.js.map +0 -1
- package/dist/cjs2/utils/utils.js +0 -39
- package/dist/cjs2/utils/utils.js.map +0 -1
- package/dist/cjs2/zax.interface.js +0 -46
- package/dist/cjs2/zax.interface.js.map +0 -1
- package/dist/esm/config.js +0 -15
- package/dist/esm/config.js.map +0 -1
- package/dist/esm/crypto-storage/crypto-storage.js +0 -114
- package/dist/esm/crypto-storage/crypto-storage.js.map +0 -1
- package/dist/esm/crypto-storage/in-memory-storage.js +0 -32
- package/dist/esm/crypto-storage/in-memory-storage.js.map +0 -1
- package/dist/esm/crypto-storage/local-storage.driver.js +0 -32
- package/dist/esm/crypto-storage/local-storage.driver.js.map +0 -1
- package/dist/esm/crypto-storage/storage-driver.interface.js +0 -2
- package/dist/esm/crypto-storage/storage-driver.interface.js.map +0 -1
- package/dist/esm/index.js +0 -14
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/keyring/keyring.js +0 -147
- package/dist/esm/keyring/keyring.js.map +0 -1
- package/dist/esm/keys/keys.js +0 -36
- package/dist/esm/keys/keys.js.map +0 -1
- package/dist/esm/mailbox/mailbox.js +0 -348
- package/dist/esm/mailbox/mailbox.js.map +0 -1
- package/dist/esm/nacl/encryption.helper.js +0 -97
- package/dist/esm/nacl/encryption.helper.js.map +0 -1
- package/dist/esm/nacl/js-nacl-driver.js +0 -106
- package/dist/esm/nacl/js-nacl-driver.js.map +0 -1
- package/dist/esm/nacl/keypair.interface.js +0 -2
- package/dist/esm/nacl/keypair.interface.js.map +0 -1
- package/dist/esm/nacl/nacl-driver.interface.js +0 -2
- package/dist/esm/nacl/nacl-driver.interface.js.map +0 -1
- package/dist/esm/nacl/nacl.js +0 -25
- package/dist/esm/nacl/nacl.js.map +0 -1
- package/dist/esm/relay/network-error.js +0 -8
- package/dist/esm/relay/network-error.js.map +0 -1
- package/dist/esm/relay/relay-factory.js +0 -18
- package/dist/esm/relay/relay-factory.js.map +0 -1
- package/dist/esm/relay/relay.js +0 -293
- package/dist/esm/relay/relay.js.map +0 -1
- package/dist/esm/utils/utils.js +0 -35
- package/dist/esm/utils/utils.js.map +0 -1
- package/dist/esm/zax.interface.js +0 -43
- package/dist/esm/zax.interface.js.map +0 -1
- package/dist/types/config.d.ts +0 -10
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/crypto-storage/crypto-storage.d.ts +0 -20
- package/dist/types/crypto-storage/crypto-storage.d.ts.map +0 -1
- package/dist/types/crypto-storage/in-memory-storage.d.ts +0 -17
- package/dist/types/crypto-storage/in-memory-storage.d.ts.map +0 -1
- package/dist/types/crypto-storage/local-storage.driver.d.ts +0 -15
- package/dist/types/crypto-storage/local-storage.driver.d.ts.map +0 -1
- package/dist/types/crypto-storage/storage-driver.interface.d.ts +0 -11
- package/dist/types/crypto-storage/storage-driver.interface.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -16
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/keyring/keyring.d.ts +0 -43
- package/dist/types/keyring/keyring.d.ts.map +0 -1
- package/dist/types/keys/keys.d.ts +0 -16
- package/dist/types/keys/keys.d.ts.map +0 -1
- package/dist/types/mailbox/mailbox.d.ts +0 -148
- package/dist/types/mailbox/mailbox.d.ts.map +0 -1
- package/dist/types/nacl/encryption.helper.d.ts +0 -37
- package/dist/types/nacl/encryption.helper.d.ts.map +0 -1
- package/dist/types/nacl/js-nacl-driver.d.ts +0 -39
- package/dist/types/nacl/js-nacl-driver.d.ts.map +0 -1
- package/dist/types/nacl/keypair.interface.d.ts +0 -5
- package/dist/types/nacl/keypair.interface.d.ts.map +0 -1
- package/dist/types/nacl/nacl-driver.interface.d.ts +0 -28
- package/dist/types/nacl/nacl-driver.interface.d.ts.map +0 -1
- package/dist/types/nacl/nacl.d.ts +0 -13
- package/dist/types/nacl/nacl.d.ts.map +0 -1
- package/dist/types/relay/network-error.d.ts +0 -6
- package/dist/types/relay/network-error.d.ts.map +0 -1
- package/dist/types/relay/relay-factory.d.ts +0 -10
- package/dist/types/relay/relay-factory.d.ts.map +0 -1
- package/dist/types/relay/relay.d.ts +0 -88
- package/dist/types/relay/relay.d.ts.map +0 -1
- package/dist/types/utils/utils.d.ts +0 -9
- package/dist/types/utils/utils.d.ts.map +0 -1
- package/dist/types/zax.interface.d.ts +0 -101
- package/dist/types/zax.interface.d.ts.map +0 -1
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { EncryptedMessage } from '../nacl/nacl-driver.interface';
|
|
2
|
-
import { Base64 } from '../utils/utils';
|
|
3
|
-
import { RelayCommand } from '../zax.interface';
|
|
4
|
-
export interface RelayConnectionData {
|
|
5
|
-
h2Signature: Uint8Array;
|
|
6
|
-
relayPublicKey: Uint8Array;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Low-level operations with Zax relay
|
|
10
|
-
*/
|
|
11
|
-
export declare class Relay {
|
|
12
|
-
url: string;
|
|
13
|
-
private nacl;
|
|
14
|
-
private difficulty;
|
|
15
|
-
private publicKey?;
|
|
16
|
-
private clientToken?;
|
|
17
|
-
private sessionKeys?;
|
|
18
|
-
private tokenExpirationTimeoutHandle?;
|
|
19
|
-
private sessionExpirationTimeoutHandle?;
|
|
20
|
-
constructor(url: string);
|
|
21
|
-
get isConnected(): boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Exchanges tokens with a relay and gets a temp session key for this relay.
|
|
24
|
-
* Returns h₂(signature) and a relay public key
|
|
25
|
-
*/
|
|
26
|
-
openConnection(): Promise<RelayConnectionData>;
|
|
27
|
-
/**
|
|
28
|
-
* Sends a client token to a relay and saves a relay token
|
|
29
|
-
*/
|
|
30
|
-
private fetchRelayToken;
|
|
31
|
-
/**
|
|
32
|
-
* Completes the handshake and saves a relay pubic key
|
|
33
|
-
*/
|
|
34
|
-
private fetchRelayPublicKey;
|
|
35
|
-
/**
|
|
36
|
-
* Attaches a mailbox and fetches number of messages
|
|
37
|
-
*/
|
|
38
|
-
prove(payload: EncryptedMessage): Promise<string>;
|
|
39
|
-
encodeMessage(message: string): Promise<EncryptedMessage>;
|
|
40
|
-
decodeMessage(nonce: Base64, ctext: Base64): Promise<any>;
|
|
41
|
-
/**
|
|
42
|
-
* Executes a message/file command on a relay, parses and validates the response
|
|
43
|
-
*/
|
|
44
|
-
runCmd(command: RelayCommand, hpk: Base64, message: EncryptedMessage, ctext?: string): Promise<string[]>;
|
|
45
|
-
private getSignature;
|
|
46
|
-
/**
|
|
47
|
-
* Executes a call to a relay and return raw string response
|
|
48
|
-
*/
|
|
49
|
-
private httpCall;
|
|
50
|
-
/**
|
|
51
|
-
* Parses relay response and throws an error if its format is unexpected
|
|
52
|
-
*/
|
|
53
|
-
private parseResponse;
|
|
54
|
-
/**
|
|
55
|
-
* Compares the expected number of lines in response with what was actually received from a relay
|
|
56
|
-
*/
|
|
57
|
-
private validateResponse;
|
|
58
|
-
/**
|
|
59
|
-
* delete token locally before it was removed on server so will reconnect without getting unauthorized error
|
|
60
|
-
*/
|
|
61
|
-
private scheduleTokenExpiration;
|
|
62
|
-
clearToken(): void;
|
|
63
|
-
/**
|
|
64
|
-
* established session is valid only for some period need to remove it after it's ttl
|
|
65
|
-
* so relay will reconnect without receiving error from server
|
|
66
|
-
*/
|
|
67
|
-
private scheduleSessionExpiration;
|
|
68
|
-
clearSession(): void;
|
|
69
|
-
/**
|
|
70
|
-
* Continuously calculates the nonce until one requested by a relay is found
|
|
71
|
-
*/
|
|
72
|
-
private ensureNonceDifficulty;
|
|
73
|
-
/**
|
|
74
|
-
* Returns `true` if the rightmost n bits of a byte are 0.
|
|
75
|
-
* Check whether the rightmost difficulty bits of an Uint8Array are 0, where
|
|
76
|
-
* the lowest indexes of the array represent those rightmost bits. Thus if
|
|
77
|
-
* the difficulty is 17, then array[0] and array[1] should be 0, as should the
|
|
78
|
-
* rightmost bit of array[2]. This is used for our difficulty settings in Zax to
|
|
79
|
-
* reduce burden on a busy server by ensuring clients have to do some
|
|
80
|
-
* additional work during the session handshake
|
|
81
|
-
*/
|
|
82
|
-
private arrayZeroBits;
|
|
83
|
-
/**
|
|
84
|
-
* Returns `true` if the rightmost n bits of a byte are 0
|
|
85
|
-
*/
|
|
86
|
-
private firstZeroBits;
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=relay.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../../src/relay/relay.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAG7E,OAAO,EAAE,MAAM,EAAS,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,UAAU,CAAC;IACxB,cAAc,EAAE,UAAU,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,KAAK;IASG,GAAG,EAAE,MAAM;IAR9B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,WAAW,CAAC,CAAO;IAC3B,OAAO,CAAC,4BAA4B,CAAC,CAAgC;IACrE,OAAO,CAAC,8BAA8B,CAAC,CAAgC;gBAEpD,GAAG,EAAE,MAAM;IAI9B,IAAI,WAAW,YAId;IAID;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAWpD;;OAEG;YACW,eAAe;IAkB7B;;OAEG;YACW,mBAAmB;IAuBjC;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAcjD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAYzD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAmB/D;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAehG,YAAY;IAW1B;;OAEG;YACW,QAAQ;IAkCtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAO/B,UAAU;IASV;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IASjC,YAAY;IAWZ;;OAEG;YACW,qBAAqB;IAWnC;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare type Base64 = string;
|
|
2
|
-
export declare class Utils {
|
|
3
|
-
static toBase64(input: Uint8Array): Base64;
|
|
4
|
-
static fromBase64(input: Base64): Uint8Array;
|
|
5
|
-
static encode_latin1(data: string): Uint8Array;
|
|
6
|
-
static decode_latin1(data: Uint8Array): string;
|
|
7
|
-
static toObject(pairs: IterableIterator<[string, any]>): {};
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM,GAAG,MAAM,CAAC;AAE5B,qBAAa,KAAK;IAChB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAO1C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAO5C,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAU9C,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAQ9C,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAMvD"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { Base64 } from './utils/utils';
|
|
2
|
-
/**
|
|
3
|
-
* Interfaces of Zax relay command requests and responses.
|
|
4
|
-
* See https://github.com/vault12/zax for details.
|
|
5
|
-
*
|
|
6
|
-
* Full technical specification:
|
|
7
|
-
* https://s3-us-west-1.amazonaws.com/vault12/crypto_relay.pdf
|
|
8
|
-
*/
|
|
9
|
-
export declare enum RelayCommand {
|
|
10
|
-
count = "count",
|
|
11
|
-
upload = "upload",
|
|
12
|
-
download = "download",
|
|
13
|
-
messageStatus = "messageStatus",
|
|
14
|
-
delete = "delete",
|
|
15
|
-
startFileUpload = "startFileUpload",
|
|
16
|
-
uploadFileChunk = "uploadFileChunk",
|
|
17
|
-
downloadFileChunk = "downloadFileChunk",
|
|
18
|
-
fileStatus = "fileStatus",
|
|
19
|
-
deleteFile = "deleteFile"
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Status of a previously sent message equals redis TTL.
|
|
23
|
-
* See https://redis.io/commands/ttl.
|
|
24
|
-
* -2 : missing key
|
|
25
|
-
* -1 : key never expires
|
|
26
|
-
* 0+ : key time to live in seconds
|
|
27
|
-
*/
|
|
28
|
-
export declare enum MessageStatusResponse {
|
|
29
|
-
MissingKey = -2,
|
|
30
|
-
NeverExpires = -1
|
|
31
|
-
}
|
|
32
|
-
export declare enum ZaxMessageKind {
|
|
33
|
-
message = "message",
|
|
34
|
-
file = "file",
|
|
35
|
-
plain = "plain"
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Format of raw messages provided by `download` Zax command
|
|
39
|
-
*/
|
|
40
|
-
export interface ZaxRawMessage {
|
|
41
|
-
data: string;
|
|
42
|
-
time: number;
|
|
43
|
-
from: Base64;
|
|
44
|
-
nonce: Base64;
|
|
45
|
-
kind: ZaxMessageKind.message | ZaxMessageKind.file;
|
|
46
|
-
}
|
|
47
|
-
export interface ZaxTextMessage {
|
|
48
|
-
/**
|
|
49
|
-
* Decoded object after JSON.parse
|
|
50
|
-
*/
|
|
51
|
-
data: string;
|
|
52
|
-
time: number;
|
|
53
|
-
senderTag: string;
|
|
54
|
-
nonce: Base64;
|
|
55
|
-
kind: ZaxMessageKind.message;
|
|
56
|
-
}
|
|
57
|
-
export interface ZaxFileMessage {
|
|
58
|
-
data: FileUploadMetadata;
|
|
59
|
-
time: number;
|
|
60
|
-
senderTag: string;
|
|
61
|
-
uploadID: string;
|
|
62
|
-
nonce: Base64;
|
|
63
|
-
kind: ZaxMessageKind.file;
|
|
64
|
-
}
|
|
65
|
-
export interface ZaxPlainMessage {
|
|
66
|
-
data: string;
|
|
67
|
-
time: number;
|
|
68
|
-
from: Base64;
|
|
69
|
-
nonce: Base64;
|
|
70
|
-
senderTag: undefined;
|
|
71
|
-
kind: ZaxMessageKind.plain;
|
|
72
|
-
}
|
|
73
|
-
export declare type ZaxParsedMessage = ZaxPlainMessage | ZaxFileMessage | ZaxTextMessage;
|
|
74
|
-
export interface StartFileUploadResponse {
|
|
75
|
-
uploadID: string;
|
|
76
|
-
max_chunk_size: number;
|
|
77
|
-
storage_token: string;
|
|
78
|
-
skey: Uint8Array;
|
|
79
|
-
}
|
|
80
|
-
export interface UploadFileChunkResponse {
|
|
81
|
-
status: 'OK' | 'NOT_FOUND';
|
|
82
|
-
}
|
|
83
|
-
export interface FileStatusResponse {
|
|
84
|
-
status: 'COMPLETE' | 'UPLOADING' | 'START' | 'NOT_FOUND';
|
|
85
|
-
total_chunks: number;
|
|
86
|
-
file_size: number;
|
|
87
|
-
bytes_stored: number;
|
|
88
|
-
}
|
|
89
|
-
export interface DeleteFileResponse {
|
|
90
|
-
status: 'OK' | 'NOT_FOUND';
|
|
91
|
-
}
|
|
92
|
-
export interface FileUploadMetadata {
|
|
93
|
-
name: string;
|
|
94
|
-
orig_size: number;
|
|
95
|
-
md5?: string;
|
|
96
|
-
created?: number;
|
|
97
|
-
modified?: number;
|
|
98
|
-
attrs?: string;
|
|
99
|
-
skey?: Base64;
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=zax.interface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zax.interface.d.ts","sourceRoot":"","sources":["../../src/zax.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;;;GAMG;AAGH,oBAAY,YAAY;IAEtB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,MAAM,WAAW;IAEjB,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,UAAU,eAAe;IACzB,UAAU,eAAe;CAC1B;AAED;;;;;;GAMG;AACH,oBAAY,qBAAqB;IAC/B,UAAU,KAAK;IACf,YAAY,KAAK;CAClB;AAID,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;CAC5B;AAED,oBAAY,gBAAgB,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC;AAKjF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,IAAI,GAAG,WAAW,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,IAAI,GAAG,WAAW,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|