@rosen-bridge/watcher-data-extractor 5.1.0 → 5.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/actions/EventTriggerDB.d.ts +33 -0
- package/dist/actions/EventTriggerDB.d.ts.map +1 -0
- package/dist/actions/EventTriggerDB.js +145 -0
- package/dist/actions/commitmentDB.d.ts +32 -0
- package/dist/actions/commitmentDB.d.ts.map +1 -0
- package/dist/actions/commitmentDB.js +129 -0
- package/dist/actions/permitDB.d.ts +39 -0
- package/dist/actions/permitDB.d.ts.map +1 -0
- package/dist/actions/permitDB.js +166 -0
- package/dist/extractor/permitExtractor.d.ts +2 -0
- package/dist/extractor/permitExtractor.d.ts.map +1 -1
- package/dist/migrations/index.d.ts +4 -4
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/network/ergoNetworkApi.d.ts +15 -0
- package/dist/network/ergoNetworkApi.d.ts.map +1 -0
- package/dist/network/ergoNetworkApi.js +27 -0
- package/dist/network/parser.d.ts +8 -0
- package/dist/network/parser.d.ts.map +1 -0
- package/dist/network/parser.js +5 -0
- package/package.json +4 -4
- package/dist/migrations/postgres/1703509820315-migration.d.ts +0 -7
- package/dist/migrations/postgres/1703509820315-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1703509820315-migration.js +0 -66
- package/dist/migrations/postgres/1708189757400-migration.d.ts +0 -7
- package/dist/migrations/postgres/1708189757400-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1708189757400-migration.js +0 -28
- package/dist/migrations/sqlite/1703509480176-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1703509480176-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1703509480176-migration.js +0 -421
- package/dist/migrations/sqlite/1708175020320-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1708175020320-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1708175020320-migration.js +0 -27
- package/dist/migrations/sqlite/migration1706610773176-migration.d.ts +0 -7
- package/dist/migrations/sqlite/migration1706610773176-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/migration1706610773176-migration.js +0 -419
- package/dist/transformers.d.ts +0 -17
- package/dist/transformers.d.ts.map +0 -1
- package/dist/transformers.js +0 -21
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
import { getWidInfo } from '../../utils';
|
|
2
|
-
export class migration1706610773176 {
|
|
3
|
-
name = 'migration1706610773176';
|
|
4
|
-
async up(queryRunner) {
|
|
5
|
-
// get all events before removing WIDs column
|
|
6
|
-
const events = await queryRunner.query(`
|
|
7
|
-
SELECT "id", "WIDs" from "event_trigger_entity"
|
|
8
|
-
`);
|
|
9
|
-
await queryRunner.query(`
|
|
10
|
-
CREATE TABLE "temporary_event_trigger_entity" (
|
|
11
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
12
|
-
"eventId" varchar NOT NULL DEFAULT ('Not-set'),
|
|
13
|
-
"txId" varchar NOT NULL,
|
|
14
|
-
"extractor" varchar NOT NULL,
|
|
15
|
-
"boxId" varchar NOT NULL,
|
|
16
|
-
"boxSerialized" varchar NOT NULL,
|
|
17
|
-
"block" varchar NOT NULL,
|
|
18
|
-
"height" integer NOT NULL,
|
|
19
|
-
"fromChain" varchar NOT NULL,
|
|
20
|
-
"toChain" varchar NOT NULL,
|
|
21
|
-
"fromAddress" varchar NOT NULL,
|
|
22
|
-
"toAddress" varchar NOT NULL,
|
|
23
|
-
"amount" varchar NOT NULL,
|
|
24
|
-
"bridgeFee" varchar NOT NULL,
|
|
25
|
-
"networkFee" varchar NOT NULL,
|
|
26
|
-
"sourceChainTokenId" varchar NOT NULL,
|
|
27
|
-
"sourceChainHeight" integer NOT NULL,
|
|
28
|
-
"targetChainTokenId" varchar NOT NULL,
|
|
29
|
-
"sourceTxId" varchar NOT NULL,
|
|
30
|
-
"sourceBlockId" varchar NOT NULL,
|
|
31
|
-
"spendBlock" text,
|
|
32
|
-
"spendHeight" integer,
|
|
33
|
-
"spendTxId" text,
|
|
34
|
-
"result" text,
|
|
35
|
-
"paymentTxId" text,
|
|
36
|
-
"WIDsCount" integer NOT NULL,
|
|
37
|
-
"WIDsHash" varchar NOT NULL,
|
|
38
|
-
CONSTRAINT "UQ_c905f221a1b6271ca4405dbbe5f" UNIQUE ("boxId", "extractor")
|
|
39
|
-
)
|
|
40
|
-
`);
|
|
41
|
-
await queryRunner.query(`
|
|
42
|
-
INSERT INTO "temporary_event_trigger_entity"(
|
|
43
|
-
"id",
|
|
44
|
-
"eventId",
|
|
45
|
-
"txId",
|
|
46
|
-
"extractor",
|
|
47
|
-
"boxId",
|
|
48
|
-
"boxSerialized",
|
|
49
|
-
"block",
|
|
50
|
-
"height",
|
|
51
|
-
"fromChain",
|
|
52
|
-
"toChain",
|
|
53
|
-
"fromAddress",
|
|
54
|
-
"toAddress",
|
|
55
|
-
"amount",
|
|
56
|
-
"bridgeFee",
|
|
57
|
-
"networkFee",
|
|
58
|
-
"sourceChainTokenId",
|
|
59
|
-
"sourceChainHeight",
|
|
60
|
-
"targetChainTokenId",
|
|
61
|
-
"sourceTxId",
|
|
62
|
-
"sourceBlockId",
|
|
63
|
-
"spendBlock",
|
|
64
|
-
"spendHeight",
|
|
65
|
-
"spendTxId",
|
|
66
|
-
"result",
|
|
67
|
-
"paymentTxId",
|
|
68
|
-
"WIDsCount",
|
|
69
|
-
"WIDsHash"
|
|
70
|
-
)
|
|
71
|
-
SELECT "id",
|
|
72
|
-
"eventId",
|
|
73
|
-
"txId",
|
|
74
|
-
"extractor",
|
|
75
|
-
"boxId",
|
|
76
|
-
"boxSerialized",
|
|
77
|
-
"block",
|
|
78
|
-
"height",
|
|
79
|
-
"fromChain",
|
|
80
|
-
"toChain",
|
|
81
|
-
"fromAddress",
|
|
82
|
-
"toAddress",
|
|
83
|
-
"amount",
|
|
84
|
-
"bridgeFee",
|
|
85
|
-
"networkFee",
|
|
86
|
-
"sourceChainTokenId",
|
|
87
|
-
"sourceChainHeight",
|
|
88
|
-
"targetChainTokenId",
|
|
89
|
-
"sourceTxId",
|
|
90
|
-
"sourceBlockId",
|
|
91
|
-
"spendBlock",
|
|
92
|
-
"spendHeight",
|
|
93
|
-
"spendTxId",
|
|
94
|
-
"result",
|
|
95
|
-
"paymentTxId",
|
|
96
|
-
0,
|
|
97
|
-
''
|
|
98
|
-
FROM "event_trigger_entity"
|
|
99
|
-
`);
|
|
100
|
-
await queryRunner.query(`
|
|
101
|
-
DROP TABLE "event_trigger_entity"
|
|
102
|
-
`);
|
|
103
|
-
await queryRunner.query(`
|
|
104
|
-
ALTER TABLE "temporary_event_trigger_entity"
|
|
105
|
-
RENAME TO "event_trigger_entity"
|
|
106
|
-
`);
|
|
107
|
-
// calculate `WIDsCount` and `WIDsHash` columns in `event_trigger_entity`
|
|
108
|
-
for (const event of events) {
|
|
109
|
-
const { WIDsHash, WIDsCount } = getWidInfo(event.WIDs);
|
|
110
|
-
await queryRunner.query(`
|
|
111
|
-
UPDATE "event_trigger_entity"
|
|
112
|
-
SET "WIDsHash" = '${WIDsHash}', "WIDsCount" = '${WIDsCount}'
|
|
113
|
-
WHERE "id" = ${event.id}
|
|
114
|
-
`);
|
|
115
|
-
}
|
|
116
|
-
await queryRunner.query(`
|
|
117
|
-
CREATE TABLE "temporary_commitment_entity" (
|
|
118
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
119
|
-
"txId" varchar NOT NULL,
|
|
120
|
-
"extractor" varchar NOT NULL,
|
|
121
|
-
"eventId" varchar NOT NULL,
|
|
122
|
-
"commitment" varchar NOT NULL,
|
|
123
|
-
"WID" varchar NOT NULL,
|
|
124
|
-
"boxId" varchar NOT NULL,
|
|
125
|
-
"block" varchar NOT NULL,
|
|
126
|
-
"height" integer NOT NULL,
|
|
127
|
-
"boxSerialized" varchar NOT NULL,
|
|
128
|
-
"spendBlock" text,
|
|
129
|
-
"spendHeight" integer,
|
|
130
|
-
"rwtCount" varchar,
|
|
131
|
-
"spendTxId" text,
|
|
132
|
-
"spendIndex" integer,
|
|
133
|
-
CONSTRAINT "UQ_cc294fc304a66f8f194840f1ece" UNIQUE ("boxId", "extractor")
|
|
134
|
-
)
|
|
135
|
-
`);
|
|
136
|
-
await queryRunner.query(`
|
|
137
|
-
INSERT INTO "temporary_commitment_entity"(
|
|
138
|
-
"id",
|
|
139
|
-
"txId",
|
|
140
|
-
"extractor",
|
|
141
|
-
"eventId",
|
|
142
|
-
"commitment",
|
|
143
|
-
"WID",
|
|
144
|
-
"boxId",
|
|
145
|
-
"block",
|
|
146
|
-
"height",
|
|
147
|
-
"boxSerialized",
|
|
148
|
-
"spendBlock",
|
|
149
|
-
"spendHeight",
|
|
150
|
-
"rwtCount"
|
|
151
|
-
)
|
|
152
|
-
SELECT "id",
|
|
153
|
-
"txId",
|
|
154
|
-
"extractor",
|
|
155
|
-
"eventId",
|
|
156
|
-
"commitment",
|
|
157
|
-
"WID",
|
|
158
|
-
"boxId",
|
|
159
|
-
"block",
|
|
160
|
-
"height",
|
|
161
|
-
"boxSerialized",
|
|
162
|
-
"spendBlock",
|
|
163
|
-
"spendHeight",
|
|
164
|
-
"rwtCount"
|
|
165
|
-
FROM "commitment_entity"
|
|
166
|
-
`);
|
|
167
|
-
await queryRunner.query(`
|
|
168
|
-
DROP TABLE "commitment_entity"
|
|
169
|
-
`);
|
|
170
|
-
await queryRunner.query(`
|
|
171
|
-
ALTER TABLE "temporary_commitment_entity"
|
|
172
|
-
RENAME TO "commitment_entity"
|
|
173
|
-
`);
|
|
174
|
-
}
|
|
175
|
-
async down(queryRunner) {
|
|
176
|
-
await queryRunner.query(`
|
|
177
|
-
ALTER TABLE "commitment_entity"
|
|
178
|
-
RENAME TO "temporary_commitment_entity"
|
|
179
|
-
`);
|
|
180
|
-
await queryRunner.query(`
|
|
181
|
-
CREATE TABLE "commitment_entity" (
|
|
182
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
183
|
-
"txId" varchar NOT NULL,
|
|
184
|
-
"extractor" varchar NOT NULL,
|
|
185
|
-
"eventId" varchar NOT NULL,
|
|
186
|
-
"commitment" varchar NOT NULL,
|
|
187
|
-
"WID" varchar NOT NULL,
|
|
188
|
-
"boxId" varchar NOT NULL,
|
|
189
|
-
"block" varchar NOT NULL,
|
|
190
|
-
"height" integer NOT NULL,
|
|
191
|
-
"boxSerialized" varchar NOT NULL,
|
|
192
|
-
"spendBlock" text,
|
|
193
|
-
"spendHeight" integer,
|
|
194
|
-
"rwtCount" varchar,
|
|
195
|
-
CONSTRAINT "UQ_cc294fc304a66f8f194840f1ece" UNIQUE ("boxId", "extractor")
|
|
196
|
-
)
|
|
197
|
-
`);
|
|
198
|
-
await queryRunner.query(`
|
|
199
|
-
INSERT INTO "commitment_entity"(
|
|
200
|
-
"id",
|
|
201
|
-
"txId",
|
|
202
|
-
"extractor",
|
|
203
|
-
"eventId",
|
|
204
|
-
"commitment",
|
|
205
|
-
"WID",
|
|
206
|
-
"boxId",
|
|
207
|
-
"block",
|
|
208
|
-
"height",
|
|
209
|
-
"boxSerialized",
|
|
210
|
-
"spendBlock",
|
|
211
|
-
"spendHeight",
|
|
212
|
-
"rwtCount"
|
|
213
|
-
)
|
|
214
|
-
SELECT "id",
|
|
215
|
-
"txId",
|
|
216
|
-
"extractor",
|
|
217
|
-
"eventId",
|
|
218
|
-
"commitment",
|
|
219
|
-
"WID",
|
|
220
|
-
"boxId",
|
|
221
|
-
"block",
|
|
222
|
-
"height",
|
|
223
|
-
"boxSerialized",
|
|
224
|
-
"spendBlock",
|
|
225
|
-
"spendHeight",
|
|
226
|
-
"rwtCount"
|
|
227
|
-
FROM "temporary_commitment_entity"
|
|
228
|
-
`);
|
|
229
|
-
await queryRunner.query(`
|
|
230
|
-
DROP TABLE "temporary_commitment_entity"
|
|
231
|
-
`);
|
|
232
|
-
await queryRunner.query(`
|
|
233
|
-
ALTER TABLE "event_trigger_entity"
|
|
234
|
-
RENAME TO "temporary_event_trigger_entity"
|
|
235
|
-
`);
|
|
236
|
-
await queryRunner.query(`
|
|
237
|
-
CREATE TABLE "event_trigger_entity" (
|
|
238
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
239
|
-
"eventId" varchar NOT NULL DEFAULT ('Not-set'),
|
|
240
|
-
"txId" varchar NOT NULL,
|
|
241
|
-
"extractor" varchar NOT NULL,
|
|
242
|
-
"boxId" varchar NOT NULL,
|
|
243
|
-
"boxSerialized" varchar NOT NULL,
|
|
244
|
-
"block" varchar NOT NULL,
|
|
245
|
-
"height" integer NOT NULL,
|
|
246
|
-
"fromChain" varchar NOT NULL,
|
|
247
|
-
"toChain" varchar NOT NULL,
|
|
248
|
-
"fromAddress" varchar NOT NULL,
|
|
249
|
-
"toAddress" varchar NOT NULL,
|
|
250
|
-
"amount" varchar NOT NULL,
|
|
251
|
-
"bridgeFee" varchar NOT NULL,
|
|
252
|
-
"networkFee" varchar NOT NULL,
|
|
253
|
-
"sourceChainTokenId" varchar NOT NULL,
|
|
254
|
-
"sourceChainHeight" integer NOT NULL,
|
|
255
|
-
"targetChainTokenId" varchar NOT NULL,
|
|
256
|
-
"sourceTxId" varchar NOT NULL,
|
|
257
|
-
"sourceBlockId" varchar NOT NULL,
|
|
258
|
-
"spendBlock" text,
|
|
259
|
-
"spendHeight" integer,
|
|
260
|
-
"spendTxId" text,
|
|
261
|
-
"result" text,
|
|
262
|
-
"paymentTxId" text,
|
|
263
|
-
CONSTRAINT "UQ_c905f221a1b6271ca4405dbbe5f" UNIQUE ("boxId", "extractor")
|
|
264
|
-
)
|
|
265
|
-
`);
|
|
266
|
-
await queryRunner.query(`
|
|
267
|
-
INSERT INTO "event_trigger_entity"(
|
|
268
|
-
"id",
|
|
269
|
-
"eventId",
|
|
270
|
-
"txId",
|
|
271
|
-
"extractor",
|
|
272
|
-
"boxId",
|
|
273
|
-
"boxSerialized",
|
|
274
|
-
"block",
|
|
275
|
-
"height",
|
|
276
|
-
"fromChain",
|
|
277
|
-
"toChain",
|
|
278
|
-
"fromAddress",
|
|
279
|
-
"toAddress",
|
|
280
|
-
"amount",
|
|
281
|
-
"bridgeFee",
|
|
282
|
-
"networkFee",
|
|
283
|
-
"sourceChainTokenId",
|
|
284
|
-
"sourceChainHeight",
|
|
285
|
-
"targetChainTokenId",
|
|
286
|
-
"sourceTxId",
|
|
287
|
-
"sourceBlockId",
|
|
288
|
-
"spendBlock",
|
|
289
|
-
"spendHeight",
|
|
290
|
-
"spendTxId",
|
|
291
|
-
"result",
|
|
292
|
-
"paymentTxId"
|
|
293
|
-
)
|
|
294
|
-
SELECT "id",
|
|
295
|
-
"eventId",
|
|
296
|
-
"txId",
|
|
297
|
-
"extractor",
|
|
298
|
-
"boxId",
|
|
299
|
-
"boxSerialized",
|
|
300
|
-
"block",
|
|
301
|
-
"height",
|
|
302
|
-
"fromChain",
|
|
303
|
-
"toChain",
|
|
304
|
-
"fromAddress",
|
|
305
|
-
"toAddress",
|
|
306
|
-
"amount",
|
|
307
|
-
"bridgeFee",
|
|
308
|
-
"networkFee",
|
|
309
|
-
"sourceChainTokenId",
|
|
310
|
-
"sourceChainHeight",
|
|
311
|
-
"targetChainTokenId",
|
|
312
|
-
"sourceTxId",
|
|
313
|
-
"sourceBlockId",
|
|
314
|
-
"spendBlock",
|
|
315
|
-
"spendHeight",
|
|
316
|
-
"spendTxId",
|
|
317
|
-
"result",
|
|
318
|
-
"paymentTxId"
|
|
319
|
-
FROM "temporary_event_trigger_entity"
|
|
320
|
-
`);
|
|
321
|
-
await queryRunner.query(`
|
|
322
|
-
DROP TABLE "temporary_event_trigger_entity"
|
|
323
|
-
`);
|
|
324
|
-
await queryRunner.query(`
|
|
325
|
-
ALTER TABLE "event_trigger_entity"
|
|
326
|
-
RENAME TO "temporary_event_trigger_entity"
|
|
327
|
-
`);
|
|
328
|
-
await queryRunner.query(`
|
|
329
|
-
CREATE TABLE "event_trigger_entity" (
|
|
330
|
-
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
331
|
-
"eventId" varchar NOT NULL DEFAULT ('Not-set'),
|
|
332
|
-
"txId" varchar NOT NULL,
|
|
333
|
-
"extractor" varchar NOT NULL,
|
|
334
|
-
"boxId" varchar NOT NULL,
|
|
335
|
-
"boxSerialized" varchar NOT NULL,
|
|
336
|
-
"block" varchar NOT NULL,
|
|
337
|
-
"height" integer NOT NULL,
|
|
338
|
-
"fromChain" varchar NOT NULL,
|
|
339
|
-
"toChain" varchar NOT NULL,
|
|
340
|
-
"fromAddress" varchar NOT NULL,
|
|
341
|
-
"toAddress" varchar NOT NULL,
|
|
342
|
-
"amount" varchar NOT NULL,
|
|
343
|
-
"bridgeFee" varchar NOT NULL,
|
|
344
|
-
"networkFee" varchar NOT NULL,
|
|
345
|
-
"sourceChainTokenId" varchar NOT NULL,
|
|
346
|
-
"sourceChainHeight" integer NOT NULL,
|
|
347
|
-
"targetChainTokenId" varchar NOT NULL,
|
|
348
|
-
"sourceTxId" varchar NOT NULL,
|
|
349
|
-
"sourceBlockId" varchar NOT NULL,
|
|
350
|
-
"WIDs" varchar NOT NULL,
|
|
351
|
-
"spendBlock" text,
|
|
352
|
-
"spendHeight" integer,
|
|
353
|
-
"spendTxId" text,
|
|
354
|
-
"result" text,
|
|
355
|
-
"paymentTxId" text,
|
|
356
|
-
CONSTRAINT "UQ_c905f221a1b6271ca4405dbbe5f" UNIQUE ("boxId", "extractor")
|
|
357
|
-
)
|
|
358
|
-
`);
|
|
359
|
-
await queryRunner.query(`
|
|
360
|
-
INSERT INTO "event_trigger_entity"(
|
|
361
|
-
"id",
|
|
362
|
-
"eventId",
|
|
363
|
-
"txId",
|
|
364
|
-
"extractor",
|
|
365
|
-
"boxId",
|
|
366
|
-
"boxSerialized",
|
|
367
|
-
"block",
|
|
368
|
-
"height",
|
|
369
|
-
"fromChain",
|
|
370
|
-
"toChain",
|
|
371
|
-
"fromAddress",
|
|
372
|
-
"toAddress",
|
|
373
|
-
"amount",
|
|
374
|
-
"bridgeFee",
|
|
375
|
-
"networkFee",
|
|
376
|
-
"sourceChainTokenId",
|
|
377
|
-
"sourceChainHeight",
|
|
378
|
-
"targetChainTokenId",
|
|
379
|
-
"sourceTxId",
|
|
380
|
-
"sourceBlockId",
|
|
381
|
-
"spendBlock",
|
|
382
|
-
"spendHeight",
|
|
383
|
-
"spendTxId",
|
|
384
|
-
"result",
|
|
385
|
-
"paymentTxId"
|
|
386
|
-
)
|
|
387
|
-
SELECT "id",
|
|
388
|
-
"eventId",
|
|
389
|
-
"txId",
|
|
390
|
-
"extractor",
|
|
391
|
-
"boxId",
|
|
392
|
-
"boxSerialized",
|
|
393
|
-
"block",
|
|
394
|
-
"height",
|
|
395
|
-
"fromChain",
|
|
396
|
-
"toChain",
|
|
397
|
-
"fromAddress",
|
|
398
|
-
"toAddress",
|
|
399
|
-
"amount",
|
|
400
|
-
"bridgeFee",
|
|
401
|
-
"networkFee",
|
|
402
|
-
"sourceChainTokenId",
|
|
403
|
-
"sourceChainHeight",
|
|
404
|
-
"targetChainTokenId",
|
|
405
|
-
"sourceTxId",
|
|
406
|
-
"sourceBlockId",
|
|
407
|
-
"spendBlock",
|
|
408
|
-
"spendHeight",
|
|
409
|
-
"spendTxId",
|
|
410
|
-
"result",
|
|
411
|
-
"paymentTxId"
|
|
412
|
-
FROM "temporary_event_trigger_entity"
|
|
413
|
-
`);
|
|
414
|
-
await queryRunner.query(`
|
|
415
|
-
DROP TABLE "temporary_event_trigger_entity"
|
|
416
|
-
`);
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uMTcwNjYxMDc3MzE3Ni1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9zcWxpdGUvbWlncmF0aW9uMTcwNjYxMDc3MzE3Ni1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6QyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLElBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUV6QixLQUFLLENBQUMsRUFBRSxDQUFDLFdBQXdCO1FBQ3RDLDZDQUE2QztRQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7O1NBRWxDLENBQUMsQ0FBQztRQUVQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQStCbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBMERuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7O1NBRW5CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7O1NBR25CLENBQUMsQ0FBQztRQUVQLHlFQUF5RTtRQUN6RSxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUMxQixNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLFVBQVUsQ0FBRSxLQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEUsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOztrQ0FFSSxRQUFRLHFCQUFxQixTQUFTOzZCQUMzQyxLQUFLLENBQUMsRUFBRTtXQUMxQixDQUFDLENBQUM7U0FDUjtRQUVELE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQW1CbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0E4Qm5CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7U0FFbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7U0FHbkIsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBd0I7UUFDeEMsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7U0FHbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztTQWlCbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0E4Qm5CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7U0FFbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7U0FHbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQTZCbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FzRG5CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7U0FFbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7U0FHbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0E4Qm5CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBc0RuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7O1NBRW5CLENBQUMsQ0FBQztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pZ3JhdGlvbkludGVyZmFjZSwgUXVlcnlSdW5uZXIgfSBmcm9tICd0eXBlb3JtJztcbmltcG9ydCBFdmVudFRyaWdnZXJFbnRpdHkgZnJvbSAnLi4vLi4vZW50aXRpZXMvRXZlbnRUcmlnZ2VyRW50aXR5JztcbmltcG9ydCB7IGdldFdpZEluZm8gfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBtaWdyYXRpb24xNzA2NjEwNzczMTc2IGltcGxlbWVudHMgTWlncmF0aW9uSW50ZXJmYWNlIHtcbiAgbmFtZSA9ICdtaWdyYXRpb24xNzA2NjEwNzczMTc2JztcblxuICBwdWJsaWMgYXN5bmMgdXAocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gZ2V0IGFsbCBldmVudHMgYmVmb3JlIHJlbW92aW5nIFdJRHMgY29sdW1uXG4gICAgY29uc3QgZXZlbnRzID0gYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgU0VMRUNUIFwiaWRcIiwgXCJXSURzXCIgZnJvbSBcImV2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG5cbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgXCJ0ZW1wb3JhcnlfZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgXCJpZFwiIGludGVnZXIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV2ZW50SWRcIiB2YXJjaGFyIE5PVCBOVUxMIERFRkFVTFQgKCdOb3Qtc2V0JyksXG4gICAgICAgICAgICAgICAgXCJ0eElkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJsb2NrXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJmcm9tQ2hhaW5cIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidG9DaGFpblwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJmcm9tQWRkcmVzc1wiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYW1vdW50XCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZUNoYWluVG9rZW5JZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpbkhlaWdodFwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic291cmNlVHhJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VCbG9ja0lkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwic3BlbmRIZWlnaHRcIiBpbnRlZ2VyLFxuICAgICAgICAgICAgICAgIFwic3BlbmRUeElkXCIgdGV4dCxcbiAgICAgICAgICAgICAgICBcInJlc3VsdFwiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJwYXltZW50VHhJZFwiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJXSURzQ291bnRcIiBpbnRlZ2VyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiV0lEc0hhc2hcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIENPTlNUUkFJTlQgXCJVUV9jOTA1ZjIyMWExYjYyNzFjYTQ0MDVkYmJlNWZcIiBVTklRVUUgKFwiYm94SWRcIiwgXCJleHRyYWN0b3JcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgSU5TRVJUIElOVE8gXCJ0ZW1wb3JhcnlfZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIihcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImV2ZW50SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJmcm9tQ2hhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZnJvbUFkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJicmlkZ2VGZWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5IZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQmxvY2tJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kVHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInJlc3VsdFwiLFxuICAgICAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiV0lEc0NvdW50XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiV0lEc0hhc2hcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFNFTEVDVCBcImlkXCIsXG4gICAgICAgICAgICAgICAgXCJldmVudElkXCIsXG4gICAgICAgICAgICAgICAgXCJ0eElkXCIsXG4gICAgICAgICAgICAgICAgXCJleHRyYWN0b3JcIixcbiAgICAgICAgICAgICAgICBcImJveElkXCIsXG4gICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIsXG4gICAgICAgICAgICAgICAgXCJibG9ja1wiLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgXCJmcm9tQ2hhaW5cIixcbiAgICAgICAgICAgICAgICBcInRvQ2hhaW5cIixcbiAgICAgICAgICAgICAgICBcImZyb21BZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIixcbiAgICAgICAgICAgICAgICBcImFtb3VudFwiLFxuICAgICAgICAgICAgICAgIFwiYnJpZGdlRmVlXCIsXG4gICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpblRva2VuSWRcIixcbiAgICAgICAgICAgICAgICBcInNvdXJjZUNoYWluSGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIixcbiAgICAgICAgICAgICAgICBcInNvdXJjZVR4SWRcIixcbiAgICAgICAgICAgICAgICBcInNvdXJjZUJsb2NrSWRcIixcbiAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIixcbiAgICAgICAgICAgICAgICBcInNwZW5kSGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZFR4SWRcIixcbiAgICAgICAgICAgICAgICBcInJlc3VsdFwiLFxuICAgICAgICAgICAgICAgIFwicGF5bWVudFR4SWRcIixcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICBGUk9NIFwiZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwiZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBBTFRFUiBUQUJMRSBcInRlbXBvcmFyeV9ldmVudF90cmlnZ2VyX2VudGl0eVwiXG4gICAgICAgICAgICAgICAgUkVOQU1FIFRPIFwiZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICBgKTtcblxuICAgIC8vIGNhbGN1bGF0ZSBgV0lEc0NvdW50YCBhbmQgYFdJRHNIYXNoYCBjb2x1bW5zIGluIGBldmVudF90cmlnZ2VyX2VudGl0eWBcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgICAgY29uc3QgeyBXSURzSGFzaCwgV0lEc0NvdW50IH0gPSBnZXRXaWRJbmZvKChldmVudCBhcyBhbnkpLldJRHMpO1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgICBVUERBVEUgXCJldmVudF90cmlnZ2VyX2VudGl0eVwiXG4gICAgICAgICAgICAgIFNFVCBcIldJRHNIYXNoXCIgPSAnJHtXSURzSGFzaH0nLCBcIldJRHNDb3VudFwiID0gJyR7V0lEc0NvdW50fSdcbiAgICAgICAgICAgICAgV0hFUkUgXCJpZFwiID0gJHtldmVudC5pZH1cbiAgICAgICAgICBgKTtcbiAgICB9XG5cbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgXCJ0ZW1wb3JhcnlfY29tbWl0bWVudF9lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgXCJpZFwiIGludGVnZXIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInR4SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV2ZW50SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiY29tbWl0bWVudFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJXSURcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYm94SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgXCJyd3RDb3VudFwiIHZhcmNoYXIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZFR4SWRcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwic3BlbmRJbmRleFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlVRX2NjMjk0ZmMzMDRhNjZmOGYxOTQ4NDBmMWVjZVwiIFVOSVFVRSAoXCJib3hJZFwiLCBcImV4dHJhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBJTlNFUlQgSU5UTyBcInRlbXBvcmFyeV9jb21taXRtZW50X2VudGl0eVwiKFxuICAgICAgICAgICAgICAgICAgICBcImlkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiLFxuICAgICAgICAgICAgICAgICAgICBcImV2ZW50SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjb21taXRtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiV0lEXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJibG9ja1wiLFxuICAgICAgICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic3BlbmRIZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJyd3RDb3VudFwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgU0VMRUNUIFwiaWRcIixcbiAgICAgICAgICAgICAgICBcInR4SWRcIixcbiAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiLFxuICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiLFxuICAgICAgICAgICAgICAgIFwiY29tbWl0bWVudFwiLFxuICAgICAgICAgICAgICAgIFwiV0lEXCIsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiLFxuICAgICAgICAgICAgICAgIFwic3BlbmRIZWlnaHRcIixcbiAgICAgICAgICAgICAgICBcInJ3dENvdW50XCJcbiAgICAgICAgICAgIEZST00gXCJjb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIERST1AgVEFCTEUgXCJjb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIEFMVEVSIFRBQkxFIFwidGVtcG9yYXJ5X2NvbW1pdG1lbnRfZW50aXR5XCJcbiAgICAgICAgICAgICAgICBSRU5BTUUgVE8gXCJjb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgIGApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvd24ocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQUxURVIgVEFCTEUgXCJjb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgICAgICAgICAgUkVOQU1FIFRPIFwidGVtcG9yYXJ5X2NvbW1pdG1lbnRfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIFwiY29tbWl0bWVudF9lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgXCJpZFwiIGludGVnZXIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInR4SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV2ZW50SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiY29tbWl0bWVudFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJXSURcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYm94SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgXCJyd3RDb3VudFwiIHZhcmNoYXIsXG4gICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlVRX2NjMjk0ZmMzMDRhNjZmOGYxOTQ4NDBmMWVjZVwiIFVOSVFVRSAoXCJib3hJZFwiLCBcImV4dHJhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBJTlNFUlQgSU5UTyBcImNvbW1pdG1lbnRfZW50aXR5XCIoXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImNvbW1pdG1lbnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJXSURcIixcbiAgICAgICAgICAgICAgICAgICAgXCJib3hJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBcInJ3dENvdW50XCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBTRUxFQ1QgXCJpZFwiLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJldmVudElkXCIsXG4gICAgICAgICAgICAgICAgXCJjb21taXRtZW50XCIsXG4gICAgICAgICAgICAgICAgXCJXSURcIixcbiAgICAgICAgICAgICAgICBcImJveElkXCIsXG4gICAgICAgICAgICAgICAgXCJibG9ja1wiLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIsXG4gICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwicnd0Q291bnRcIlxuICAgICAgICAgICAgRlJPTSBcInRlbXBvcmFyeV9jb21taXRtZW50X2VudGl0eVwiXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIERST1AgVEFCTEUgXCJ0ZW1wb3JhcnlfY29tbWl0bWVudF9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBBTFRFUiBUQUJMRSBcImV2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgICAgICAgICBSRU5BTUUgVE8gXCJ0ZW1wb3JhcnlfZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgXCJldmVudF90cmlnZ2VyX2VudGl0eVwiIChcbiAgICAgICAgICAgICAgICBcImlkXCIgaW50ZWdlciBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiIHZhcmNoYXIgTk9UIE5VTEwgREVGQVVMVCAoJ05vdC1zZXQnKSxcbiAgICAgICAgICAgICAgICBcInR4SWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveElkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImZyb21DaGFpblwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImZyb21BZGRyZXNzXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInRvQWRkcmVzc1wiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJhbW91bnRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYnJpZGdlRmVlXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcIm5ldHdvcmtGZWVcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZUNoYWluSGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInRhcmdldENoYWluVG9rZW5JZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZUJsb2NrSWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZFR4SWRcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwicmVzdWx0XCIgdGV4dCxcbiAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCIgdGV4dCxcbiAgICAgICAgICAgICAgICBDT05TVFJBSU5UIFwiVVFfYzkwNWYyMjFhMWI2MjcxY2E0NDA1ZGJiZTVmXCIgVU5JUVVFIChcImJveElkXCIsIFwiZXh0cmFjdG9yXCIpXG4gICAgICAgICAgICApXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIElOU0VSVCBJTlRPIFwiZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIihcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImV2ZW50SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJmcm9tQ2hhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZnJvbUFkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJicmlkZ2VGZWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5IZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQmxvY2tJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kVHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInJlc3VsdFwiLFxuICAgICAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBTRUxFQ1QgXCJpZFwiLFxuICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiLFxuICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwiZnJvbUNoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJmcm9tQWRkcmVzc1wiLFxuICAgICAgICAgICAgICAgIFwidG9BZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiLFxuICAgICAgICAgICAgICAgIFwibmV0d29ya0ZlZVwiLFxuICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpbkhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0Q2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VCbG9ja0lkXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwic3BlbmRUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJyZXN1bHRcIixcbiAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCJcbiAgICAgICAgICAgIEZST00gXCJ0ZW1wb3JhcnlfZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwidGVtcG9yYXJ5X2V2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQUxURVIgVEFCTEUgXCJldmVudF90cmlnZ2VyX2VudGl0eVwiXG4gICAgICAgICAgICAgICAgUkVOQU1FIFRPIFwidGVtcG9yYXJ5X2V2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIFwiZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgXCJpZFwiIGludGVnZXIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV2ZW50SWRcIiB2YXJjaGFyIE5PVCBOVUxMIERFRkFVTFQgKCdOb3Qtc2V0JyksXG4gICAgICAgICAgICAgICAgXCJ0eElkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJsb2NrXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJmcm9tQ2hhaW5cIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidG9DaGFpblwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJmcm9tQWRkcmVzc1wiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYW1vdW50XCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNvdXJjZUNoYWluVG9rZW5JZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpbkhlaWdodFwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic291cmNlVHhJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VCbG9ja0lkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcIldJRHNcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZFR4SWRcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwicmVzdWx0XCIgdGV4dCxcbiAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCIgdGV4dCxcbiAgICAgICAgICAgICAgICBDT05TVFJBSU5UIFwiVVFfYzkwNWYyMjFhMWI2MjcxY2E0NDA1ZGJiZTVmXCIgVU5JUVVFIChcImJveElkXCIsIFwiZXh0cmFjdG9yXCIpXG4gICAgICAgICAgICApXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIElOU0VSVCBJTlRPIFwiZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIihcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImV2ZW50SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0eElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYm94SWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJib3hTZXJpYWxpemVkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJoZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJmcm9tQ2hhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZnJvbUFkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0b0FkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJicmlkZ2VGZWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuZXR3b3JrRmVlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5IZWlnaHRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRDaGFpblRva2VuSWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic291cmNlQmxvY2tJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgICAgICBcInNwZW5kVHhJZFwiLFxuICAgICAgICAgICAgICAgICAgICBcInJlc3VsdFwiLFxuICAgICAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBTRUxFQ1QgXCJpZFwiLFxuICAgICAgICAgICAgICAgIFwiZXZlbnRJZFwiLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJib3hJZFwiLFxuICAgICAgICAgICAgICAgIFwiYm94U2VyaWFsaXplZFwiLFxuICAgICAgICAgICAgICAgIFwiYmxvY2tcIixcbiAgICAgICAgICAgICAgICBcImhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwiZnJvbUNoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJ0b0NoYWluXCIsXG4gICAgICAgICAgICAgICAgXCJmcm9tQWRkcmVzc1wiLFxuICAgICAgICAgICAgICAgIFwidG9BZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgXCJhbW91bnRcIixcbiAgICAgICAgICAgICAgICBcImJyaWRnZUZlZVwiLFxuICAgICAgICAgICAgICAgIFwibmV0d29ya0ZlZVwiLFxuICAgICAgICAgICAgICAgIFwic291cmNlQ2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VDaGFpbkhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0Q2hhaW5Ub2tlbklkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJzb3VyY2VCbG9ja0lkXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEJsb2NrXCIsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiLFxuICAgICAgICAgICAgICAgIFwic3BlbmRUeElkXCIsXG4gICAgICAgICAgICAgICAgXCJyZXN1bHRcIixcbiAgICAgICAgICAgICAgICBcInBheW1lbnRUeElkXCJcbiAgICAgICAgICAgIEZST00gXCJ0ZW1wb3JhcnlfZXZlbnRfdHJpZ2dlcl9lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwidGVtcG9yYXJ5X2V2ZW50X3RyaWdnZXJfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/transformers.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export declare const bigintTransformer: {
|
|
2
|
-
/**
|
|
3
|
-
* converts data from string in database to bigint in code
|
|
4
|
-
*
|
|
5
|
-
* @param {string} value
|
|
6
|
-
* @return {bigint}
|
|
7
|
-
*/
|
|
8
|
-
from(value: string): bigint;
|
|
9
|
-
/**
|
|
10
|
-
* converts data from bigint in code to string in database
|
|
11
|
-
*
|
|
12
|
-
* @param {bigint} value
|
|
13
|
-
* @return {string}
|
|
14
|
-
*/
|
|
15
|
-
to(value: bigint): string;
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=transformers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../lib/transformers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;IAC5B;;;;;OAKG;gBACS,MAAM;IAGlB;;;;;OAKG;cACO,MAAM;CAGjB,CAAC"}
|
package/dist/transformers.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export const bigintTransformer = {
|
|
2
|
-
/**
|
|
3
|
-
* converts data from string in database to bigint in code
|
|
4
|
-
*
|
|
5
|
-
* @param {string} value
|
|
6
|
-
* @return {bigint}
|
|
7
|
-
*/
|
|
8
|
-
from(value) {
|
|
9
|
-
return BigInt(value);
|
|
10
|
-
},
|
|
11
|
-
/**
|
|
12
|
-
* converts data from bigint in code to string in database
|
|
13
|
-
*
|
|
14
|
-
* @param {bigint} value
|
|
15
|
-
* @return {string}
|
|
16
|
-
*/
|
|
17
|
-
to(value) {
|
|
18
|
-
return value.toString();
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3RyYW5zZm9ybWVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUMvQjs7Ozs7T0FLRztJQUNILElBQUksQ0FBQyxLQUFhO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILEVBQUUsQ0FBQyxLQUFhO1FBQ2QsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmlnaW50VHJhbnNmb3JtZXIgPSB7XG4gIC8qKlxuICAgKiBjb252ZXJ0cyBkYXRhIGZyb20gc3RyaW5nIGluIGRhdGFiYXNlIHRvIGJpZ2ludCBpbiBjb2RlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtiaWdpbnR9XG4gICAqL1xuICBmcm9tKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gQmlnSW50KHZhbHVlKTtcbiAgfSxcbiAgLyoqXG4gICAqIGNvbnZlcnRzIGRhdGEgZnJvbSBiaWdpbnQgaW4gY29kZSB0byBzdHJpbmcgaW4gZGF0YWJhc2VcbiAgICpcbiAgICogQHBhcmFtIHtiaWdpbnR9IHZhbHVlXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvKHZhbHVlOiBiaWdpbnQpIHtcbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgfSxcbn07XG4iXX0=
|