@secrecy/lib 1.5.0 → 1.6.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/client/SecrecyDbClient.d.ts +33 -6
- package/dist/client/SecrecyDbClient.js +265 -23
- package/dist/utils/encoders.d.ts +26 -0
- package/dist/utils/encoders.js +18 -0
- package/dist/zeus/const.js +63 -8
- package/dist/zeus/index.d.ts +287 -36
- package/dist/zeus/index.js +51 -18
- package/package.json +1 -1
|
@@ -1,21 +1,48 @@
|
|
|
1
1
|
import type { SecrecyClient, SuccessResponse, UserData } from "../index.js";
|
|
2
2
|
import type { KeyPair } from "../crypto/index.js";
|
|
3
3
|
import type { ErrorAccessDenied, ErrorBasic, ErrorNotExist, ErrorNotFound } from "../error.js";
|
|
4
|
-
import type { Thunder } from "../zeus/index.js";
|
|
4
|
+
import type { MongoDbEnv, Thunder } from "../zeus/index.js";
|
|
5
5
|
import type { Document } from "bson";
|
|
6
6
|
export declare class SecrecyDbClient {
|
|
7
7
|
#private;
|
|
8
8
|
constructor(_client: SecrecyClient, _keys: KeyPair, thunder: ReturnType<typeof Thunder>);
|
|
9
|
-
|
|
9
|
+
getDbConfig<T>({ appId, env }: {
|
|
10
|
+
appId: string;
|
|
11
|
+
env: MongoDbEnv;
|
|
12
|
+
}): Promise<SuccessResponse<T> | ErrorAccessDenied | ErrorNotFound | null>;
|
|
13
|
+
dbGetDiff<T>({ appId, env, config }: {
|
|
14
|
+
appId: string;
|
|
15
|
+
env: MongoDbEnv;
|
|
16
|
+
config: string;
|
|
17
|
+
}): Promise<SuccessResponse<T> | ErrorAccessDenied | ErrorBasic | null>;
|
|
18
|
+
setDbConfig<T>({ appId, env, config }: {
|
|
19
|
+
appId: string;
|
|
20
|
+
env: MongoDbEnv;
|
|
21
|
+
config: string;
|
|
22
|
+
}): Promise<SuccessResponse<T> | ErrorAccessDenied | ErrorBasic | null>;
|
|
23
|
+
dbConfigPushToProd<T>({ appId, diffHash }: {
|
|
24
|
+
appId: string;
|
|
25
|
+
diffHash: string;
|
|
26
|
+
}): Promise<SuccessResponse<T> | ErrorAccessDenied | ErrorBasic | null>;
|
|
27
|
+
get<U>({ field, appId, userId, env }: {
|
|
10
28
|
field: string;
|
|
29
|
+
appId: string;
|
|
30
|
+
env: MongoDbEnv;
|
|
11
31
|
userId?: string | null | undefined;
|
|
12
|
-
}): Promise<SuccessResponse<U> | ErrorAccessDenied | ErrorNotExist | ErrorNotFound | null>;
|
|
13
|
-
set<T extends UserData, U extends Document>({ value, userId }: {
|
|
32
|
+
}): Promise<SuccessResponse<U> | ErrorAccessDenied | ErrorBasic | ErrorNotExist | ErrorNotFound | null>;
|
|
33
|
+
set<T extends UserData, U extends Document>({ value, appId, env, userId }: {
|
|
14
34
|
value: U;
|
|
35
|
+
appId: string;
|
|
36
|
+
env: MongoDbEnv;
|
|
15
37
|
userId?: string | null | undefined;
|
|
16
|
-
}): Promise<SuccessResponse<T> | ErrorAccessDenied | ErrorNotFound | null>;
|
|
17
|
-
search<T>({ search, field }: {
|
|
38
|
+
}): Promise<SuccessResponse<T> | ErrorAccessDenied | ErrorBasic | ErrorNotFound | null>;
|
|
39
|
+
search<T>({ appId, env, search, field, take, skip, orderBy }: {
|
|
40
|
+
appId: string;
|
|
41
|
+
env: MongoDbEnv;
|
|
18
42
|
field: string;
|
|
19
43
|
search: string;
|
|
44
|
+
take?: number;
|
|
45
|
+
skip?: number;
|
|
46
|
+
orderBy?: "createdAt_ASC" | "createdAt_DESC";
|
|
20
47
|
}): Promise<SuccessResponse<T[]> | ErrorAccessDenied | ErrorBasic | ErrorNotExist | null>;
|
|
21
48
|
}
|
|
@@ -2,6 +2,7 @@ import _classPrivateFieldLooseBase from "@babel/runtime/helpers/classPrivateFiel
|
|
|
2
2
|
import _classPrivateFieldLooseKey from "@babel/runtime/helpers/classPrivateFieldLooseKey";
|
|
3
3
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
4
4
|
|
|
5
|
+
import { encoders } from "../utils/encoders.js";
|
|
5
6
|
import { serialize } from "bson";
|
|
6
7
|
var _thunder = /*#__PURE__*/_classPrivateFieldLooseKey("thunder");
|
|
7
8
|
export class SecrecyDbClient {
|
|
@@ -18,22 +19,240 @@ export class SecrecyDbClient {
|
|
|
18
19
|
// this.#keys = keys;
|
|
19
20
|
_classPrivateFieldLooseBase(this, _thunder)[_thunder] = thunder;
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Get the DbConfig by "env", it can be either "dev" or "prod".
|
|
25
|
+
*/
|
|
26
|
+
async getDbConfig(_ref) {
|
|
22
27
|
let {
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
appId,
|
|
29
|
+
env
|
|
25
30
|
} = _ref;
|
|
31
|
+
const {
|
|
32
|
+
dbConfig
|
|
33
|
+
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("query", {
|
|
34
|
+
scalars: {
|
|
35
|
+
Json: encoders.json
|
|
36
|
+
}
|
|
37
|
+
})({
|
|
38
|
+
dbConfig: [{
|
|
39
|
+
appId,
|
|
40
|
+
env
|
|
41
|
+
}, {
|
|
42
|
+
"...on ErrorAccessDenied": {
|
|
43
|
+
__typename: true,
|
|
44
|
+
message: true
|
|
45
|
+
},
|
|
46
|
+
"...on ErrorNotFound": {
|
|
47
|
+
__typename: true,
|
|
48
|
+
message: true
|
|
49
|
+
},
|
|
50
|
+
"...on DbConfigResponse": {
|
|
51
|
+
__typename: true,
|
|
52
|
+
json: true
|
|
53
|
+
}
|
|
54
|
+
}]
|
|
55
|
+
});
|
|
56
|
+
if (!dbConfig) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
if (dbConfig.__typename === "ErrorAccessDenied") {
|
|
60
|
+
return dbConfig;
|
|
61
|
+
}
|
|
62
|
+
if (dbConfig.__typename === "ErrorNotFound") {
|
|
63
|
+
return dbConfig;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
__typename: "SuccessResponse",
|
|
67
|
+
data: dbConfig.json
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Get the difference recipe between two DB configurations.
|
|
73
|
+
*/
|
|
74
|
+
async dbGetDiff(_ref2) {
|
|
75
|
+
let {
|
|
76
|
+
appId,
|
|
77
|
+
env,
|
|
78
|
+
config
|
|
79
|
+
} = _ref2;
|
|
80
|
+
const {
|
|
81
|
+
dbGetDiff
|
|
82
|
+
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("query", {
|
|
83
|
+
scalars: {
|
|
84
|
+
Json: encoders.json
|
|
85
|
+
}
|
|
86
|
+
})({
|
|
87
|
+
dbGetDiff: [{
|
|
88
|
+
appId,
|
|
89
|
+
env,
|
|
90
|
+
config
|
|
91
|
+
}, {
|
|
92
|
+
"...on ErrorBasic": {
|
|
93
|
+
__typename: true,
|
|
94
|
+
message: true
|
|
95
|
+
},
|
|
96
|
+
"...on ErrorAccessDenied": {
|
|
97
|
+
__typename: true,
|
|
98
|
+
message: true
|
|
99
|
+
},
|
|
100
|
+
"...on DbGetDiffConfigResponse": {
|
|
101
|
+
__typename: true,
|
|
102
|
+
dbGetDiffConfig: {
|
|
103
|
+
env: true,
|
|
104
|
+
current: true,
|
|
105
|
+
next: true,
|
|
106
|
+
diff: true,
|
|
107
|
+
hash: true
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}]
|
|
111
|
+
});
|
|
112
|
+
if (!dbGetDiff) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
if (dbGetDiff.__typename === "ErrorBasic") {
|
|
116
|
+
return dbGetDiff;
|
|
117
|
+
}
|
|
118
|
+
if (dbGetDiff.__typename === "ErrorAccessDenied") {
|
|
119
|
+
return dbGetDiff;
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
__typename: "SuccessResponse",
|
|
123
|
+
data: dbGetDiff.dbGetDiffConfig
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Set the DbConfig by "env", it can be either "dev" or "prod".
|
|
129
|
+
*
|
|
130
|
+
* Mostly used for hotfixes on production or common changes on development.
|
|
131
|
+
*/
|
|
132
|
+
async setDbConfig(_ref3) {
|
|
133
|
+
let {
|
|
134
|
+
appId,
|
|
135
|
+
env,
|
|
136
|
+
config
|
|
137
|
+
} = _ref3;
|
|
138
|
+
const {
|
|
139
|
+
dbConfigMutation
|
|
140
|
+
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("mutation", {
|
|
141
|
+
scalars: {
|
|
142
|
+
Json: encoders.json
|
|
143
|
+
}
|
|
144
|
+
})({
|
|
145
|
+
dbConfigMutation: [{
|
|
146
|
+
appId,
|
|
147
|
+
env,
|
|
148
|
+
config
|
|
149
|
+
}, {
|
|
150
|
+
"...on ErrorAccessDenied": {
|
|
151
|
+
__typename: true,
|
|
152
|
+
message: true
|
|
153
|
+
},
|
|
154
|
+
"...on ErrorBasic": {
|
|
155
|
+
__typename: true,
|
|
156
|
+
message: true
|
|
157
|
+
},
|
|
158
|
+
"...on DbConfigMutationResponse": {
|
|
159
|
+
__typename: true,
|
|
160
|
+
dbConfigMutation: true
|
|
161
|
+
}
|
|
162
|
+
}]
|
|
163
|
+
});
|
|
164
|
+
if (!dbConfigMutation) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
if (dbConfigMutation.__typename === "ErrorBasic") {
|
|
168
|
+
return dbConfigMutation;
|
|
169
|
+
}
|
|
170
|
+
if (dbConfigMutation.__typename === "ErrorAccessDenied") {
|
|
171
|
+
return dbConfigMutation;
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
__typename: "SuccessResponse",
|
|
175
|
+
data: dbConfigMutation.dbConfigMutation
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Push the dbConfigDev to the dbCongigProd.
|
|
181
|
+
*
|
|
182
|
+
* It requires a diffHash to verify that the developer has validated his changes.
|
|
183
|
+
*/
|
|
184
|
+
async dbConfigPushToProd(_ref4) {
|
|
185
|
+
let {
|
|
186
|
+
appId,
|
|
187
|
+
diffHash
|
|
188
|
+
} = _ref4;
|
|
189
|
+
const {
|
|
190
|
+
dbConfigToProdMutation
|
|
191
|
+
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("mutation", {
|
|
192
|
+
scalars: {
|
|
193
|
+
Json: encoders.json
|
|
194
|
+
}
|
|
195
|
+
})({
|
|
196
|
+
dbConfigToProdMutation: [{
|
|
197
|
+
appId,
|
|
198
|
+
diffHash
|
|
199
|
+
}, {
|
|
200
|
+
"...on ErrorAccessDenied": {
|
|
201
|
+
__typename: true,
|
|
202
|
+
message: true
|
|
203
|
+
},
|
|
204
|
+
"...on ErrorBasic": {
|
|
205
|
+
__typename: true,
|
|
206
|
+
message: true
|
|
207
|
+
},
|
|
208
|
+
"...on DbConfigToProdMutationResponse": {
|
|
209
|
+
__typename: true,
|
|
210
|
+
dbConfigToProdMutation: true
|
|
211
|
+
}
|
|
212
|
+
}]
|
|
213
|
+
});
|
|
214
|
+
if (!dbConfigToProdMutation) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
if (dbConfigToProdMutation.__typename === "ErrorBasic") {
|
|
218
|
+
return dbConfigToProdMutation;
|
|
219
|
+
}
|
|
220
|
+
if (dbConfigToProdMutation.__typename === "ErrorAccessDenied") {
|
|
221
|
+
return dbConfigToProdMutation;
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
__typename: "SuccessResponse",
|
|
225
|
+
data: dbConfigToProdMutation.dbConfigToProdMutation
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Get the value of a field.
|
|
231
|
+
*/
|
|
232
|
+
async get(_ref5) {
|
|
233
|
+
let {
|
|
234
|
+
field,
|
|
235
|
+
appId,
|
|
236
|
+
userId,
|
|
237
|
+
env
|
|
238
|
+
} = _ref5;
|
|
26
239
|
const {
|
|
27
240
|
dbGet
|
|
28
241
|
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("query")({
|
|
29
242
|
dbGet: [{
|
|
30
243
|
field,
|
|
31
|
-
|
|
244
|
+
appId,
|
|
245
|
+
userId,
|
|
246
|
+
env
|
|
32
247
|
}, {
|
|
33
248
|
"...on ErrorAccessDenied": {
|
|
34
249
|
__typename: true,
|
|
35
250
|
message: true
|
|
36
251
|
},
|
|
252
|
+
"...on ErrorBasic": {
|
|
253
|
+
__typename: true,
|
|
254
|
+
message: true
|
|
255
|
+
},
|
|
37
256
|
"...on ErrorNotExist": {
|
|
38
257
|
__typename: true,
|
|
39
258
|
message: true
|
|
@@ -54,6 +273,9 @@ export class SecrecyDbClient {
|
|
|
54
273
|
if (dbGet.__typename === "ErrorAccessDenied") {
|
|
55
274
|
return dbGet;
|
|
56
275
|
}
|
|
276
|
+
if (dbGet.__typename === "ErrorBasic") {
|
|
277
|
+
return dbGet;
|
|
278
|
+
}
|
|
57
279
|
if (dbGet.__typename === "ErrorNotExist") {
|
|
58
280
|
return dbGet;
|
|
59
281
|
}
|
|
@@ -65,11 +287,17 @@ export class SecrecyDbClient {
|
|
|
65
287
|
data: dbGet.json.res
|
|
66
288
|
};
|
|
67
289
|
}
|
|
68
|
-
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Set an user document.
|
|
293
|
+
*/
|
|
294
|
+
async set(_ref6) {
|
|
69
295
|
let {
|
|
70
296
|
value,
|
|
297
|
+
appId,
|
|
298
|
+
env,
|
|
71
299
|
userId
|
|
72
|
-
} =
|
|
300
|
+
} = _ref6;
|
|
73
301
|
if (typeof value !== "object") {
|
|
74
302
|
throw new Error(`value should be an object including fields you want to update.`);
|
|
75
303
|
}
|
|
@@ -78,12 +306,18 @@ export class SecrecyDbClient {
|
|
|
78
306
|
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("mutation")({
|
|
79
307
|
dbSet: [{
|
|
80
308
|
userId,
|
|
309
|
+
appId,
|
|
310
|
+
env,
|
|
81
311
|
value: serialize(value).toString("base64")
|
|
82
312
|
}, {
|
|
83
313
|
"...on ErrorAccessDenied": {
|
|
84
314
|
__typename: true,
|
|
85
315
|
message: true
|
|
86
316
|
},
|
|
317
|
+
"...on ErrorBasic": {
|
|
318
|
+
__typename: true,
|
|
319
|
+
message: true
|
|
320
|
+
},
|
|
87
321
|
"...on ErrorNotFound": {
|
|
88
322
|
__typename: true,
|
|
89
323
|
message: true
|
|
@@ -103,6 +337,9 @@ export class SecrecyDbClient {
|
|
|
103
337
|
if (dbSet.__typename === "ErrorNotFound") {
|
|
104
338
|
return dbSet;
|
|
105
339
|
}
|
|
340
|
+
if (dbSet.__typename === "ErrorBasic") {
|
|
341
|
+
return dbSet;
|
|
342
|
+
}
|
|
106
343
|
if (!dbSet.dbSet) {
|
|
107
344
|
return null;
|
|
108
345
|
}
|
|
@@ -111,32 +348,37 @@ export class SecrecyDbClient {
|
|
|
111
348
|
data: dbSet.dbSet.res
|
|
112
349
|
};
|
|
113
350
|
}
|
|
114
|
-
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Searches for user fields that match the search arguments.
|
|
354
|
+
*/
|
|
355
|
+
async search(_ref7) {
|
|
115
356
|
let {
|
|
357
|
+
appId,
|
|
358
|
+
env,
|
|
116
359
|
search,
|
|
117
|
-
field
|
|
118
|
-
|
|
360
|
+
field,
|
|
361
|
+
take,
|
|
362
|
+
skip,
|
|
363
|
+
orderBy
|
|
364
|
+
} = _ref7;
|
|
119
365
|
const {
|
|
120
366
|
dbSearch
|
|
121
367
|
} = await _classPrivateFieldLooseBase(this, _thunder)[_thunder]("query", {
|
|
122
368
|
scalars: {
|
|
123
|
-
Json:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
},
|
|
127
|
-
DateTime: {
|
|
128
|
-
decode: e => new Date(e),
|
|
129
|
-
encode: e => e.toISOString()
|
|
130
|
-
},
|
|
131
|
-
BigInt: {
|
|
132
|
-
decode: e => BigInt(e),
|
|
133
|
-
encode: e => e.toString()
|
|
134
|
-
}
|
|
369
|
+
Json: encoders.json,
|
|
370
|
+
DateTime: encoders.dateTime,
|
|
371
|
+
BigInt: encoders.bigInt
|
|
135
372
|
}
|
|
136
373
|
})({
|
|
137
374
|
dbSearch: [{
|
|
375
|
+
appId,
|
|
376
|
+
env,
|
|
377
|
+
field,
|
|
138
378
|
search,
|
|
139
|
-
|
|
379
|
+
take,
|
|
380
|
+
skip,
|
|
381
|
+
orderBy
|
|
140
382
|
}, {
|
|
141
383
|
"...on ErrorAccessDenied": {
|
|
142
384
|
__typename: true,
|
|
@@ -174,4 +416,4 @@ export class SecrecyDbClient {
|
|
|
174
416
|
};
|
|
175
417
|
}
|
|
176
418
|
}
|
|
177
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXJpYWxpemUiLCJTZWNyZWN5RGJDbGllbnQiLCJjb25zdHJ1Y3RvciIsIl9jbGllbnQiLCJfa2V5cyIsInRodW5kZXIiLCJnZXQiLCJmaWVsZCIsInVzZXJJZCIsImRiR2V0IiwiX190eXBlbmFtZSIsIm1lc3NhZ2UiLCJqc29uIiwiZGF0YSIsInJlcyIsInNldCIsInZhbHVlIiwiRXJyb3IiLCJkYlNldCIsInRvU3RyaW5nIiwic2VhcmNoIiwiZGJTZWFyY2giLCJzY2FsYXJzIiwiSnNvbiIsImVuY29kZSIsImUiLCJKU09OIiwic3RyaW5naWZ5IiwiZGVjb2RlIiwicGFyc2UiLCJEYXRlVGltZSIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsIkJpZ0ludCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvU2VjcmVjeURiQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuaW1wb3J0IHR5cGUgeyBTZWNyZWN5Q2xpZW50LCBTdWNjZXNzUmVzcG9uc2UsIFVzZXJEYXRhIH0gZnJvbSBcIi4uL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleVBhaXIgfSBmcm9tIFwiLi4vY3J5cHRvL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEVycm9yQWNjZXNzRGVuaWVkLFxuICBFcnJvckJhc2ljLFxuICBFcnJvck5vdEV4aXN0LFxuICBFcnJvck5vdEZvdW5kXG59IGZyb20gXCIuLi9lcnJvci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBUaHVuZGVyIH0gZnJvbSBcIi4uL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgRG9jdW1lbnQgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgc2VyaWFsaXplIH0gZnJvbSBcImJzb25cIjtcblxuZXhwb3J0IGNsYXNzIFNlY3JlY3lEYkNsaWVudCB7XG4gIC8vICNjbGllbnQ6IFNlY3JlY3lDbGllbnQ7XG5cbiAgLy8gI2tleXM6IEtleVBhaXI7XG5cbiAgI3RodW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIFRodW5kZXI+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIF9jbGllbnQ6IFNlY3JlY3lDbGllbnQsXG4gICAgX2tleXM6IEtleVBhaXIsXG4gICAgdGh1bmRlcjogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj5cbiAgKSB7XG4gICAgLy8gdGhpcy4jY2xpZW50ID0gY2xpZW50O1xuICAgIC8vIHRoaXMuI2tleXMgPSBrZXlzO1xuICAgIHRoaXMuI3RodW5kZXIgPSB0aHVuZGVyO1xuICB9XG5cbiAgYXN5bmMgZ2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8XG4gICAgfCBTdWNjZXNzUmVzcG9uc2U8VT5cbiAgICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gICAgfCBFcnJvck5vdEV4aXN0XG4gICAgfCBFcnJvck5vdEZvdW5kXG4gICAgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiKSh7XG4gICAgICBkYkdldDogW1xuICAgICAgICB7XG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgdXNlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90RXhpc3RcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JOb3RGb3VuZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBEYkdldFJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBqc29uOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRiR2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGJHZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZGJHZXQ7XG4gICAgfVxuXG4gICAgaWYgKGRiR2V0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RFeGlzdFwiKSB7XG4gICAgICByZXR1cm4gZGJHZXQ7XG4gICAgfVxuXG4gICAgaWYgKGRiR2V0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gZGJHZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiAoZGJHZXQuanNvbiBhcyB7IHJlczogVSB9KS5yZXNcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc2V0PFQgZXh0ZW5kcyBVc2VyRGF0YSwgVSBleHRlbmRzIERvY3VtZW50Pih7XG4gICAgdmFsdWUsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICB2YWx1ZTogVTtcbiAgICB1c2VySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VD4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IEVycm9yTm90Rm91bmQgfCBudWxsPiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgdmFsdWUgc2hvdWxkIGJlIGFuIG9iamVjdCBpbmNsdWRpbmcgZmllbGRzIHlvdSB3YW50IHRvIHVwZGF0ZS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGJTZXQgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkYlNldDogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemUodmFsdWUpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJTZXRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZGJTZXQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJTZXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYlNldC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYlNldDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEZvdW5kXCIpIHtcbiAgICAgIHJldHVybiBkYlNldDtcbiAgICB9XG5cbiAgICBpZiAoIWRiU2V0LmRiU2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IChkYlNldC5kYlNldCBhcyB7IHJlczogVCB9KS5yZXNcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgc2VhcmNoPFQ+KHtcbiAgICBzZWFyY2gsXG4gICAgZmllbGRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFxuICAgIFN1Y2Nlc3NSZXNwb25zZTxUW10+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBFcnJvckJhc2ljIHwgRXJyb3JOb3RFeGlzdCB8IG51bGxcbiAgPiB7XG4gICAgY29uc3QgeyBkYlNlYXJjaCB9ID0gYXdhaXQgdGhpcy4jdGh1bmRlcihcInF1ZXJ5XCIsIHtcbiAgICAgIHNjYWxhcnM6IHtcbiAgICAgICAgSnNvbjoge1xuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICAgIGRlY29kZTogKGU6IHVua25vd24pID0+IEpTT04ucGFyc2UoZSBhcyBzdHJpbmcpXG4gICAgICAgIH0sXG4gICAgICAgIERhdGVUaW1lOiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gbmV3IERhdGUoZSBhcyBzdHJpbmcpLFxuICAgICAgICAgIGVuY29kZTogKGU6IHVua25vd24pID0+IChlIGFzIERhdGUpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfSxcbiAgICAgICAgQmlnSW50OiB7XG4gICAgICAgICAgZGVjb2RlOiAoZTogdW5rbm93bikgPT4gQmlnSW50KGUgYXMgc3RyaW5nKSxcbiAgICAgICAgICBlbmNvZGU6IChlOiB1bmtub3duKSA9PiAoZSBhcyBiaWdpbnQpLnRvU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JCYXNpY1wiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiU2VhcmNoUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGpzb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJTZWFyY2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYlNlYXJjaC5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYlNlYXJjaDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZWFyY2guX190eXBlbmFtZSA9PT0gXCJFcnJvckJhc2ljXCIpIHtcbiAgICAgIHJldHVybiBkYlNlYXJjaDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZWFyY2guX190eXBlbmFtZSA9PT0gXCJFcnJvck5vdEV4aXN0XCIpIHtcbiAgICAgIHJldHVybiBkYlNlYXJjaDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgX190eXBlbmFtZTogXCJTdWNjZXNzUmVzcG9uc2VcIixcbiAgICAgIGRhdGE6IGRiU2VhcmNoLmpzb24gYXMgdW5rbm93biBhcyBUW11cbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBV0EsU0FBU0EsU0FBUyxRQUFRLE1BQU07QUFBQztBQUVqQyxPQUFPLE1BQU1DLGVBQWUsQ0FBQztFQUMzQjs7RUFFQTs7RUFJQUMsV0FBVyxDQUNUQyxPQUFzQixFQUN0QkMsS0FBYyxFQUNkQyxPQUFtQyxFQUNuQztJQUFBO01BQUE7TUFBQTtJQUFBO0lBQ0E7SUFDQTtJQUNBLGdDQUFJLHdCQUFZQSxPQUFPO0VBQ3pCO0VBRUEsTUFBTUMsR0FBRyxPQVlQO0lBQUEsSUFaVztNQUNYQyxLQUFLO01BQ0xDO0lBSUYsQ0FBQztJQU9DLE1BQU07TUFBRUM7SUFBTSxDQUFDLEdBQUcsTUFBTSxnQ0FBSSxzQkFBVSxPQUFPLEVBQUU7TUFDN0NBLEtBQUssRUFBRSxDQUNMO1FBQ0VGLEtBQUs7UUFDTEM7TUFDRixDQUFDLEVBQ0Q7UUFDRSx5QkFBeUIsRUFBRTtVQUN6QkUsVUFBVSxFQUFFLElBQUk7VUFDaEJDLE9BQU8sRUFBRTtRQUNYLENBQUM7UUFDRCxxQkFBcUIsRUFBRTtVQUNyQkQsVUFBVSxFQUFFLElBQUk7VUFDaEJDLE9BQU8sRUFBRTtRQUNYLENBQUM7UUFDRCxxQkFBcUIsRUFBRTtVQUNyQkQsVUFBVSxFQUFFLElBQUk7VUFDaEJDLE9BQU8sRUFBRTtRQUNYLENBQUM7UUFDRCxxQkFBcUIsRUFBRTtVQUNyQkQsVUFBVSxFQUFFLElBQUk7VUFDaEJFLElBQUksRUFBRTtRQUNSO01BQ0YsQ0FBQztJQUVMLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQ0gsS0FBSyxFQUFFO01BQ1YsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFJQSxLQUFLLENBQUNDLFVBQVUsS0FBSyxtQkFBbUIsRUFBRTtNQUM1QyxPQUFPRCxLQUFLO0lBQ2Q7SUFFQSxJQUFJQSxLQUFLLENBQUNDLFVBQVUsS0FBSyxlQUFlLEVBQUU7TUFDeEMsT0FBT0Qs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
|
|
419
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbmNvZGVycyIsInNlcmlhbGl6ZSIsIlNlY3JlY3lEYkNsaWVudCIsImNvbnN0cnVjdG9yIiwiX2NsaWVudCIsIl9rZXlzIiwidGh1bmRlciIsImdldERiQ29uZmlnIiwiYXBwSWQiLCJlbnYiLCJkYkNvbmZpZyIsInNjYWxhcnMiLCJKc29uIiwianNvbiIsIl9fdHlwZW5hbWUiLCJtZXNzYWdlIiwiZGF0YSIsImRiR2V0RGlmZiIsImNvbmZpZyIsImRiR2V0RGlmZkNvbmZpZyIsImN1cnJlbnQiLCJuZXh0IiwiZGlmZiIsImhhc2giLCJzZXREYkNvbmZpZyIsImRiQ29uZmlnTXV0YXRpb24iLCJkYkNvbmZpZ1B1c2hUb1Byb2QiLCJkaWZmSGFzaCIsImRiQ29uZmlnVG9Qcm9kTXV0YXRpb24iLCJnZXQiLCJmaWVsZCIsInVzZXJJZCIsImRiR2V0IiwicmVzIiwic2V0IiwidmFsdWUiLCJFcnJvciIsImRiU2V0IiwidG9TdHJpbmciLCJzZWFyY2giLCJ0YWtlIiwic2tpcCIsIm9yZGVyQnkiLCJkYlNlYXJjaCIsIkRhdGVUaW1lIiwiZGF0ZVRpbWUiLCJCaWdJbnQiLCJiaWdJbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L1NlY3JlY3lEYkNsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbmltcG9ydCB0eXBlIHsgU2VjcmVjeUNsaWVudCwgU3VjY2Vzc1Jlc3BvbnNlLCBVc2VyRGF0YSB9IGZyb20gXCIuLi9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBLZXlQYWlyIH0gZnJvbSBcIi4uL2NyeXB0by9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBFcnJvckFjY2Vzc0RlbmllZCxcbiAgRXJyb3JCYXNpYyxcbiAgRXJyb3JOb3RFeGlzdCxcbiAgRXJyb3JOb3RGb3VuZFxufSBmcm9tIFwiLi4vZXJyb3IuanNcIjtcbmltcG9ydCB7IGVuY29kZXJzIH0gZnJvbSBcIi4uL3V0aWxzL2VuY29kZXJzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IE1vbmdvRGJFbnYsIFRodW5kZXIgfSBmcm9tIFwiLi4vemV1cy9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBzZXJpYWxpemUgfSBmcm9tIFwiYnNvblwiO1xuXG5leHBvcnQgY2xhc3MgU2VjcmVjeURiQ2xpZW50IHtcbiAgLy8gI2NsaWVudDogU2VjcmVjeUNsaWVudDtcblxuICAvLyAja2V5czogS2V5UGFpcjtcblxuICAjdGh1bmRlcjogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgX2NsaWVudDogU2VjcmVjeUNsaWVudCxcbiAgICBfa2V5czogS2V5UGFpcixcbiAgICB0aHVuZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPlxuICApIHtcbiAgICAvLyB0aGlzLiNjbGllbnQgPSBjbGllbnQ7XG4gICAgLy8gdGhpcy4ja2V5cyA9IGtleXM7XG4gICAgdGhpcy4jdGh1bmRlciA9IHRodW5kZXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBEYkNvbmZpZyBieSBcImVudlwiLCBpdCBjYW4gYmUgZWl0aGVyIFwiZGV2XCIgb3IgXCJwcm9kXCIuXG4gICAqL1xuICBhc3luYyBnZXREYkNvbmZpZzxUPih7XG4gICAgYXBwSWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBhcHBJZDogc3RyaW5nO1xuICAgIGVudjogTW9uZ29EYkVudjtcbiAgfSk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPFQ+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBFcnJvck5vdEZvdW5kIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgZGJDb25maWcgfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiLCB7XG4gICAgICBzY2FsYXJzOiB7XG4gICAgICAgIEpzb246IGVuY29kZXJzLmpzb25cbiAgICAgIH1cbiAgICB9KSh7XG4gICAgICBkYkNvbmZpZzogW1xuICAgICAgICB7XG4gICAgICAgICAgYXBwSWQsXG4gICAgICAgICAgZW52XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJDb25maWdSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAganNvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYkNvbmZpZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRiQ29uZmlnLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRiQ29uZmlnO1xuICAgIH1cblxuICAgIGlmIChkYkNvbmZpZy5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIGRiQ29uZmlnO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGJDb25maWcuanNvbiBhcyBUXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRpZmZlcmVuY2UgcmVjaXBlIGJldHdlZW4gdHdvIERCIGNvbmZpZ3VyYXRpb25zLlxuICAgKi9cbiAgYXN5bmMgZGJHZXREaWZmPFQ+KHtcbiAgICBhcHBJZCxcbiAgICBlbnYsXG4gICAgY29uZmlnXG4gIH06IHtcbiAgICBhcHBJZDogc3RyaW5nO1xuICAgIGVudjogTW9uZ29EYkVudjtcbiAgICBjb25maWc6IHN0cmluZztcbiAgfSk6IFByb21pc2U8U3VjY2Vzc1Jlc3BvbnNlPFQ+IHwgRXJyb3JBY2Nlc3NEZW5pZWQgfCBFcnJvckJhc2ljIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgZGJHZXREaWZmIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwicXVlcnlcIiwge1xuICAgICAgc2NhbGFyczoge1xuICAgICAgICBKc29uOiBlbmNvZGVycy5qc29uXG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgZGJHZXREaWZmOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBJZCxcbiAgICAgICAgICBlbnYsXG4gICAgICAgICAgY29uZmlnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQmFzaWNcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJHZXREaWZmQ29uZmlnUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGRiR2V0RGlmZkNvbmZpZzoge1xuICAgICAgICAgICAgICBlbnY6IHRydWUsXG4gICAgICAgICAgICAgIGN1cnJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIG5leHQ6IHRydWUsXG4gICAgICAgICAgICAgIGRpZmY6IHRydWUsXG4gICAgICAgICAgICAgIGhhc2g6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJHZXREaWZmKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGJHZXREaWZmLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gZGJHZXREaWZmO1xuICAgIH1cblxuICAgIGlmIChkYkdldERpZmYuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZGJHZXREaWZmO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGJHZXREaWZmLmRiR2V0RGlmZkNvbmZpZyBhcyBUXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIERiQ29uZmlnIGJ5IFwiZW52XCIsIGl0IGNhbiBiZSBlaXRoZXIgXCJkZXZcIiBvciBcInByb2RcIi5cbiAgICpcbiAgICogTW9zdGx5IHVzZWQgZm9yIGhvdGZpeGVzIG9uIHByb2R1Y3Rpb24gb3IgY29tbW9uIGNoYW5nZXMgb24gZGV2ZWxvcG1lbnQuXG4gICAqL1xuICBhc3luYyBzZXREYkNvbmZpZzxUPih7XG4gICAgYXBwSWQsXG4gICAgZW52LFxuICAgIGNvbmZpZ1xuICB9OiB7XG4gICAgYXBwSWQ6IHN0cmluZztcbiAgICBlbnY6IE1vbmdvRGJFbnY7XG4gICAgY29uZmlnOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFN1Y2Nlc3NSZXNwb25zZTxUPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JCYXNpYyB8IG51bGw+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnTXV0YXRpb24gfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJtdXRhdGlvblwiLCB7XG4gICAgICBzY2FsYXJzOiB7XG4gICAgICAgIEpzb246IGVuY29kZXJzLmpzb25cbiAgICAgIH1cbiAgICB9KSh7XG4gICAgICBkYkNvbmZpZ011dGF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBJZCxcbiAgICAgICAgICBlbnYsXG4gICAgICAgICAgY29uZmlnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQWNjZXNzRGVuaWVkXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yQmFzaWNcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJDb25maWdNdXRhdGlvblJlc3BvbnNlXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBkYkNvbmZpZ011dGF0aW9uOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRiQ29uZmlnTXV0YXRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYkNvbmZpZ011dGF0aW9uLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gZGJDb25maWdNdXRhdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoZGJDb25maWdNdXRhdGlvbi5fX3R5cGVuYW1lID09PSBcIkVycm9yQWNjZXNzRGVuaWVkXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZ011dGF0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGJDb25maWdNdXRhdGlvbi5kYkNvbmZpZ011dGF0aW9uIGFzIFRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFB1c2ggdGhlIGRiQ29uZmlnRGV2IHRvIHRoZSBkYkNvbmdpZ1Byb2QuXG4gICAqXG4gICAqIEl0IHJlcXVpcmVzIGEgZGlmZkhhc2ggdG8gdmVyaWZ5IHRoYXQgdGhlIGRldmVsb3BlciBoYXMgdmFsaWRhdGVkIGhpcyBjaGFuZ2VzLlxuICAgKi9cbiAgYXN5bmMgZGJDb25maWdQdXNoVG9Qcm9kPFQ+KHtcbiAgICBhcHBJZCxcbiAgICBkaWZmSGFzaFxuICB9OiB7XG4gICAgYXBwSWQ6IHN0cmluZztcbiAgICBkaWZmSGFzaDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxTdWNjZXNzUmVzcG9uc2U8VD4gfCBFcnJvckFjY2Vzc0RlbmllZCB8IEVycm9yQmFzaWMgfCBudWxsPiB7XG4gICAgY29uc3QgeyBkYkNvbmZpZ1RvUHJvZE11dGF0aW9uIH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIiwge1xuICAgICAgc2NhbGFyczoge1xuICAgICAgICBKc29uOiBlbmNvZGVycy5qc29uXG4gICAgICB9XG4gICAgfSkoe1xuICAgICAgZGJDb25maWdUb1Byb2RNdXRhdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgYXBwSWQsXG4gICAgICAgICAgZGlmZkhhc2hcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JCYXNpY1wiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBEYkNvbmZpZ1RvUHJvZE11dGF0aW9uUmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGRiQ29uZmlnVG9Qcm9kTXV0YXRpb246IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghZGJDb25maWdUb1Byb2RNdXRhdGlvbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRiQ29uZmlnVG9Qcm9kTXV0YXRpb24uX190eXBlbmFtZSA9PT0gXCJFcnJvckJhc2ljXCIpIHtcbiAgICAgIHJldHVybiBkYkNvbmZpZ1RvUHJvZE11dGF0aW9uO1xuICAgIH1cblxuICAgIGlmIChkYkNvbmZpZ1RvUHJvZE11dGF0aW9uLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRiQ29uZmlnVG9Qcm9kTXV0YXRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiBkYkNvbmZpZ1RvUHJvZE11dGF0aW9uLmRiQ29uZmlnVG9Qcm9kTXV0YXRpb24gYXMgVFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBvZiBhIGZpZWxkLlxuICAgKi9cbiAgYXN5bmMgZ2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICBhcHBJZCxcbiAgICB1c2VySWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIGFwcElkOiBzdHJpbmc7XG4gICAgZW52OiBNb25nb0RiRW52O1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFxuICAgIHwgU3VjY2Vzc1Jlc3BvbnNlPFU+XG4gICAgfCBFcnJvckFjY2Vzc0RlbmllZFxuICAgIHwgRXJyb3JCYXNpY1xuICAgIHwgRXJyb3JOb3RFeGlzdFxuICAgIHwgRXJyb3JOb3RGb3VuZFxuICAgIHwgbnVsbFxuICA+IHtcbiAgICBjb25zdCB7IGRiR2V0IH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwicXVlcnlcIikoe1xuICAgICAgZGJHZXQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGFwcElkLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICBlbnZcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JCYXNpY1wiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEV4aXN0XCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90Rm91bmRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJHZXRSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAganNvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYkdldCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRiR2V0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRiR2V0O1xuICAgIH1cblxuICAgIGlmIChkYkdldC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIGRiR2V0O1xuICAgIH1cblxuICAgIGlmIChkYkdldC5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGRiR2V0O1xuICAgIH1cblxuICAgIGlmIChkYkdldC5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90Rm91bmRcIikge1xuICAgICAgcmV0dXJuIGRiR2V0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogKGRiR2V0Lmpzb24gYXMgeyByZXM6IFUgfSkucmVzXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYW4gdXNlciBkb2N1bWVudC5cbiAgICovXG4gIGFzeW5jIHNldDxUIGV4dGVuZHMgVXNlckRhdGEsIFUgZXh0ZW5kcyBEb2N1bWVudD4oe1xuICAgIHZhbHVlLFxuICAgIGFwcElkLFxuICAgIGVudixcbiAgICB1c2VySWRcbiAgfToge1xuICAgIHZhbHVlOiBVO1xuICAgIGFwcElkOiBzdHJpbmc7XG4gICAgZW52OiBNb25nb0RiRW52O1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFxuICAgIFN1Y2Nlc3NSZXNwb25zZTxUPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JCYXNpYyB8IEVycm9yTm90Rm91bmQgfCBudWxsXG4gID4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHZhbHVlIHNob3VsZCBiZSBhbiBvYmplY3QgaW5jbHVkaW5nIGZpZWxkcyB5b3Ugd2FudCB0byB1cGRhdGUuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGRiU2V0IH0gPSBhd2FpdCB0aGlzLiN0aHVuZGVyKFwibXV0YXRpb25cIikoe1xuICAgICAgZGJTZXQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICBhcHBJZCxcbiAgICAgICAgICBlbnYsXG4gICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZSh2YWx1ZSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiLi4ub24gRXJyb3JBY2Nlc3NEZW5pZWRcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRXJyb3JCYXNpY1wiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvck5vdEZvdW5kXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIERiU2V0UmVzcG9uc2VcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGRiU2V0OiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWRiU2V0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZGJTZXQuX190eXBlbmFtZSA9PT0gXCJFcnJvckFjY2Vzc0RlbmllZFwiKSB7XG4gICAgICByZXR1cm4gZGJTZXQ7XG4gICAgfVxuXG4gICAgaWYgKGRiU2V0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JOb3RGb3VuZFwiKSB7XG4gICAgICByZXR1cm4gZGJTZXQ7XG4gICAgfVxuXG4gICAgaWYgKGRiU2V0Ll9fdHlwZW5hbWUgPT09IFwiRXJyb3JCYXNpY1wiKSB7XG4gICAgICByZXR1cm4gZGJTZXQ7XG4gICAgfVxuXG4gICAgaWYgKCFkYlNldC5kYlNldCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIF9fdHlwZW5hbWU6IFwiU3VjY2Vzc1Jlc3BvbnNlXCIsXG4gICAgICBkYXRhOiAoZGJTZXQuZGJTZXQgYXMgeyByZXM6IFQgfSkucmVzXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2hlcyBmb3IgdXNlciBmaWVsZHMgdGhhdCBtYXRjaCB0aGUgc2VhcmNoIGFyZ3VtZW50cy5cbiAgICovXG4gIGFzeW5jIHNlYXJjaDxUPih7XG4gICAgYXBwSWQsXG4gICAgZW52LFxuICAgIHNlYXJjaCxcbiAgICBmaWVsZCxcbiAgICB0YWtlLFxuICAgIHNraXAsXG4gICAgb3JkZXJCeVxuICB9OiB7XG4gICAgYXBwSWQ6IHN0cmluZztcbiAgICBlbnY6IE1vbmdvRGJFbnY7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBzZWFyY2g6IHN0cmluZztcbiAgICB0YWtlPzogbnVtYmVyO1xuICAgIHNraXA/OiBudW1iZXI7XG4gICAgb3JkZXJCeT86IFwiY3JlYXRlZEF0X0FTQ1wiIHwgXCJjcmVhdGVkQXRfREVTQ1wiO1xuICB9KTogUHJvbWlzZTxcbiAgICBTdWNjZXNzUmVzcG9uc2U8VFtdPiB8IEVycm9yQWNjZXNzRGVuaWVkIHwgRXJyb3JCYXNpYyB8IEVycm9yTm90RXhpc3QgfCBudWxsXG4gID4ge1xuICAgIGNvbnN0IHsgZGJTZWFyY2ggfSA9IGF3YWl0IHRoaXMuI3RodW5kZXIoXCJxdWVyeVwiLCB7XG4gICAgICBzY2FsYXJzOiB7XG4gICAgICAgIEpzb246IGVuY29kZXJzLmpzb24sXG4gICAgICAgIERhdGVUaW1lOiBlbmNvZGVycy5kYXRlVGltZSxcbiAgICAgICAgQmlnSW50OiBlbmNvZGVycy5iaWdJbnRcbiAgICAgIH1cbiAgICB9KSh7XG4gICAgICBkYlNlYXJjaDogW1xuICAgICAgICB7XG4gICAgICAgICAgYXBwSWQsXG4gICAgICAgICAgZW52LFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgICB0YWtlLFxuICAgICAgICAgIHNraXAsXG4gICAgICAgICAgb3JkZXJCeVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCIuLi5vbiBFcnJvckFjY2Vzc0RlbmllZFwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCIuLi5vbiBFcnJvckJhc2ljXCI6IHtcbiAgICAgICAgICAgIF9fdHlwZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZXNzYWdlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIi4uLm9uIEVycm9yTm90RXhpc3RcIjoge1xuICAgICAgICAgICAgX190eXBlbmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiLi4ub24gRGJTZWFyY2hSZXNwb25zZVwiOiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lOiB0cnVlLFxuICAgICAgICAgICAganNvbjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFkYlNlYXJjaCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGRiU2VhcmNoLl9fdHlwZW5hbWUgPT09IFwiRXJyb3JBY2Nlc3NEZW5pZWRcIikge1xuICAgICAgcmV0dXJuIGRiU2VhcmNoO1xuICAgIH1cblxuICAgIGlmIChkYlNlYXJjaC5fX3R5cGVuYW1lID09PSBcIkVycm9yQmFzaWNcIikge1xuICAgICAgcmV0dXJuIGRiU2VhcmNoO1xuICAgIH1cblxuICAgIGlmIChkYlNlYXJjaC5fX3R5cGVuYW1lID09PSBcIkVycm9yTm90RXhpc3RcIikge1xuICAgICAgcmV0dXJuIGRiU2VhcmNoO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBfX3R5cGVuYW1lOiBcIlN1Y2Nlc3NSZXNwb25zZVwiLFxuICAgICAgZGF0YTogZGJTZWFyY2guanNvbiBhcyB1bmtub3duIGFzIFRbXVxuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFTQSxTQUFTQSxRQUFRLFFBQVEsc0JBQXNCO0FBRy9DLFNBQVNDLFNBQVMsUUFBUSxNQUFNO0FBQUM7QUFFakMsT0FBTyxNQUFNQyxlQUFlLENBQUM7RUFDM0I7O0VBRUE7O0VBSUFDLFdBQVcsQ0FDVEMsT0FBc0IsRUFDdEJDLEtBQWMsRUFDZEMsT0FBbUMsRUFDbkM7SUFBQTtNQUFBO01BQUE7SUFBQTtJQUNBO0lBQ0E7SUFDQSxnQ0FBSSx3QkFBWUEsT0FBTztFQUN6Qjs7RUFFQTtBQUNGO0FBQ0E7RUFDRSxNQUFNQyxXQUFXLE9BTTBEO0lBQUEsSUFOdEQ7TUFDbkJDLEtBQUs7TUFDTEM7SUFJRixDQUFDO0lBQ0MsTUFBTTtNQUFFQztJQUFTLENBQUMsR0FBRyxNQUFNLGdDQUFJLHNCQUFVLE9BQU8sRUFBRTtNQUNoREMsT0FBTyxFQUFFO1FBQ1BDLElBQUksRUFBRVosUUFBUSxDQUFDYTtNQUNqQjtJQUNGLENBQUMsRUFBRTtNQUNESCxRQUFRLEVBQUUsQ0FDUjtRQUNFRixLQUFLO1FBQ0xDO01BQ0YsQ0FBQyxFQUNEO1FBQ0UseUJBQXlCLEVBQUU7VUFDekJLLFVBQVUsRUFBRSxJQUFJO1VBQ2hCQyxPQUFPLEVBQUU7UUFDWCxDQUFDO1FBQ0QscUJBQXFCLEVBQUU7VUFDckJELFVBQVUsRUFBRSxJQUFJO1VBQ2hCQyxPQUFPLEVBQUU7UUFDWCxDQUFDO1FBQ0Qsd0JBQXdCLEVBQUU7VUFDeEJELFVBQVUsRUFBRSxJQUFJO1VBQ2hCRCxJQUFJLEVBQUU7UUFDUjtNQUNGLENBQUM7SUFFTCxDQUFDLENBQUM7SUFFRixJQUFJLENBQUNILFFBQVEsRUFBRTtNQUNiLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSUEsUUFBUSxDQUFDSSxVQUFVLEtBQUssbUJBQW1CLEVBQUU7TUFD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
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const jsonEncoder: {
|
|
2
|
+
decode: (e: unknown) => object;
|
|
3
|
+
encode: (e: unknown) => string;
|
|
4
|
+
};
|
|
5
|
+
export declare const dateTimeEncoder: {
|
|
6
|
+
decode: (e: unknown) => Date;
|
|
7
|
+
encode: (e: unknown) => string;
|
|
8
|
+
};
|
|
9
|
+
export declare const bigIntEncoder: {
|
|
10
|
+
decode: (e: unknown) => bigint;
|
|
11
|
+
encode: (e: unknown) => string;
|
|
12
|
+
};
|
|
13
|
+
export declare const encoders: {
|
|
14
|
+
json: {
|
|
15
|
+
decode: (e: unknown) => object;
|
|
16
|
+
encode: (e: unknown) => string;
|
|
17
|
+
};
|
|
18
|
+
dateTime: {
|
|
19
|
+
decode: (e: unknown) => Date;
|
|
20
|
+
encode: (e: unknown) => string;
|
|
21
|
+
};
|
|
22
|
+
bigInt: {
|
|
23
|
+
decode: (e: unknown) => bigint;
|
|
24
|
+
encode: (e: unknown) => string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const jsonEncoder = {
|
|
2
|
+
decode: e => JSON.parse(e),
|
|
3
|
+
encode: e => JSON.stringify(e)
|
|
4
|
+
};
|
|
5
|
+
export const dateTimeEncoder = {
|
|
6
|
+
decode: e => new Date(e),
|
|
7
|
+
encode: e => e.toISOString()
|
|
8
|
+
};
|
|
9
|
+
export const bigIntEncoder = {
|
|
10
|
+
decode: e => BigInt(e),
|
|
11
|
+
encode: e => e.toString()
|
|
12
|
+
};
|
|
13
|
+
export const encoders = {
|
|
14
|
+
json: jsonEncoder,
|
|
15
|
+
dateTime: dateTimeEncoder,
|
|
16
|
+
bigInt: bigIntEncoder
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJqc29uRW5jb2RlciIsImRlY29kZSIsImUiLCJKU09OIiwicGFyc2UiLCJlbmNvZGUiLCJzdHJpbmdpZnkiLCJkYXRlVGltZUVuY29kZXIiLCJEYXRlIiwidG9JU09TdHJpbmciLCJiaWdJbnRFbmNvZGVyIiwiQmlnSW50IiwidG9TdHJpbmciLCJlbmNvZGVycyIsImpzb24iLCJkYXRlVGltZSIsImJpZ0ludCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lbmNvZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QganNvbkVuY29kZXIgPSB7XG4gIGRlY29kZTogKGU6IHVua25vd24pOiBvYmplY3QgPT4gSlNPTi5wYXJzZShlIGFzIHN0cmluZyksXG4gIGVuY29kZTogKGU6IHVua25vd24pOiBzdHJpbmcgPT4gSlNPTi5zdHJpbmdpZnkoZSlcbn07XG5cbmV4cG9ydCBjb25zdCBkYXRlVGltZUVuY29kZXIgPSB7XG4gIGRlY29kZTogKGU6IHVua25vd24pOiBEYXRlID0+IG5ldyBEYXRlKGUgYXMgc3RyaW5nKSxcbiAgZW5jb2RlOiAoZTogdW5rbm93bik6IHN0cmluZyA9PiAoZSBhcyBEYXRlKS50b0lTT1N0cmluZygpXG59O1xuXG5leHBvcnQgY29uc3QgYmlnSW50RW5jb2RlciA9IHtcbiAgZGVjb2RlOiAoZTogdW5rbm93bik6IGJpZ2ludCA9PiBCaWdJbnQoZSBhcyBzdHJpbmcpLFxuICBlbmNvZGU6IChlOiB1bmtub3duKTogc3RyaW5nID0+IChlIGFzIGJpZ2ludCkudG9TdHJpbmcoKVxufTtcblxuZXhwb3J0IGNvbnN0IGVuY29kZXJzID0ge1xuICBqc29uOiBqc29uRW5jb2RlcixcbiAgZGF0ZVRpbWU6IGRhdGVUaW1lRW5jb2RlcixcbiAgYmlnSW50OiBiaWdJbnRFbmNvZGVyXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLFdBQVcsR0FBRztFQUN6QkMsTUFBTSxFQUFHQyxDQUFVLElBQWFDLElBQUksQ0FBQ0MsS0FBSyxDQUFDRixDQUFDLENBQVc7RUFDdkRHLE1BQU0sRUFBR0gsQ0FBVSxJQUFhQyxJQUFJLENBQUNHLFNBQVMsQ0FBQ0osQ0FBQztBQUNsRCxDQUFDO0FBRUQsT0FBTyxNQUFNSyxlQUFlLEdBQUc7RUFDN0JOLE1BQU0sRUFBR0MsQ0FBVSxJQUFXLElBQUlNLElBQUksQ0FBQ04sQ0FBQyxDQUFXO0VBQ25ERyxNQUFNLEVBQUdILENBQVUsSUFBY0EsQ0FBQyxDQUFVTyxXQUFXO0FBQ3pELENBQUM7QUFFRCxPQUFPLE1BQU1DLGFBQWEsR0FBRztFQUMzQlQsTUFBTSxFQUFHQyxDQUFVLElBQWFTLE1BQU0sQ0FBQ1QsQ0FBQyxDQUFXO0VBQ25ERyxNQUFNLEVBQUdILENBQVUsSUFBY0EsQ0FBQyxDQUFZVSxRQUFRO0FBQ3hELENBQUM7QUFFRCxPQUFPLE1BQU1DLFFBQVEsR0FBRztFQUN0QkMsSUFBSSxFQUFFZCxXQUFXO0VBQ2pCZSxRQUFRLEVBQUVSLGVBQWU7RUFDekJTLE1BQU0sRUFBRU47QUFDVixDQUFDIn0=
|