@human-protocol/sdk 5.2.0 → 6.0.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/base.d.ts +4 -5
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +4 -5
- package/dist/constants.js +6 -6
- package/dist/encryption.d.ts +68 -203
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +66 -202
- package/dist/error.d.ts +0 -24
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +2 -26
- package/dist/escrow.d.ts +427 -780
- package/dist/escrow.d.ts.map +1 -1
- package/dist/escrow.js +314 -684
- package/dist/graphql/queries/operator.d.ts.map +1 -1
- package/dist/graphql/queries/operator.js +3 -1
- package/dist/graphql/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -4
- package/dist/kvstore.d.ts +119 -181
- package/dist/kvstore.d.ts.map +1 -1
- package/dist/kvstore.js +119 -182
- package/dist/operator.d.ts +59 -30
- package/dist/operator.d.ts.map +1 -1
- package/dist/operator.js +59 -30
- package/dist/staking.d.ts +135 -134
- package/dist/staking.d.ts.map +1 -1
- package/dist/staking.js +135 -134
- package/dist/statistics.d.ts +104 -134
- package/dist/statistics.d.ts.map +1 -1
- package/dist/statistics.js +119 -144
- package/dist/transaction.d.ts +36 -15
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +36 -15
- package/dist/types.d.ts +0 -54
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +31 -17
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +31 -17
- package/dist/worker.d.ts +35 -14
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +35 -14
- package/package.json +7 -24
- package/src/base.ts +4 -5
- package/src/constants.ts +6 -6
- package/src/encryption.ts +69 -203
- package/src/error.ts +0 -36
- package/src/escrow.ts +425 -780
- package/src/graphql/queries/operator.ts +3 -1
- package/src/graphql/types.ts +4 -2
- package/src/index.ts +4 -5
- package/src/kvstore.ts +120 -183
- package/src/operator.ts +59 -30
- package/src/staking.ts +135 -134
- package/src/statistics.ts +125 -146
- package/src/transaction.ts +36 -15
- package/src/types.ts +0 -57
- package/src/utils.ts +31 -17
- package/src/worker.ts +35 -14
- package/dist/storage.d.ts +0 -186
- package/dist/storage.d.ts.map +0 -1
- package/dist/storage.js +0 -319
- package/src/storage.ts +0 -313
package/dist/statistics.d.ts
CHANGED
|
@@ -1,46 +1,21 @@
|
|
|
1
1
|
import { IDailyHMT, IEscrowStatistics, IHMTHolder, IHMTHoldersParams, IHMTStatistics, IPaymentStatistics, IStatisticsFilter, IWorkerStatistics, SubgraphOptions } from './interfaces';
|
|
2
2
|
import { NetworkData } from './types';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Utility class for statistics-related queries.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Unlike other SDK clients, `StatisticsClient` does not require `signer` or `provider` to be provided.
|
|
9
|
-
* We just need to create a client object using relevant network data.
|
|
6
|
+
* Unlike other SDK clients, `StatisticsUtils` does not require `signer` or `provider` to be provided.
|
|
7
|
+
* We just need to pass the network data to each static method.
|
|
10
8
|
*
|
|
9
|
+
* @example
|
|
11
10
|
* ```ts
|
|
12
|
-
*
|
|
13
|
-
* ```
|
|
14
|
-
*
|
|
15
|
-
* ## Installation
|
|
11
|
+
* import { StatisticsUtils, ChainId, NETWORKS } from '@human-protocol/sdk';
|
|
16
12
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* ```
|
|
21
|
-
*
|
|
22
|
-
* ### yarn
|
|
23
|
-
* ```bash
|
|
24
|
-
* yarn install @human-protocol/sdk
|
|
25
|
-
* ```
|
|
26
|
-
*
|
|
27
|
-
* ## Code example
|
|
28
|
-
*
|
|
29
|
-
* ```ts
|
|
30
|
-
* import { StatisticsClient, ChainId, NETWORKS } from '@human-protocol/sdk';
|
|
31
|
-
*
|
|
32
|
-
* const statisticsClient = new StatisticsClient(NETWORKS[ChainId.POLYGON_AMOY]);
|
|
13
|
+
* const networkData = NETWORKS[ChainId.POLYGON_AMOY];
|
|
14
|
+
* const escrowStats = await StatisticsUtils.getEscrowStatistics(networkData);
|
|
15
|
+
* console.log('Total escrows:', escrowStats.totalEscrows);
|
|
33
16
|
* ```
|
|
34
17
|
*/
|
|
35
|
-
export declare class
|
|
36
|
-
networkData: NetworkData;
|
|
37
|
-
subgraphUrl: string;
|
|
38
|
-
/**
|
|
39
|
-
* **StatisticsClient constructor**
|
|
40
|
-
*
|
|
41
|
-
* @param {NetworkData} networkData - The network information required to connect to the Statistics contract
|
|
42
|
-
*/
|
|
43
|
-
constructor(networkData: NetworkData);
|
|
18
|
+
export declare class StatisticsUtils {
|
|
44
19
|
/**
|
|
45
20
|
* This function returns the statistical data of escrows.
|
|
46
21
|
*
|
|
@@ -72,25 +47,30 @@ export declare class StatisticsClient {
|
|
|
72
47
|
* };
|
|
73
48
|
* ```
|
|
74
49
|
*
|
|
75
|
-
* @param
|
|
76
|
-
* @param
|
|
77
|
-
* @
|
|
78
|
-
*
|
|
79
|
-
* **Code example**
|
|
50
|
+
* @param networkData - The network information required to connect to the subgraph
|
|
51
|
+
* @param filter - Statistics params with duration data
|
|
52
|
+
* @param options - Optional configuration for subgraph requests.
|
|
53
|
+
* @returns Escrow statistics data.
|
|
80
54
|
*
|
|
55
|
+
* @example
|
|
81
56
|
* ```ts
|
|
82
|
-
* import {
|
|
83
|
-
*
|
|
84
|
-
* const
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
57
|
+
* import { StatisticsUtils, ChainId, NETWORKS } from '@human-protocol/sdk';
|
|
58
|
+
*
|
|
59
|
+
* const networkData = NETWORKS[ChainId.POLYGON_AMOY];
|
|
60
|
+
* const escrowStats = await StatisticsUtils.getEscrowStatistics(networkData);
|
|
61
|
+
* console.log('Total escrows:', escrowStats.totalEscrows);
|
|
62
|
+
*
|
|
63
|
+
* const escrowStatsApril = await StatisticsUtils.getEscrowStatistics(
|
|
64
|
+
* networkData,
|
|
65
|
+
* {
|
|
66
|
+
* from: new Date('2021-04-01'),
|
|
67
|
+
* to: new Date('2021-04-30'),
|
|
68
|
+
* }
|
|
69
|
+
* );
|
|
70
|
+
* console.log('April escrows:', escrowStatsApril.totalEscrows);
|
|
91
71
|
* ```
|
|
92
72
|
*/
|
|
93
|
-
getEscrowStatistics(filter?: IStatisticsFilter, options?: SubgraphOptions): Promise<IEscrowStatistics>;
|
|
73
|
+
static getEscrowStatistics(networkData: NetworkData, filter?: IStatisticsFilter, options?: SubgraphOptions): Promise<IEscrowStatistics>;
|
|
94
74
|
/**
|
|
95
75
|
* This function returns the statistical data of workers.
|
|
96
76
|
*
|
|
@@ -117,25 +97,30 @@ export declare class StatisticsClient {
|
|
|
117
97
|
* };
|
|
118
98
|
* ```
|
|
119
99
|
*
|
|
120
|
-
* @param
|
|
121
|
-
* @param
|
|
122
|
-
* @
|
|
123
|
-
*
|
|
124
|
-
* **Code example**
|
|
100
|
+
* @param networkData - The network information required to connect to the subgraph
|
|
101
|
+
* @param filter - Statistics params with duration data
|
|
102
|
+
* @param options - Optional configuration for subgraph requests.
|
|
103
|
+
* @returns Worker statistics data.
|
|
125
104
|
*
|
|
105
|
+
* @example
|
|
126
106
|
* ```ts
|
|
127
|
-
* import {
|
|
128
|
-
*
|
|
129
|
-
* const
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
107
|
+
* import { StatisticsUtils, ChainId, NETWORKS } from '@human-protocol/sdk';
|
|
108
|
+
*
|
|
109
|
+
* const networkData = NETWORKS[ChainId.POLYGON_AMOY];
|
|
110
|
+
* const workerStats = await StatisticsUtils.getWorkerStatistics(networkData);
|
|
111
|
+
* console.log('Daily workers data:', workerStats.dailyWorkersData);
|
|
112
|
+
*
|
|
113
|
+
* const workerStatsApril = await StatisticsUtils.getWorkerStatistics(
|
|
114
|
+
* networkData,
|
|
115
|
+
* {
|
|
116
|
+
* from: new Date('2021-04-01'),
|
|
117
|
+
* to: new Date('2021-04-30'),
|
|
118
|
+
* }
|
|
119
|
+
* );
|
|
120
|
+
* console.log('April workers:', workerStatsApril.dailyWorkersData.length);
|
|
136
121
|
* ```
|
|
137
122
|
*/
|
|
138
|
-
getWorkerStatistics(filter?: IStatisticsFilter, options?: SubgraphOptions): Promise<IWorkerStatistics>;
|
|
123
|
+
static getWorkerStatistics(networkData: NetworkData, filter?: IStatisticsFilter, options?: SubgraphOptions): Promise<IWorkerStatistics>;
|
|
139
124
|
/**
|
|
140
125
|
* This function returns the statistical data of payments.
|
|
141
126
|
*
|
|
@@ -164,46 +149,37 @@ export declare class StatisticsClient {
|
|
|
164
149
|
* };
|
|
165
150
|
* ```
|
|
166
151
|
*
|
|
167
|
-
* @param
|
|
168
|
-
* @param
|
|
169
|
-
* @
|
|
170
|
-
*
|
|
171
|
-
* **Code example**
|
|
152
|
+
* @param networkData - The network information required to connect to the subgraph
|
|
153
|
+
* @param filter - Statistics params with duration data
|
|
154
|
+
* @param options - Optional configuration for subgraph requests.
|
|
155
|
+
* @returns Payment statistics data.
|
|
172
156
|
*
|
|
157
|
+
* @example
|
|
173
158
|
* ```ts
|
|
174
|
-
* import {
|
|
175
|
-
*
|
|
176
|
-
* const statisticsClient = new StatisticsClient(NETWORKS[ChainId.POLYGON_AMOY]);
|
|
159
|
+
* import { StatisticsUtils, ChainId, NETWORKS } from '@human-protocol/sdk';
|
|
177
160
|
*
|
|
161
|
+
* const networkData = NETWORKS[ChainId.POLYGON_AMOY];
|
|
162
|
+
* const paymentStats = await StatisticsUtils.getPaymentStatistics(networkData);
|
|
178
163
|
* console.log(
|
|
179
164
|
* 'Payment statistics:',
|
|
180
|
-
*
|
|
181
|
-
* (p) => ({
|
|
182
|
-
* ...p,
|
|
183
|
-
* totalAmountPaid: p.totalAmountPaid.toString(),
|
|
184
|
-
* averageAmountPerJob: p.averageAmountPerJob.toString(),
|
|
185
|
-
* averageAmountPerWorker: p.averageAmountPerWorker.toString(),
|
|
186
|
-
* })
|
|
187
|
-
* )
|
|
188
|
-
* );
|
|
189
|
-
*
|
|
190
|
-
* console.log(
|
|
191
|
-
* 'Payment statistics from 5/8 - 6/8:',
|
|
192
|
-
* (
|
|
193
|
-
* await statisticsClient.getPaymentStatistics({
|
|
194
|
-
* from: new Date(2023, 4, 8),
|
|
195
|
-
* to: new Date(2023, 5, 8),
|
|
196
|
-
* })
|
|
197
|
-
* ).dailyPaymentsData.map((p) => ({
|
|
165
|
+
* paymentStats.dailyPaymentsData.map((p) => ({
|
|
198
166
|
* ...p,
|
|
199
167
|
* totalAmountPaid: p.totalAmountPaid.toString(),
|
|
200
|
-
* averageAmountPerJob: p.averageAmountPerJob.toString(),
|
|
201
168
|
* averageAmountPerWorker: p.averageAmountPerWorker.toString(),
|
|
202
169
|
* }))
|
|
203
170
|
* );
|
|
171
|
+
*
|
|
172
|
+
* const paymentStatsRange = await StatisticsUtils.getPaymentStatistics(
|
|
173
|
+
* networkData,
|
|
174
|
+
* {
|
|
175
|
+
* from: new Date(2023, 4, 8),
|
|
176
|
+
* to: new Date(2023, 5, 8),
|
|
177
|
+
* }
|
|
178
|
+
* );
|
|
179
|
+
* console.log('Payment statistics from 5/8 - 6/8:', paymentStatsRange.dailyPaymentsData.length);
|
|
204
180
|
* ```
|
|
205
181
|
*/
|
|
206
|
-
getPaymentStatistics(filter?: IStatisticsFilter, options?: SubgraphOptions): Promise<IPaymentStatistics>;
|
|
182
|
+
static getPaymentStatistics(networkData: NetworkData, filter?: IStatisticsFilter, options?: SubgraphOptions): Promise<IPaymentStatistics>;
|
|
207
183
|
/**
|
|
208
184
|
* This function returns the statistical data of HMToken.
|
|
209
185
|
*
|
|
@@ -215,52 +191,46 @@ export declare class StatisticsClient {
|
|
|
215
191
|
* };
|
|
216
192
|
* ```
|
|
217
193
|
*
|
|
218
|
-
* @param
|
|
219
|
-
* @
|
|
220
|
-
*
|
|
221
|
-
* **Code example**
|
|
194
|
+
* @param networkData - The network information required to connect to the subgraph
|
|
195
|
+
* @param options - Optional configuration for subgraph requests.
|
|
196
|
+
* @returns HMToken statistics data.
|
|
222
197
|
*
|
|
198
|
+
* @example
|
|
223
199
|
* ```ts
|
|
224
|
-
* import {
|
|
225
|
-
*
|
|
226
|
-
* const statisticsClient = new StatisticsClient(NETWORKS[ChainId.POLYGON_AMOY]);
|
|
227
|
-
*
|
|
228
|
-
* const hmtStatistics = await statisticsClient.getHMTStatistics();
|
|
200
|
+
* import { StatisticsUtils, ChainId, NETWORKS } from '@human-protocol/sdk';
|
|
229
201
|
*
|
|
202
|
+
* const networkData = NETWORKS[ChainId.POLYGON_AMOY];
|
|
203
|
+
* const hmtStats = await StatisticsUtils.getHMTStatistics(networkData);
|
|
230
204
|
* console.log('HMT statistics:', {
|
|
231
|
-
* ...
|
|
232
|
-
* totalTransferAmount:
|
|
205
|
+
* ...hmtStats,
|
|
206
|
+
* totalTransferAmount: hmtStats.totalTransferAmount.toString(),
|
|
233
207
|
* });
|
|
234
208
|
* ```
|
|
235
209
|
*/
|
|
236
|
-
getHMTStatistics(options?: SubgraphOptions): Promise<IHMTStatistics>;
|
|
210
|
+
static getHMTStatistics(networkData: NetworkData, options?: SubgraphOptions): Promise<IHMTStatistics>;
|
|
237
211
|
/**
|
|
238
212
|
* This function returns the holders of the HMToken with optional filters and ordering.
|
|
239
213
|
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
* @param
|
|
243
|
-
* @
|
|
244
|
-
* @returns {Promise<IHMTHolder[]>} List of HMToken holders.
|
|
245
|
-
*
|
|
246
|
-
* **Code example**
|
|
214
|
+
* @param networkData - The network information required to connect to the subgraph
|
|
215
|
+
* @param params - HMT Holders params with filters and ordering
|
|
216
|
+
* @param options - Optional configuration for subgraph requests.
|
|
217
|
+
* @returns List of HMToken holders.
|
|
247
218
|
*
|
|
219
|
+
* @example
|
|
248
220
|
* ```ts
|
|
249
|
-
* import {
|
|
221
|
+
* import { StatisticsUtils, ChainId, NETWORKS } from '@human-protocol/sdk';
|
|
250
222
|
*
|
|
251
|
-
* const
|
|
252
|
-
*
|
|
253
|
-
* const hmtHolders = await statisticsClient.getHMTHolders({
|
|
223
|
+
* const networkData = NETWORKS[ChainId.POLYGON_AMOY];
|
|
224
|
+
* const hmtHolders = await StatisticsUtils.getHMTHolders(networkData, {
|
|
254
225
|
* orderDirection: 'asc',
|
|
255
226
|
* });
|
|
256
|
-
*
|
|
257
227
|
* console.log('HMT holders:', hmtHolders.map((h) => ({
|
|
258
228
|
* ...h,
|
|
259
229
|
* balance: h.balance.toString(),
|
|
260
230
|
* })));
|
|
261
231
|
* ```
|
|
262
232
|
*/
|
|
263
|
-
getHMTHolders(params?: IHMTHoldersParams, options?: SubgraphOptions): Promise<IHMTHolder[]>;
|
|
233
|
+
static getHMTHolders(networkData: NetworkData, params?: IHMTHoldersParams, options?: SubgraphOptions): Promise<IHMTHolder[]>;
|
|
264
234
|
/**
|
|
265
235
|
* This function returns the statistical data of HMToken day by day.
|
|
266
236
|
*
|
|
@@ -286,29 +256,29 @@ export declare class StatisticsClient {
|
|
|
286
256
|
* }
|
|
287
257
|
* ```
|
|
288
258
|
*
|
|
289
|
-
* @param
|
|
290
|
-
* @param
|
|
291
|
-
* @
|
|
292
|
-
*
|
|
293
|
-
* **Code example**
|
|
259
|
+
* @param networkData - The network information required to connect to the subgraph
|
|
260
|
+
* @param filter - Statistics params with duration data
|
|
261
|
+
* @param options - Optional configuration for subgraph requests.
|
|
262
|
+
* @returns Daily HMToken statistics data.
|
|
294
263
|
*
|
|
264
|
+
* @example
|
|
295
265
|
* ```ts
|
|
296
|
-
* import {
|
|
297
|
-
*
|
|
298
|
-
* const statisticsClient = new StatisticsClient(NETWORKS[ChainId.POLYGON_AMOY]);
|
|
299
|
-
*
|
|
300
|
-
* const dailyHMTStats = await statisticsClient.getHMTStatistics();
|
|
266
|
+
* import { StatisticsUtils, ChainId, NETWORKS } from '@human-protocol/sdk';
|
|
301
267
|
*
|
|
268
|
+
* const networkData = NETWORKS[ChainId.POLYGON_AMOY];
|
|
269
|
+
* const dailyHMTStats = await StatisticsUtils.getHMTDailyData(networkData);
|
|
302
270
|
* console.log('Daily HMT statistics:', dailyHMTStats);
|
|
303
271
|
*
|
|
304
|
-
* const
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
272
|
+
* const hmtStatsRange = await StatisticsUtils.getHMTDailyData(
|
|
273
|
+
* networkData,
|
|
274
|
+
* {
|
|
275
|
+
* from: new Date(2023, 4, 8),
|
|
276
|
+
* to: new Date(2023, 5, 8),
|
|
277
|
+
* }
|
|
278
|
+
* );
|
|
279
|
+
* console.log('HMT statistics from 5/8 - 6/8:', hmtStatsRange.length);
|
|
310
280
|
* ```
|
|
311
281
|
*/
|
|
312
|
-
getHMTDailyData(filter?: IStatisticsFilter, options?: SubgraphOptions): Promise<IDailyHMT[]>;
|
|
282
|
+
static getHMTDailyData(networkData: NetworkData, filter?: IStatisticsFilter, options?: SubgraphOptions): Promise<IDailyHMT[]>;
|
|
313
283
|
}
|
|
314
284
|
//# sourceMappingURL=statistics.d.ts.map
|
package/dist/statistics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../src/statistics.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQtC
|
|
1
|
+
{"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../src/statistics.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQtC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAe;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqDG;WACU,mBAAmB,CAC9B,WAAW,EAAE,WAAW,EACxB,MAAM,GAAE,iBAAsB,EAC9B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC;IA6C7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;WACU,mBAAmB,CAC9B,WAAW,EAAE,WAAW,EACxB,MAAM,GAAE,iBAAsB,EAC9B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAkC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyDG;WACU,oBAAoB,CAC/B,WAAW,EAAE,WAAW,EACxB,MAAM,GAAE,iBAAsB,EAC9B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC;IAwC9B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;WACU,gBAAgB,CAC3B,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC;IAiB1B;;;;;;;;;;;;;;;;;;;;;OAqBG;WACU,aAAa,CACxB,WAAW,EAAE,WAAW,EACxB,MAAM,GAAE,iBAAsB,EAC9B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,UAAU,EAAE,CAAC;IA0BxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;WACU,eAAe,CAC1B,WAAW,EAAE,WAAW,EACxB,MAAM,GAAE,iBAAsB,EAC9B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC;CAkCxB"}
|