@mainsail/evm-contracts 0.0.1-evm.45 → 0.0.1-evm.48

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.
@@ -4,47 +4,23 @@
4
4
  "type": "function",
5
5
  "name": "UPGRADE_INTERFACE_VERSION",
6
6
  "inputs": [],
7
- "outputs": [
8
- {
9
- "name": "",
10
- "type": "string",
11
- "internalType": "string"
12
- }
13
- ],
7
+ "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
14
8
  "stateMutability": "view"
15
9
  },
16
10
  {
17
11
  "type": "function",
18
12
  "name": "activeValidatorsCount",
19
13
  "inputs": [],
20
- "outputs": [
21
- {
22
- "name": "",
23
- "type": "uint256",
24
- "internalType": "uint256"
25
- }
26
- ],
14
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
27
15
  "stateMutability": "view"
28
16
  },
29
17
  {
30
18
  "type": "function",
31
19
  "name": "addValidator",
32
20
  "inputs": [
33
- {
34
- "name": "addr",
35
- "type": "address",
36
- "internalType": "address"
37
- },
38
- {
39
- "name": "blsPublicKey",
40
- "type": "bytes",
41
- "internalType": "bytes"
42
- },
43
- {
44
- "name": "isResigned",
45
- "type": "bool",
46
- "internalType": "bool"
47
- }
21
+ { "name": "addr", "type": "address", "internalType": "address" },
22
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" },
23
+ { "name": "isResigned", "type": "bool", "internalType": "bool" }
48
24
  ],
49
25
  "outputs": [],
50
26
  "stateMutability": "nonpayable"
@@ -53,16 +29,8 @@
53
29
  "type": "function",
54
30
  "name": "addVotes",
55
31
  "inputs": [
56
- {
57
- "name": "voters",
58
- "type": "address[]",
59
- "internalType": "address[]"
60
- },
61
- {
62
- "name": "validators",
63
- "type": "address[]",
64
- "internalType": "address[]"
65
- }
32
+ { "name": "voters", "type": "address[]", "internalType": "address[]" },
33
+ { "name": "validators", "type": "address[]", "internalType": "address[]" }
66
34
  ],
67
35
  "outputs": [],
68
36
  "stateMutability": "nonpayable"
@@ -70,13 +38,7 @@
70
38
  {
71
39
  "type": "function",
72
40
  "name": "calculateRoundValidators",
73
- "inputs": [
74
- {
75
- "name": "n",
76
- "type": "uint8",
77
- "internalType": "uint8"
78
- }
79
- ],
41
+ "inputs": [{ "name": "n", "type": "uint8", "internalType": "uint8" }],
80
42
  "outputs": [],
81
43
  "stateMutability": "nonpayable"
82
44
  },
@@ -84,13 +46,7 @@
84
46
  "type": "function",
85
47
  "name": "fee",
86
48
  "inputs": [],
87
- "outputs": [
88
- {
89
- "name": "",
90
- "type": "uint256",
91
- "internalType": "uint256"
92
- }
93
- ],
49
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
94
50
  "stateMutability": "view"
95
51
  },
96
52
  {
@@ -103,41 +59,17 @@
103
59
  "type": "tuple[]",
104
60
  "internalType": "struct ConsensusV1.Validator[]",
105
61
  "components": [
106
- {
107
- "name": "addr",
108
- "type": "address",
109
- "internalType": "address"
110
- },
62
+ { "name": "addr", "type": "address", "internalType": "address" },
111
63
  {
112
64
  "name": "data",
113
65
  "type": "tuple",
114
66
  "internalType": "struct ConsensusV1.ValidatorData",
115
67
  "components": [
116
- {
117
- "name": "voteBalance",
118
- "type": "uint256",
119
- "internalType": "uint256"
120
- },
121
- {
122
- "name": "fee",
123
- "type": "uint128",
124
- "internalType": "uint128"
125
- },
126
- {
127
- "name": "votersCount",
128
- "type": "uint64",
129
- "internalType": "uint64"
130
- },
131
- {
132
- "name": "isResigned",
133
- "type": "bool",
134
- "internalType": "bool"
135
- },
136
- {
137
- "name": "blsPublicKey",
138
- "type": "bytes",
139
- "internalType": "bytes"
140
- }
68
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" },
69
+ { "name": "fee", "type": "uint128", "internalType": "uint128" },
70
+ { "name": "votersCount", "type": "uint64", "internalType": "uint64" },
71
+ { "name": "isResigned", "type": "bool", "internalType": "bool" },
72
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }
141
73
  ]
142
74
  }
143
75
  ]
@@ -155,41 +87,17 @@
155
87
  "type": "tuple[]",
156
88
  "internalType": "struct ConsensusV1.Validator[]",
157
89
  "components": [
158
- {
159
- "name": "addr",
160
- "type": "address",
161
- "internalType": "address"
162
- },
90
+ { "name": "addr", "type": "address", "internalType": "address" },
163
91
  {
164
92
  "name": "data",
165
93
  "type": "tuple",
166
94
  "internalType": "struct ConsensusV1.ValidatorData",
167
95
  "components": [
168
- {
169
- "name": "voteBalance",
170
- "type": "uint256",
171
- "internalType": "uint256"
172
- },
173
- {
174
- "name": "fee",
175
- "type": "uint128",
176
- "internalType": "uint128"
177
- },
178
- {
179
- "name": "votersCount",
180
- "type": "uint64",
181
- "internalType": "uint64"
182
- },
183
- {
184
- "name": "isResigned",
185
- "type": "bool",
186
- "internalType": "bool"
187
- },
188
- {
189
- "name": "blsPublicKey",
190
- "type": "bytes",
191
- "internalType": "bytes"
192
- }
96
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" },
97
+ { "name": "fee", "type": "uint128", "internalType": "uint128" },
98
+ { "name": "votersCount", "type": "uint64", "internalType": "uint64" },
99
+ { "name": "isResigned", "type": "bool", "internalType": "bool" },
100
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }
193
101
  ]
194
102
  }
195
103
  ]
@@ -201,16 +109,8 @@
201
109
  "type": "function",
202
110
  "name": "getRounds",
203
111
  "inputs": [
204
- {
205
- "name": "offset",
206
- "type": "uint256",
207
- "internalType": "uint256"
208
- },
209
- {
210
- "name": "count",
211
- "type": "uint256",
212
- "internalType": "uint256"
213
- }
112
+ { "name": "offset", "type": "uint256", "internalType": "uint256" },
113
+ { "name": "count", "type": "uint256", "internalType": "uint256" }
214
114
  ],
215
115
  "outputs": [
216
116
  {
@@ -218,26 +118,14 @@
218
118
  "type": "tuple[]",
219
119
  "internalType": "struct ConsensusV1.Round[]",
220
120
  "components": [
221
- {
222
- "name": "round",
223
- "type": "uint256",
224
- "internalType": "uint256"
225
- },
121
+ { "name": "round", "type": "uint256", "internalType": "uint256" },
226
122
  {
227
123
  "name": "validators",
228
124
  "type": "tuple[]",
229
125
  "internalType": "struct ConsensusV1.RoundValidator[]",
230
126
  "components": [
231
- {
232
- "name": "addr",
233
- "type": "address",
234
- "internalType": "address"
235
- },
236
- {
237
- "name": "voteBalance",
238
- "type": "uint256",
239
- "internalType": "uint256"
240
- }
127
+ { "name": "addr", "type": "address", "internalType": "address" },
128
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" }
241
129
  ]
242
130
  }
243
131
  ]
@@ -249,66 +137,30 @@
249
137
  "type": "function",
250
138
  "name": "getRoundsCount",
251
139
  "inputs": [],
252
- "outputs": [
253
- {
254
- "name": "",
255
- "type": "uint256",
256
- "internalType": "uint256"
257
- }
258
- ],
140
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
259
141
  "stateMutability": "view"
260
142
  },
261
143
  {
262
144
  "type": "function",
263
145
  "name": "getValidator",
264
- "inputs": [
265
- {
266
- "name": "addr",
267
- "type": "address",
268
- "internalType": "address"
269
- }
270
- ],
146
+ "inputs": [{ "name": "addr", "type": "address", "internalType": "address" }],
271
147
  "outputs": [
272
148
  {
273
149
  "name": "",
274
150
  "type": "tuple",
275
151
  "internalType": "struct ConsensusV1.Validator",
276
152
  "components": [
277
- {
278
- "name": "addr",
279
- "type": "address",
280
- "internalType": "address"
281
- },
153
+ { "name": "addr", "type": "address", "internalType": "address" },
282
154
  {
283
155
  "name": "data",
284
156
  "type": "tuple",
285
157
  "internalType": "struct ConsensusV1.ValidatorData",
286
158
  "components": [
287
- {
288
- "name": "voteBalance",
289
- "type": "uint256",
290
- "internalType": "uint256"
291
- },
292
- {
293
- "name": "fee",
294
- "type": "uint128",
295
- "internalType": "uint128"
296
- },
297
- {
298
- "name": "votersCount",
299
- "type": "uint64",
300
- "internalType": "uint64"
301
- },
302
- {
303
- "name": "isResigned",
304
- "type": "bool",
305
- "internalType": "bool"
306
- },
307
- {
308
- "name": "blsPublicKey",
309
- "type": "bytes",
310
- "internalType": "bytes"
311
- }
159
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" },
160
+ { "name": "fee", "type": "uint128", "internalType": "uint128" },
161
+ { "name": "votersCount", "type": "uint64", "internalType": "uint64" },
162
+ { "name": "isResigned", "type": "bool", "internalType": "bool" },
163
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }
312
164
  ]
313
165
  }
314
166
  ]
@@ -320,16 +172,8 @@
320
172
  "type": "function",
321
173
  "name": "getVotes",
322
174
  "inputs": [
323
- {
324
- "name": "addr",
325
- "type": "address",
326
- "internalType": "address"
327
- },
328
- {
329
- "name": "count",
330
- "type": "uint256",
331
- "internalType": "uint256"
332
- }
175
+ { "name": "addr", "type": "address", "internalType": "address" },
176
+ { "name": "count", "type": "uint256", "internalType": "uint256" }
333
177
  ],
334
178
  "outputs": [
335
179
  {
@@ -337,16 +181,8 @@
337
181
  "type": "tuple[]",
338
182
  "internalType": "struct ConsensusV1.VoteResult[]",
339
183
  "components": [
340
- {
341
- "name": "voter",
342
- "type": "address",
343
- "internalType": "address"
344
- },
345
- {
346
- "name": "validator",
347
- "type": "address",
348
- "internalType": "address"
349
- }
184
+ { "name": "voter", "type": "address", "internalType": "address" },
185
+ { "name": "validator", "type": "address", "internalType": "address" }
350
186
  ]
351
187
  }
352
188
  ],
@@ -356,82 +192,43 @@
356
192
  "type": "function",
357
193
  "name": "getVotesCount",
358
194
  "inputs": [],
359
- "outputs": [
360
- {
361
- "name": "",
362
- "type": "uint256",
363
- "internalType": "uint256"
364
- }
365
- ],
195
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
366
196
  "stateMutability": "view"
367
197
  },
368
198
  {
369
199
  "type": "function",
370
200
  "name": "initialize",
371
- "inputs": [
372
- {
373
- "name": "registrationFee",
374
- "type": "uint128",
375
- "internalType": "uint128"
376
- }
377
- ],
201
+ "inputs": [{ "name": "registrationFee", "type": "uint128", "internalType": "uint128" }],
378
202
  "outputs": [],
379
203
  "stateMutability": "nonpayable"
380
204
  },
381
205
  {
382
206
  "type": "function",
383
207
  "name": "isValidatorRegistered",
384
- "inputs": [
385
- {
386
- "name": "addr",
387
- "type": "address",
388
- "internalType": "address"
389
- }
390
- ],
391
- "outputs": [
392
- {
393
- "name": "",
394
- "type": "bool",
395
- "internalType": "bool"
396
- }
397
- ],
208
+ "inputs": [{ "name": "addr", "type": "address", "internalType": "address" }],
209
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
398
210
  "stateMutability": "view"
399
211
  },
400
212
  {
401
213
  "type": "function",
402
214
  "name": "owner",
403
215
  "inputs": [],
404
- "outputs": [
405
- {
406
- "name": "",
407
- "type": "address",
408
- "internalType": "address"
409
- }
410
- ],
216
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
411
217
  "stateMutability": "view"
412
218
  },
413
219
  {
414
220
  "type": "function",
415
221
  "name": "proxiableUUID",
416
222
  "inputs": [],
417
- "outputs": [
418
- {
419
- "name": "",
420
- "type": "bytes32",
421
- "internalType": "bytes32"
422
- }
423
- ],
223
+ "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
424
224
  "stateMutability": "view"
425
225
  },
426
226
  {
427
227
  "type": "function",
428
228
  "name": "registerValidator",
429
229
  "inputs": [
430
- {
431
- "name": "blsPublicKey",
432
- "type": "bytes",
433
- "internalType": "bytes"
434
- }
230
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" },
231
+ { "name": "proofOfPossession", "type": "bytes", "internalType": "bytes" }
435
232
  ],
436
233
  "outputs": [],
437
234
  "stateMutability": "payable"
@@ -443,81 +240,42 @@
443
240
  "outputs": [],
444
241
  "stateMutability": "nonpayable"
445
242
  },
446
- {
447
- "type": "function",
448
- "name": "resignValidator",
449
- "inputs": [],
450
- "outputs": [],
451
- "stateMutability": "nonpayable"
452
- },
243
+ { "type": "function", "name": "resignValidator", "inputs": [], "outputs": [], "stateMutability": "nonpayable" },
453
244
  {
454
245
  "type": "function",
455
246
  "name": "resignedValidatorsCount",
456
247
  "inputs": [],
457
- "outputs": [
458
- {
459
- "name": "",
460
- "type": "uint256",
461
- "internalType": "uint256"
462
- }
463
- ],
248
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
464
249
  "stateMutability": "view"
465
250
  },
466
251
  {
467
252
  "type": "function",
468
253
  "name": "roundValidatorsCount",
469
254
  "inputs": [],
470
- "outputs": [
471
- {
472
- "name": "",
473
- "type": "uint256",
474
- "internalType": "uint256"
475
- }
476
- ],
255
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
477
256
  "stateMutability": "view"
478
257
  },
479
258
  {
480
259
  "type": "function",
481
260
  "name": "setFee",
482
- "inputs": [
483
- {
484
- "name": "registrationFee",
485
- "type": "uint128",
486
- "internalType": "uint128"
487
- }
488
- ],
261
+ "inputs": [{ "name": "registrationFee", "type": "uint128", "internalType": "uint128" }],
489
262
  "outputs": [],
490
263
  "stateMutability": "nonpayable"
491
264
  },
492
265
  {
493
266
  "type": "function",
494
267
  "name": "transferOwnership",
495
- "inputs": [
496
- {
497
- "name": "newOwner",
498
- "type": "address",
499
- "internalType": "address"
500
- }
501
- ],
502
- "outputs": [],
503
- "stateMutability": "nonpayable"
504
- },
505
- {
506
- "type": "function",
507
- "name": "unvote",
508
- "inputs": [],
268
+ "inputs": [{ "name": "newOwner", "type": "address", "internalType": "address" }],
509
269
  "outputs": [],
510
270
  "stateMutability": "nonpayable"
511
271
  },
272
+ { "type": "function", "name": "unvote", "inputs": [], "outputs": [], "stateMutability": "nonpayable" },
512
273
  {
513
274
  "type": "function",
514
275
  "name": "updateValidator",
515
276
  "inputs": [
516
- {
517
- "name": "blsPublicKey",
518
- "type": "bytes",
519
- "internalType": "bytes"
520
- }
277
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" },
278
+ { "name": "proofOfPossession", "type": "bytes", "internalType": "bytes" }
521
279
  ],
522
280
  "outputs": [],
523
281
  "stateMutability": "nonpayable"
@@ -525,13 +283,7 @@
525
283
  {
526
284
  "type": "function",
527
285
  "name": "updateVoters",
528
- "inputs": [
529
- {
530
- "name": "voters",
531
- "type": "address[]",
532
- "internalType": "address[]"
533
- }
534
- ],
286
+ "inputs": [{ "name": "voters", "type": "address[]", "internalType": "address[]" }],
535
287
  "outputs": [],
536
288
  "stateMutability": "nonpayable"
537
289
  },
@@ -539,16 +291,8 @@
539
291
  "type": "function",
540
292
  "name": "upgradeToAndCall",
541
293
  "inputs": [
542
- {
543
- "name": "newImplementation",
544
- "type": "address",
545
- "internalType": "address"
546
- },
547
- {
548
- "name": "data",
549
- "type": "bytes",
550
- "internalType": "bytes"
551
- }
294
+ { "name": "newImplementation", "type": "address", "internalType": "address" },
295
+ { "name": "data", "type": "bytes", "internalType": "bytes" }
552
296
  ],
553
297
  "outputs": [],
554
298
  "stateMutability": "payable"
@@ -557,83 +301,41 @@
557
301
  "type": "function",
558
302
  "name": "validatorsCount",
559
303
  "inputs": [],
560
- "outputs": [
561
- {
562
- "name": "",
563
- "type": "uint256",
564
- "internalType": "uint256"
565
- }
566
- ],
304
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
567
305
  "stateMutability": "view"
568
306
  },
569
307
  {
570
308
  "type": "function",
571
309
  "name": "version",
572
310
  "inputs": [],
573
- "outputs": [
574
- {
575
- "name": "",
576
- "type": "uint256",
577
- "internalType": "uint256"
578
- }
579
- ],
311
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
580
312
  "stateMutability": "pure"
581
313
  },
582
314
  {
583
315
  "type": "function",
584
316
  "name": "vote",
585
- "inputs": [
586
- {
587
- "name": "addr",
588
- "type": "address",
589
- "internalType": "address"
590
- }
591
- ],
317
+ "inputs": [{ "name": "addr", "type": "address", "internalType": "address" }],
592
318
  "outputs": [],
593
319
  "stateMutability": "nonpayable"
594
320
  },
595
321
  {
596
322
  "type": "event",
597
323
  "name": "FeeUpdated",
598
- "inputs": [
599
- {
600
- "name": "fee",
601
- "type": "uint256",
602
- "indexed": false,
603
- "internalType": "uint256"
604
- }
605
- ],
324
+ "inputs": [{ "name": "fee", "type": "uint256", "indexed": false, "internalType": "uint256" }],
606
325
  "anonymous": false
607
326
  },
608
327
  {
609
328
  "type": "event",
610
329
  "name": "Initialized",
611
- "inputs": [
612
- {
613
- "name": "version",
614
- "type": "uint64",
615
- "indexed": false,
616
- "internalType": "uint64"
617
- }
618
- ],
330
+ "inputs": [{ "name": "version", "type": "uint64", "indexed": false, "internalType": "uint64" }],
619
331
  "anonymous": false
620
332
  },
621
333
  {
622
334
  "type": "event",
623
335
  "name": "OwnershipTransferred",
624
336
  "inputs": [
625
- {
626
- "name": "previousOwner",
627
- "type": "address",
628
- "indexed": true,
629
- "internalType": "address"
630
- },
631
- {
632
- "name": "newOwner",
633
- "type": "address",
634
- "indexed": true,
635
- "internalType": "address"
636
- }
337
+ { "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" },
338
+ { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" }
637
339
  ],
638
340
  "anonymous": false
639
341
  },
@@ -641,82 +343,38 @@
641
343
  "type": "event",
642
344
  "name": "Unvoted",
643
345
  "inputs": [
644
- {
645
- "name": "voter",
646
- "type": "address",
647
- "indexed": false,
648
- "internalType": "address"
649
- },
650
- {
651
- "name": "validator",
652
- "type": "address",
653
- "indexed": false,
654
- "internalType": "address"
655
- }
346
+ { "name": "voter", "type": "address", "indexed": false, "internalType": "address" },
347
+ { "name": "validator", "type": "address", "indexed": false, "internalType": "address" }
656
348
  ],
657
349
  "anonymous": false
658
350
  },
659
351
  {
660
352
  "type": "event",
661
353
  "name": "Upgraded",
662
- "inputs": [
663
- {
664
- "name": "implementation",
665
- "type": "address",
666
- "indexed": true,
667
- "internalType": "address"
668
- }
669
- ],
354
+ "inputs": [{ "name": "implementation", "type": "address", "indexed": true, "internalType": "address" }],
670
355
  "anonymous": false
671
356
  },
672
357
  {
673
358
  "type": "event",
674
359
  "name": "ValidatorRegistered",
675
360
  "inputs": [
676
- {
677
- "name": "addr",
678
- "type": "address",
679
- "indexed": false,
680
- "internalType": "address"
681
- },
682
- {
683
- "name": "blsPublicKey",
684
- "type": "bytes",
685
- "indexed": false,
686
- "internalType": "bytes"
687
- }
361
+ { "name": "addr", "type": "address", "indexed": false, "internalType": "address" },
362
+ { "name": "blsPublicKey", "type": "bytes", "indexed": false, "internalType": "bytes" }
688
363
  ],
689
364
  "anonymous": false
690
365
  },
691
366
  {
692
367
  "type": "event",
693
368
  "name": "ValidatorResigned",
694
- "inputs": [
695
- {
696
- "name": "addr",
697
- "type": "address",
698
- "indexed": false,
699
- "internalType": "address"
700
- }
701
- ],
369
+ "inputs": [{ "name": "addr", "type": "address", "indexed": false, "internalType": "address" }],
702
370
  "anonymous": false
703
371
  },
704
372
  {
705
373
  "type": "event",
706
374
  "name": "ValidatorUpdated",
707
375
  "inputs": [
708
- {
709
- "name": "addr",
710
- "type": "address",
711
- "indexed": false,
712
- "internalType": "address"
713
- },
714
- {
715
- "name": "blsPublicKey",
716
- "type": "bytes",
717
- "indexed": false,
718
- "internalType": "bytes"
719
- }
376
+ { "name": "addr", "type": "address", "indexed": false, "internalType": "address" },
377
+ { "name": "blsPublicKey", "type": "bytes", "indexed": false, "internalType": "bytes" }
720
378
  ],
721
379
  "anonymous": false
722
380
  },
@@ -724,229 +382,75 @@
724
382
  "type": "event",
725
383
  "name": "Voted",
726
384
  "inputs": [
727
- {
728
- "name": "voter",
729
- "type": "address",
730
- "indexed": false,
731
- "internalType": "address"
732
- },
733
- {
734
- "name": "validator",
735
- "type": "address",
736
- "indexed": false,
737
- "internalType": "address"
738
- }
385
+ { "name": "voter", "type": "address", "indexed": false, "internalType": "address" },
386
+ { "name": "validator", "type": "address", "indexed": false, "internalType": "address" }
739
387
  ],
740
388
  "anonymous": false
741
389
  },
742
390
  {
743
391
  "type": "error",
744
392
  "name": "AddressEmptyCode",
745
- "inputs": [
746
- {
747
- "name": "target",
748
- "type": "address",
749
- "internalType": "address"
750
- }
751
- ]
752
- },
753
- {
754
- "type": "error",
755
- "name": "AlreadyVoted",
756
- "inputs": []
757
- },
758
- {
759
- "type": "error",
760
- "name": "BellowMinValidators",
761
- "inputs": []
762
- },
763
- {
764
- "type": "error",
765
- "name": "BlsKeyAlreadyRegistered",
766
- "inputs": []
767
- },
768
- {
769
- "type": "error",
770
- "name": "BlsKeyIsInvalid",
771
- "inputs": []
772
- },
773
- {
774
- "type": "error",
775
- "name": "CallerIsNotValidator",
776
- "inputs": []
393
+ "inputs": [{ "name": "target", "type": "address", "internalType": "address" }]
777
394
  },
395
+ { "type": "error", "name": "AlreadyVoted", "inputs": [] },
396
+ { "type": "error", "name": "BellowMinValidators", "inputs": [] },
397
+ { "type": "error", "name": "BlsKeyAlreadyRegistered", "inputs": [] },
398
+ { "type": "error", "name": "BlsKeyIsInvalid", "inputs": [] },
399
+ { "type": "error", "name": "CallerIsNotValidator", "inputs": [] },
778
400
  {
779
401
  "type": "error",
780
402
  "name": "ERC1967InvalidImplementation",
781
- "inputs": [
782
- {
783
- "name": "implementation",
784
- "type": "address",
785
- "internalType": "address"
786
- }
787
- ]
788
- },
789
- {
790
- "type": "error",
791
- "name": "ERC1967NonPayable",
792
- "inputs": []
793
- },
794
- {
795
- "type": "error",
796
- "name": "FailedCall",
797
- "inputs": []
798
- },
799
- {
800
- "type": "error",
801
- "name": "ImportIsNotAllowed",
802
- "inputs": []
803
- },
804
- {
805
- "type": "error",
806
- "name": "InvalidFee",
807
- "inputs": []
808
- },
809
- {
810
- "type": "error",
811
- "name": "InvalidInitialization",
812
- "inputs": []
813
- },
814
- {
815
- "type": "error",
816
- "name": "InvalidParameters",
817
- "inputs": []
403
+ "inputs": [{ "name": "implementation", "type": "address", "internalType": "address" }]
818
404
  },
405
+ { "type": "error", "name": "ERC1967NonPayable", "inputs": [] },
406
+ { "type": "error", "name": "FailedCall", "inputs": [] },
407
+ { "type": "error", "name": "ImportIsNotAllowed", "inputs": [] },
408
+ { "type": "error", "name": "InvalidFee", "inputs": [] },
409
+ { "type": "error", "name": "InvalidInitialization", "inputs": [] },
410
+ { "type": "error", "name": "InvalidInputLength", "inputs": [] },
411
+ { "type": "error", "name": "InvalidParameters", "inputs": [] },
412
+ { "type": "error", "name": "InvalidProofOfPossession", "inputs": [] },
819
413
  {
820
414
  "type": "error",
821
415
  "name": "InvalidRange",
822
416
  "inputs": [
823
- {
824
- "name": "min",
825
- "type": "uint256",
826
- "internalType": "uint256"
827
- },
828
- {
829
- "name": "max",
830
- "type": "uint256",
831
- "internalType": "uint256"
832
- }
417
+ { "name": "min", "type": "uint256", "internalType": "uint256" },
418
+ { "name": "max", "type": "uint256", "internalType": "uint256" }
833
419
  ]
834
420
  },
835
- {
836
- "type": "error",
837
- "name": "MissingVote",
838
- "inputs": []
839
- },
840
- {
841
- "type": "error",
842
- "name": "NoActiveValidators",
843
- "inputs": []
844
- },
845
- {
846
- "type": "error",
847
- "name": "NotInitializing",
848
- "inputs": []
849
- },
421
+ { "type": "error", "name": "MissingVote", "inputs": [] },
422
+ { "type": "error", "name": "NoActiveValidators", "inputs": [] },
423
+ { "type": "error", "name": "NotInitializing", "inputs": [] },
850
424
  {
851
425
  "type": "error",
852
426
  "name": "OwnableInvalidOwner",
853
- "inputs": [
854
- {
855
- "name": "owner",
856
- "type": "address",
857
- "internalType": "address"
858
- }
859
- ]
427
+ "inputs": [{ "name": "owner", "type": "address", "internalType": "address" }]
860
428
  },
861
429
  {
862
430
  "type": "error",
863
431
  "name": "OwnableUnauthorizedAccount",
864
- "inputs": [
865
- {
866
- "name": "account",
867
- "type": "address",
868
- "internalType": "address"
869
- }
870
- ]
871
- },
872
- {
873
- "type": "error",
874
- "name": "RefundFailed",
875
- "inputs": []
876
- },
877
- {
878
- "type": "error",
879
- "name": "UUPSUnauthorizedCallContext",
880
- "inputs": []
432
+ "inputs": [{ "name": "account", "type": "address", "internalType": "address" }]
881
433
  },
434
+ { "type": "error", "name": "PrecompileCallFailed", "inputs": [] },
435
+ { "type": "error", "name": "RefundFailed", "inputs": [] },
436
+ { "type": "error", "name": "UUPSUnauthorizedCallContext", "inputs": [] },
882
437
  {
883
438
  "type": "error",
884
439
  "name": "UUPSUnsupportedProxiableUUID",
885
- "inputs": [
886
- {
887
- "name": "slot",
888
- "type": "bytes32",
889
- "internalType": "bytes32"
890
- }
891
- ]
892
- },
893
- {
894
- "type": "error",
895
- "name": "ValidatorAlreadyRegistered",
896
- "inputs": []
897
- },
898
- {
899
- "type": "error",
900
- "name": "ValidatorAlreadyResigned",
901
- "inputs": []
902
- },
903
- {
904
- "type": "error",
905
- "name": "ValidatorNotRegistered",
906
- "inputs": []
907
- },
908
- {
909
- "type": "error",
910
- "name": "VoteResignedValidator",
911
- "inputs": []
912
- },
913
- {
914
- "type": "error",
915
- "name": "VoteSameValidator",
916
- "inputs": []
917
- },
918
- {
919
- "type": "error",
920
- "name": "VoteValidatorWithoutBlsPublicKey",
921
- "inputs": []
922
- }
440
+ "inputs": [{ "name": "slot", "type": "bytes32", "internalType": "bytes32" }]
441
+ },
442
+ { "type": "error", "name": "ValidatorAlreadyRegistered", "inputs": [] },
443
+ { "type": "error", "name": "ValidatorAlreadyResigned", "inputs": [] },
444
+ { "type": "error", "name": "ValidatorNotRegistered", "inputs": [] },
445
+ { "type": "error", "name": "VoteResignedValidator", "inputs": [] },
446
+ { "type": "error", "name": "VoteSameValidator", "inputs": [] },
447
+ { "type": "error", "name": "VoteValidatorWithoutBlsPublicKey", "inputs": [] }
923
448
  ],
924
449
  "bytecode": {
925
- "object": "0x60a0604052306080523480156012575f5ffd5b5060805161408b6100395f395f818161241c015281816124450152612584015261408b5ff3fe6080604052600436106101d0575f3560e01c8063715018a6116100fd578063c5a7444911610092578063eb9019d411610062578063eb9019d414610512578063ed612f8c1461053e578063f2fde38b14610552578063f3513a3714610571575f5ffd5b8063c5a7444914610488578063d04a68c7146104a7578063ddca3f43146104d6578063e9257dc8146104f3575f5ffd5b8063a250eaf1116100cd578063a250eaf114610402578063ad3cb1cc14610423578063b84d356e14610460578063b85f5da214610474575f5ffd5b8063715018a6146103755780637c8a92c3146103895780638da5cb5b146103a8578063a09686c4146103ee575f5ffd5b806340f74f471161017357806356db9ef11161014357806356db9ef1146103055780635a8eed7314610324578063602a9eee146103435780636dd7d8ea14610356575f5ffd5b806340f74f471461029f5780634f1ef286146102cb57806352d1902d146102de57806354fd4d50146102f2575f5ffd5b80631b605b86116101ae5780631b605b86146102375780632bdf6d431461024b5780633174b6891461026c5780633687f24a14610280575f5ffd5b80630777cbef146101d45780630d2bd909146101f75780631904bb2e1461020b575b5f5ffd5b3480156101df575f5ffd5b506006545b6040519081526020015b60405180910390f35b348015610202575f5ffd5b506004546101e4565b348015610216575f5ffd5b5061022a610225366004613751565b610585565b6040516101ee919061382c565b348015610242575f5ffd5b50600a546101e4565b348015610256575f5ffd5b5061026a610265366004613885565b6106c2565b005b348015610277575f5ffd5b5061026a610710565b34801561028b575f5ffd5b5061026a61029a3660046138c3565b61075f565b3480156102aa575f5ffd5b506102be6102b93660046138e9565b6107bc565b6040516101ee9190613909565b61026a6102d93660046139d6565b61094f565b3480156102e9575f5ffd5b506101e461096e565b3480156102fd575f5ffd5b5060016101e4565b348015610310575f5ffd5b5061026a61031f3660046138c3565b610989565b34801561032f575f5ffd5b5061026a61033e366004613ad4565b610aa0565b61026a610351366004613ad4565b610b55565b348015610361575f5ffd5b5061026a610370366004613751565b610d54565b348015610380575f5ffd5b5061026a610fff565b348015610394575f5ffd5b5061026a6103a3366004613b06565b611012565b3480156103b3575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101ee565b3480156103f9575f5ffd5b506011546101e4565b34801561040d575f5ffd5b506104166112a5565b6040516101ee9190613b6b565b34801561042e575f5ffd5b50610453604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ee9190613bc2565b34801561046b575f5ffd5b50600e546101e4565b34801561047f575f5ffd5b5061026a611468565b348015610493575f5ffd5b5061026a6104a2366004613bd4565b6115dd565b3480156104b2575f5ffd5b506104c66104c1366004613751565b611bab565b60405190151581526020016101ee565b3480156104e1575f5ffd5b506010546001600160801b03166101e4565b3480156104fe575f5ffd5b5061026a61050d366004613bf4565b611bc8565b34801561051d575f5ffd5b5061053161052c366004613c5e565b611c8b565b6040516101ee9190613c86565b348015610549575f5ffd5b506003546101e4565b34801561055d575f5ffd5b5061026a61056c366004613751565b611e8c565b34801561057c575f5ffd5b50610416611ec9565b61058d613643565b61059682611bab565b6105b35760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff161515606085015260028101805493949285019360808401919061063990613ce0565b80601f016020809104026020016040519081016040528092919081815260200182805461066590613ce0565b80156106b05780601f10610687576101008083540402835291602001916106b0565b820191905f5260205f20905b81548152906001019060200180831161069357829003601f168201915b50505091909252505050905292915050565b6106ca612086565b5f5b8181101561070b576107038383838181106106e9576106e9613d12565b90506020020160208101906106fe9190613751565b6120e1565b6001016106cc565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef3361073a6121bb565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b610767612086565b601080546001600160801b0319166001600160801b0383169081179091556040519081527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020015b60405180910390a150565b60606107c6612086565b601154829084106107d857505f6107fc565b6011546107e58486613d3a565b11156107fc576011546107f9908590613d4d565b90505b5f816001600160401b03811115610815576108156139c2565b60405190808252806020026020018201604052801561085a57816020015b604080518082019091525f8152606060208201528152602001906001900390816108335790505b5090505f5b82811015610944576040518060400160405280828861087e9190613d3a565b610889906001613d3a565b8152602001601161089a848a613d3a565b815481106108aa576108aa613d12565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610918575f848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016108d1565b5050505081525082828151811061093157610931613d12565b602090810291909101015260010161085f565b509150505b92915050565b610957612411565b610960826124b5565b61096a82826124bd565b5050565b5f610977612579565b505f5160206140365f395f51905f5290565b5f6109926125c2565b805490915060ff600160401b82041615906001600160401b03165f811580156109b85750825b90505f826001600160401b031660011480156109d35750303b155b9050811580156109e1575080155b156109ff5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a2957845460ff60401b1916600160401b1785555b610a32336125ea565b6001600f55601080546001600160801b0319166001600160801b0388161790558315610a9857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b610aa933611bab565b610ac65760405163510b8aad60e11b815260040160405180910390fd5b610ad082826125fb565b335f908152602081905260409020600201610aec828483613da4565b50610af63361266f565b8015610b085750610b06336126b8565b155b15610b1657610b163361271a565b7f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b4993929190613e5d565b60405180910390a15050565b6010546001600160801b03163414610b80576040516358d620b360e01b815260040160405180910390fd5b335f9081526001602052604090205460ff1615610bb05760405163132e7efb60e31b815260040160405180910390fd5b610bba82826125fb565b5f6040518060a001604052805f8152602001346001600160801b031681526020015f6001600160401b031681526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050338152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b0390951694909417949094179390931691909117909155608083015192935083929091506002820190610cc49082613e9c565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191633908117909155610d14915061271a565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c338484604051610d4793929190613e5d565b60405180910390a1505050565b610d5d81611bab565b610d7a5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526020819052604090206001810154600160c01b900460ff1615610dbe5760405163510ae2bd60e11b815260040160405180910390fd5b806002018054610dcd90613ce0565b90505f03610dee5760405163970c784d60e01b815260040160405180910390fd5b335f90815260076020526040902080546001600160a01b03848116911603610e2957604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610e4357610e416121bb565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560085416610ef55760088054336001600160a01b03199182168117909255600980549091169091179055610f4c565b600980546001600160a01b039081165f9081526007602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f610f5b83613f56565b9091555050815433319083905f90610f74908490613d3a565b909155505060018281018054601090610f9e908490600160801b90046001600160401b0316613f6e565b82546001600160401b039182166101009390930a928302919092021990911617905550604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610d47565b611007612086565b6110105f61278d565b565b61101a612086565b6011541561103b576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff16156110745760405163132e7efb60e31b815260040160405180910390fd5b60025f8484604051611087929190613f8d565b604080519182900390912082526020820192909252015f205460ff16156110c157604051637e4c066f60e01b815260040160405180910390fd5b81156110d1576110d183836125fb565b5f6040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b03168152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506001600160a01b0388168152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b03909516949094179490941793909316919091179091556080830151929350839290915060028201906111e49082613e9c565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561124c5760068054905f61124683613f56565b91905055505b6112558561266f565b15611263576112638561271a565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c85858560405161129693929190613e5d565b60405180910390a15050505050565b600c546060905f906001600160401b038111156112c4576112c46139c2565b6040519080825280602002602001820160405280156112fd57816020015b6112ea613643565b8152602001906001900390816112e25790505b5090505f5b600c54811015611462575f600c828154811061132057611320613d12565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff161515606086015260028201805493965091949093840192909185916080840191906113b890613ce0565b80601f01602080910402602001604051908101604052809291908181526020018280546113e490613ce0565b801561142f5780601f106114065761010080835404028352916020019161142f565b820191905f5260205f20905b81548152906001019060200180831161141257829003601f168201915b50505050508152505081525084848151811061144d5761144d613d12565b60209081029190910101525050600101611302565b50919050565b61147133611bab565b61148e5760405163668191af60e11b815260040160405180910390fd5b335f9081526020819052604090206001810154600160c01b900460ff16156114c957604051632d8b5c9760e21b815260040160405180910390fd5b600f54600454116114ed57604051633b15f1f760e21b815260040160405180910390fd5b6001818101805460ff60c01b1916600160c01b179055600680545f90611514908490613d3a565b909155506115239050336127fd565b60018101546001600160801b0316156115ad5760018101546040515f9133916001600160801b03909116908381818185875af1925050503d805f8114611584576040519150601f19603f3d011682016040523d82523d5f602084013e611589565b606091505b50509050806115ab57604051633c31275160e21b815260040160405180910390fd5b505b6040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a54117906020016107b1565b6115e5612086565b8060ff165f0361160857604051630e52390960e41b815260040160405180910390fd5b60ff8116600f5561161761290d565b61161f612aab565b600d80546001600160a01b03191690556004545f906116449060ff8416908390612afc565b90508060ff165f03611669576040516367c0fced60e01b815260040160405180910390fd5b5f5b600454811015611976575f6004828154811061168957611689613d12565b5f9182526020808320909101546001600160a01b031680835290829052604090912060018101549192509060ff600160c01b90910416806116d857508060020180546116d490613ce0565b1590505b156116e457505061196e565b600d546001600160a01b031661171f5750600d80546001600160a01b0319166001600160a01b03929092169190911790556001600e5561196e565b8360ff16600e54101561173d576117368285612b4e565b505061196e565b600d546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160a0810184528554815260018601546001600160801b03811682850152600160801b81046001600160401b031694820194909452600160c01b90930460ff1615156060840152600285018054919461195b949093840192909187916080840191906117d290613ce0565b80601f01602080910402602001604051908101604052809291908181526020018280546117fe90613ce0565b80156118495780601f1061182057610100808354040283529160200191611849565b820191905f5260205f20905b81548152906001019060200180831161182c57829003601f168201915b505050919092525050509052604080518082018252600d546001600160a01b03168152815160a0810183528554815260018601546001600160801b038116602080840191909152600160801b82046001600160401b031694830194909452600160c01b900460ff16151560608201526002860180549293840192879160808401916118d390613ce0565b80601f01602080910402602001604051908101604052809291908181526020018280546118ff90613ce0565b801561194a5780601f106119215761010080835404028352916020019161194a565b820191905f5260205f20905b81548152906001019060200180831161192d57829003601f168201915b505050505081525050815250612f93565b1561196a5761196a8386612b4e565b5050505b60010161166b565b50600e545f03611999576040516367c0fced60e01b815260040160405180910390fd5b600d54600e546001600160a01b03909116905f906001600160401b038111156119c4576119c46139c2565b6040519080825280602002602001820160405280156119ed578160200160208202803683370190505b5090505f5b600e54811015611a475782828281518110611a0f57611a0f613d12565b6001600160a01b039283166020918202929092018101919091529381165f908152600b909452604090932054909216916001016119f2565b50611a5181612fcf565b601180546001810182555f9182527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680190611a8e90600c906136a4565b600f546001600160401b03811115611aa857611aa86139c2565b604051908082528060200260200182016040528015611ad1578160200160208202803683370190505b508051611ae691600c916020909101906136bf565b505f5b600f54811015610a98575f83600e5483611b039190613f9c565b81518110611b1357611b13613d12565b6020026020010151905080600c8381548110611b3157611b31613d12565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832054858301908152875460018181018a558986529390942095516002909402909501805493909416921691909117825591519082015501611ae9565b6001600160a01b03165f9081526001602052604090205460ff1690565b611bd0612086565b828114611c1c5760405162461bcd60e51b81526020600482015260156024820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60448201526064015b60405180910390fd5b5f5b83811015611c8457611c7c858583818110611c3b57611c3b613d12565b9050602002016020810190611c509190613751565b848484818110611c6257611c62613d12565b9050602002016020810190611c779190613751565b6130e6565b600101611c1e565b5050505050565b6060611c95612086565b5f611ca3835f600a54612afc565b6001600160401b03811115611cba57611cba6139c2565b604051908082528060200260200182016040528015611cfe57816020015b604080518082019091525f8082526020820152815260200190600190039081611cd85790505b506008549091506001600160a01b0390811690851615611d3757506001600160a01b038085165f90815260076020526040902060030154165b5f5b6001600160a01b03821615801590611d5057508481105b15611dc5576001600160a01b038083165f818152600760209081526040918290208251808401909352928252825490931692810192909252908483611d9481613f56565b945081518110611da657611da6613d12565b6020908102919091010152600301546001600160a01b03169150611d39565b80835103611dd857829350505050610949565b5f816001600160401b03811115611df157611df16139c2565b604051908082528060200260200182016040528015611e3557816020015b604080518082019091525f8082526020820152815260200190600190039081611e0f5790505b5090505f5b82811015611e8157848181518110611e5457611e54613d12565b6020026020010151828281518110611e6e57611e6e613d12565b6020908102919091010152600101611e3a565b509695505050505050565b611e94612086565b6001600160a01b038116611ebd57604051631e4fbdf760e01b81525f6004820152602401611c13565b611ec68161278d565b50565b6003546060905f906001600160401b03811115611ee857611ee86139c2565b604051908082528060200260200182016040528015611f2157816020015b611f0e613643565b815260200190600190039081611f065790505b5090505f5b600354811015611462575f60038281548110611f4457611f44613d12565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff16151560608601526002820180549396509194909384019290918591608084019190611fdc90613ce0565b80601f016020809104026020016040519081016040528092919081815260200182805461200890613ce0565b80156120535780601f1061202a57610100808354040283529160200191612053565b820191905f5260205f20905b81548152906001019060200180831161203657829003601f168201915b50505050508152505081525084848151811061207157612071613d12565b60209081029190910101525050600101611f26565b336120b87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146110105760405163118cdaa760e01b8152336004820152602401611c13565b6001600160a01b038082165f9081526007602052604090208054909116612106575050565b60018101546001600160a01b0383163181101561216457612131816001600160a01b03851631613d4d565b82546001600160a01b03165f9081526020819052604081208054909190612159908490613d3a565b909155506121a69050565b6121786001600160a01b0384163182613d4d565b82546001600160a01b03165f90815260208190526040812080549091906121a0908490613d4d565b90915550505b506001600160a01b0390911631600190910155565b335f90815260076020526040812080546001600160a01b03166121f15760405163498ea63d60e01b815260040160405180910390fd5b6009546008546001600160a01b0391821691160361222a57600880546001600160a01b031990811690915560098054909116905561233d565b600954336001600160a01b0390911603612283576002810180546001600160a01b039081165f90815260076020526040902060030180546001600160a01b0319908116909155915460098054909316911617905561233d565b600854336001600160a01b03909116036122e7576009546001600160a01b039081165f9081526007602052604080822060020180546001600160a01b031990811690915560088054808616855292909320600301549116921691909117905561233d565b60038181018054600280850180546001600160a01b039081165f9081526007602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f818152602081905260408120600184015481549192909183919061236e908490613d4d565b909155505060018181018054601090612398908490600160801b90046001600160401b0316613fbb565b82546001600160401b039182166101009390930a928302919092021990911617905550335f90815260076020526040812080546001600160a01b031990811682556001820183905560028201805482169055600390910180549091169055600a80549161240483613fda565b9091555091949350505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061249757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661248b5f5160206140365f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156110105760405163703e46dd60e11b815260040160405180910390fd5b611ec6612086565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612517575060408051601f3d908101601f1916820190925261251491810190613fef565b60015b61253f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611c13565b5f5160206140365f395f51905f52811461256f57604051632a87526960e21b815260048101829052602401611c13565b61070b8383613360565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110105760405163703e46dd60e11b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610949565b6125f26133b5565b611ec6816133da565b5f828260405161260c929190613f8d565b60408051918290039091205f8181526002602052919091205490915060ff161561264957604051637e4c066f60e01b815260040160405180910390fd5b61265383836133e2565b5f908152600260205260409020805460ff191660011790555050565b6001600160a01b0381165f9081526020819052604081206001810154600160c01b900460ff161580156126b157508060020180546126ac90613ce0565b151590505b9392505050565b6001600160a01b0381165f9081526005602052604081205460045481106126e157505f92915050565b826001600160a01b0316600482815481106126fe576126fe613d12565b5f918252602090912001546001600160a01b0316149392505050565b60048054600180820183555f8390527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319166001600160a01b03851617905590546127729190613d4d565b6001600160a01b039091165f90815260056020526040902055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612806816126b8565b61280d5750565b6001600160a01b0381165f9081526005602052604081205460045490919061283790600190613d4d565b90508082146128bc575f6004828154811061285457612854613d12565b5f91825260209091200154600480546001600160a01b03909216925082918590811061288257612882613d12565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526005909152604090208290555b60048054806128cd576128cd614006565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b03949094168152600590935250506040812055565b6004545f81900361291b5750565b5f612927600183613d4d565b90505b801561096a575f61293c826001613d3a565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c6129719190613f9c565b90508082036129805750612a99565b5f6004838154811061299457612994613d12565b5f918252602082200154600480546001600160a01b03909216935090849081106129c0576129c0613d12565b5f91825260209091200154600480546001600160a01b03909216925090849081106129ed576129ed613d12565b5f91825260209091200154600480546001600160a01b039092169186908110612a1857612a18613d12565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508160048481548110612a5757612a57613d12565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905593821681526005909352604080842094909455168152208190555b80612aa381613fda565b91505061292a565b600d546001600160a01b03165b6001600160a01b03811615612af5576001600160a01b039081165f908152600b6020526040902080546001600160a01b0319811690915516612ab8565b505f600e55565b5f81831115612b2857604051632457cde760e01b81526004810184905260248101839052604401611c13565b82841015612b375750816126b1565b81841115612b465750806126b1565b509192915050565b6001600160a01b0382165f90815260208181526040808320815160a0810183528154815260018201546001600160801b03811694820194909452600160801b84046001600160401b031692810192909252600160c01b90920460ff1615156060820152600282018054919291608084019190612bc990613ce0565b80601f0160208091040260200160405190810160405280929190818152602001828054612bf590613ce0565b8015612c405780601f10612c1757610100808354040283529160200191612c40565b820191905f5260205f20905b815481529060010190602001808311612c2357829003601f168201915b505050919092525050604080518082018252600d546001600160a01b03168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054969750612d8196939550918501939290916080840191612cdb90613ce0565b80601f0160208091040260200160405190810160405280929190818152602001828054612d0790613ce0565b8015612d525780601f10612d2957610100808354040283529160200191612d52565b820191905f5260205f20905b815481529060010190602001808311612d3557829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612f93565b15612d9457612d8f83613403565b612f34565b600d546001600160a01b039081165f818152600b6020526040902054909116905b6001600160a01b038216612dd257612dcd8186613454565b612f31565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054612f01959385019392916080840191612e5b90613ce0565b80601f0160208091040260200160405190810160405280929190818152602001828054612e8790613ce0565b8015612ed25780601f10612ea957610100808354040283529160200191612ed2565b820191905f5260205f20905b815481529060010190602001808311612eb557829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612f93565b15612f1057612dcd8186613454565b506001600160a01b038082165f908152600b60205260409020541690612db5565b50505b8160ff16600e54111561070b57600d80546001600160a01b039081165f908152600b6020526040812080546001600160a01b03198082169092558454931692168217909255600e80549192612f8883613fda565b919050555050505050565b6020808201515190830151515f919003612fbf5750805182516001600160a01b03918216911610610949565b5060209081015151910151511190565b80515f819003612fdd575050565b5f612fe9600183613d4d565b90505b801561070b575f612ffe826001613d3a565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c6130339190613f9c565b90505f84838151811061304857613048613d12565b6020026020010151905084828151811061306457613064613d12565b602002602001015185848151811061307e5761307e613d12565b60200260200101906001600160a01b031690816001600160a01b031681525050808583815181106130b1576130b1613d12565b60200260200101906001600160a01b031690816001600160a01b031681525050505080806130de90613fda565b915050612fec565b60115415613107576040516349625b3b60e01b815260040160405180910390fd5b61311081611bab565b61312d5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260076020526040902080549091161561316857604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556008541661322557600880546001600160a01b0385166001600160a01b0319918216811790925560098054909116909117905561327d565b600980546001600160a01b039081165f9081526007602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f61328c83613f56565b90915550506001600160a01b038083165f908152602081905260408120805490928616319183916132be908490613d3a565b9091555050600181810180546010906132e8908490600160801b90046001600160401b0316613f6e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e284846040516133529291906001600160a01b0392831681529116602082015260400190565b60405180910390a150505050565b613369826134b2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156133ad5761070b8282613515565b61096a613587565b6133bd6135a6565b61101057604051631afcd79f60e31b815260040160405180910390fd5b611e946133b5565b6030811461096a576040516305db9dbd60e01b815260040160405180910390fd5b600d80546001600160a01b038381165f818152600b602052604081208054939094166001600160a01b031993841617909355835490911617909155600e80549161344c83613f56565b919050555050565b6001600160a01b038281165f818152600b602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600e8054916134a983613f56565b91905055505050565b806001600160a01b03163b5f036134e757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611c13565b5f5160206140365f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613531919061401a565b5f60405180830381855af49150503d805f8114613569576040519150601f19603f3d011682016040523d82523d5f602084013e61356e565b606091505b509150915061357e8583836135bf565b95945050505050565b34156110105760405163b398979f60e01b815260040160405180910390fd5b5f6135af6125c2565b54600160401b900460ff16919050565b6060826135d4576135cf8261361b565b6126b1565b81511580156135eb57506001600160a01b0384163b155b1561361457604051639996b31560e01b81526001600160a01b0385166004820152602401611c13565b50806126b1565b80511561362a57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b0316815260200161369f6040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b031681526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611ec69190613722565b828054828255905f5260205f20908101928215613712579160200282015b8281111561371257825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906136dd565b5061371e929150613722565b5090565b5b8082111561371e575f8155600101613723565b80356001600160a01b038116811461374c575f5ffd5b919050565b5f60208284031215613761575f5ffd5b6126b182613736565b5f5b8381101561378457818101518382015260200161376c565b50505f910152565b5f81518084526137a381602086016020860161376a565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526001600160801b0360208201511660608501526001600160401b0360408201511660808501526060810151151560a08501526080810151905060a060c085015261382460e085018261378c565b949350505050565b602081525f6126b160208301846137b7565b5f5f83601f84011261384e575f5ffd5b5081356001600160401b03811115613864575f5ffd5b6020830191508360208260051b850101111561387e575f5ffd5b9250929050565b5f5f60208385031215613896575f5ffd5b82356001600160401b038111156138ab575f5ffd5b6138b78582860161383e565b90969095509350505050565b5f602082840312156138d3575f5ffd5b81356001600160801b03811681146126b1575f5ffd5b5f5f604083850312156138fa575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156139b657868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b8083101561399e57835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613967565b5096505050602093840193919091019060010161392f565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156139e7575f5ffd5b6139f083613736565b915060208301356001600160401b03811115613a0a575f5ffd5b8301601f81018513613a1a575f5ffd5b80356001600160401b03811115613a3357613a336139c2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715613a6157613a616139c2565b604052818152828201602001871015613a78575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613aa7575f5ffd5b5081356001600160401b03811115613abd575f5ffd5b60208301915083602082850101111561387e575f5ffd5b5f5f60208385031215613ae5575f5ffd5b82356001600160401b03811115613afa575f5ffd5b6138b785828601613a97565b5f5f5f5f60608587031215613b19575f5ffd5b613b2285613736565b935060208501356001600160401b03811115613b3c575f5ffd5b613b4887828801613a97565b90945092505060408501358015158114613b60575f5ffd5b939692955090935050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156139b657603f19878603018452613bad8583516137b7565b94506020938401939190910190600101613b91565b602081525f6126b1602083018461378c565b5f60208284031215613be4575f5ffd5b813560ff811681146126b1575f5ffd5b5f5f5f5f60408587031215613c07575f5ffd5b84356001600160401b03811115613c1c575f5ffd5b613c288782880161383e565b90955093505060208501356001600160401b03811115613c46575f5ffd5b613c528782880161383e565b95989497509550505050565b5f5f60408385031215613c6f575f5ffd5b613c7883613736565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b81811015613cd557835180516001600160a01b039081168552602091820151168185015290930192604090920191600101613c9f565b509095945050505050565b600181811c90821680613cf457607f821691505b60208210810361146257634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561094957610949613d26565b8181038181111561094957610949613d26565b601f82111561070b57805f5260205f20601f840160051c81016020851015613d855750805b601f840160051c820191505b81811015611c84575f8155600101613d91565b6001600160401b03831115613dbb57613dbb6139c2565b613dcf83613dc98354613ce0565b83613d60565b5f601f841160018114613e00575f8515613de95750838201355b5f19600387901b1c1916600186901b178355611c84565b5f83815260208120601f198716915b82811015613e2f5786850135825560209485019460019092019101613e0f565b5086821015613e4b575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b03811115613eb557613eb56139c2565b613ec981613ec38454613ce0565b84613d60565b6020601f821160018114613efb575f8315613ee45750848201515b5f19600385901b1c1916600184901b178455611c84565b5f84815260208120601f198516915b82811015613f2a5787850151825560209485019460019092019101613f0a565b5084821015613f4757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60018201613f6757613f67613d26565b5060010190565b6001600160401b03818116838216019081111561094957610949613d26565b818382375f9101908152919050565b5f82613fb657634e487b7160e01b5f52601260045260245ffd5b500690565b6001600160401b03828116828216039081111561094957610949613d26565b5f81613fe857613fe8613d26565b505f190190565b5f60208284031215613fff575f5ffd5b5051919050565b634e487b7160e01b5f52603160045260245ffd5b5f825161402b81846020870161376a565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212200bd8846e3ba9afa55a2dbbb5167e87f5ba45cee50b29f55af253be0ac412a7b864736f6c634300081b0033",
926
- "sourceMap": "1647:23136:33:-:0;;;1171:4:21;1128:48;;1647:23136:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
450
+ "object": "0x60a0604052306080523480156012575f5ffd5b5060805161424b6100395f395f81816126630152818161268c01526127cb015261424b5ff3fe6080604052600436106101d0575f3560e01c80637c8a92c3116100fd578063c5a7444911610092578063eb9019d411610062578063eb9019d414610512578063ed612f8c1461053e578063f2fde38b14610552578063f3513a3714610571575f5ffd5b8063c5a7444914610488578063d04a68c7146104a7578063ddca3f43146104d6578063e9257dc8146104f3575f5ffd5b8063a250eaf1116100cd578063a250eaf114610402578063ad3cb1cc14610423578063b84d356e14610460578063b85f5da214610474575f5ffd5b80637c8a92c31461036a5780638da5cb5b146103895780638f062626146103cf578063a09686c4146103ee575f5ffd5b80633687f24a1161017357806354fd4d501161014357806354fd4d501461030557806356db9ef1146103185780636dd7d8ea14610337578063715018a614610356575f5ffd5b80633687f24a1461029357806340f74f47146102b25780634f1ef286146102de57806352d1902d146102f1575f5ffd5b80631b605b86116101ae5780631b605b8614610237578063226f26451461024b5780632bdf6d43146102605780633174b6891461027f575f5ffd5b80630777cbef146101d45780630d2bd909146101f75780631904bb2e1461020b575b5f5ffd5b3480156101df575f5ffd5b506006545b6040519081526020015b60405180910390f35b348015610202575f5ffd5b506004546101e4565b348015610216575f5ffd5b5061022a6102253660046138a3565b610585565b6040516101ee919061397e565b348015610242575f5ffd5b50600a546101e4565b61025e6102593660046139d4565b6106c2565b005b34801561026b575f5ffd5b5061025e61027a366004613a7e565b6108ec565b34801561028a575f5ffd5b5061025e61093a565b34801561029e575f5ffd5b5061025e6102ad366004613abc565b610989565b3480156102bd575f5ffd5b506102d16102cc366004613ae2565b6109e6565b6040516101ee9190613b02565b61025e6102ec366004613bcf565b610b79565b3480156102fc575f5ffd5b506101e4610b98565b348015610310575f5ffd5b5060016101e4565b348015610323575f5ffd5b5061025e610332366004613abc565b610bb3565b348015610342575f5ffd5b5061025e6103513660046138a3565b610cca565b348015610361575f5ffd5b5061025e610f7d565b348015610375575f5ffd5b5061025e610384366004613c90565b610f90565b348015610394575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101ee565b3480156103da575f5ffd5b5061025e6103e93660046139d4565b611214565b3480156103f9575f5ffd5b506011546101e4565b34801561040d575f5ffd5b506104166112f4565b6040516101ee9190613cf5565b34801561042e575f5ffd5b50610453604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ee9190613d4c565b34801561046b575f5ffd5b50600e546101e4565b34801561047f575f5ffd5b5061025e6114b7565b348015610493575f5ffd5b5061025e6104a2366004613d5e565b61162c565b3480156104b2575f5ffd5b506104c66104c13660046138a3565b611bfa565b60405190151581526020016101ee565b3480156104e1575f5ffd5b506010546001600160801b03166101e4565b3480156104fe575f5ffd5b5061025e61050d366004613d7e565b611c17565b34801561051d575f5ffd5b5061053161052c366004613ddc565b611cda565b6040516101ee9190613e04565b348015610549575f5ffd5b506003546101e4565b34801561055d575f5ffd5b5061025e61056c3660046138a3565b611edb565b34801561057c575f5ffd5b50610416611f18565b61058d613795565b61059682611bfa565b6105b35760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff161515606085015260028101805493949285019360808401919061063990613e5e565b80601f016020809104026020016040519081016040528092919081815260200182805461066590613e5e565b80156106b05780601f10610687576101008083540402835291602001916106b0565b820191905f5260205f20905b81548152906001019060200180831161069357829003601f168201915b50505091909252505050905292915050565b6010546001600160801b031634146106ed576040516358d620b360e01b815260040160405180910390fd5b335f9081526001602052604090205460ff161561071d5760405163132e7efb60e31b815260040160405180910390fd5b610729848484846120d5565b610746576040516392536faf60e01b815260040160405180910390fd5b61075084846121e6565b5f6040518060a001604052805f8152602001346001600160801b031681526020015f6001600160401b031681526020015f1515815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050338152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b039095169490941794909417939093169190911790915560808301519293508392909150600282019061085a9082613ed4565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916339081179091556108aa915061225a565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c3386866040516108dd93929190613f8e565b60405180910390a15050505050565b6108f46122cd565b5f5b818110156109355761092d83838381811061091357610913613fcd565b905060200201602081019061092891906138a3565b612328565b6001016108f6565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef33610964612402565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b6109916122cd565b601080546001600160801b0319166001600160801b0383169081179091556040519081527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020015b60405180910390a150565b60606109f06122cd565b60115482908410610a0257505f610a26565b601154610a0f8486613ff5565b1115610a2657601154610a23908590614008565b90505b5f816001600160401b03811115610a3f57610a3f613bbb565b604051908082528060200260200182016040528015610a8457816020015b604080518082019091525f815260606020820152815260200190600190039081610a5d5790505b5090505f5b82811015610b6e5760405180604001604052808288610aa89190613ff5565b610ab3906001613ff5565b81526020016011610ac4848a613ff5565b81548110610ad457610ad4613fcd565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610b42575f848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101610afb565b50505050815250828281518110610b5b57610b5b613fcd565b6020908102919091010152600101610a89565b509150505b92915050565b610b81612658565b610b8a826126fc565b610b948282612704565b5050565b5f610ba16127c0565b505f5160206141f65f395f51905f5290565b5f610bbc612809565b805490915060ff600160401b82041615906001600160401b03165f81158015610be25750825b90505f826001600160401b03166001148015610bfd5750303b155b905081158015610c0b575080155b15610c295760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c5357845460ff60401b1916600160401b1785555b610c5c33612831565b6001600f55601080546001600160801b0319166001600160801b0388161790558315610cc257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b610cd381611bfa565b610cf05760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526020819052604090206001810154600160c01b900460ff1615610d345760405163510ae2bd60e11b815260040160405180910390fd5b806002018054610d4390613e5e565b90505f03610d645760405163970c784d60e01b815260040160405180910390fd5b335f90815260076020526040902080546001600160a01b03848116911603610d9f57604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610db957610db7612402565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560085416610e6b5760088054336001600160a01b03199182168117909255600980549091169091179055610ec2565b600980546001600160a01b039081165f9081526007602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f610ed18361401b565b9091555050815433319083905f90610eea908490613ff5565b909155505060018281018054601090610f14908490600160801b90046001600160401b0316614033565b82546001600160401b039182166101009390930a928302919092021990911617905550604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e2910160405180910390a1505050565b610f856122cd565b610f8e5f612842565b565b610f986122cd565b60115415610fb9576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff1615610ff25760405163132e7efb60e31b815260040160405180910390fd5b60025f8484604051611005929190614052565b604080519182900390912082526020820192909252015f205460ff161561103f57604051637e4c066f60e01b815260040160405180910390fd5b811561104f5761104f83836121e6565b5f6040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b03168152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506001600160a01b0388168152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b03909516949094179490941793909316919091179091556080830151929350839290915060028201906111629082613ed4565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b0388161790555081156111ca5760068054905f6111c48361401b565b91905055505b6111d3856128b2565b156111e1576111e18561225a565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c8585856040516108dd93929190613f8e565b61121d33611bfa565b61123a5760405163510b8aad60e11b815260040160405180910390fd5b611246848484846120d5565b611263576040516392536faf60e01b815260040160405180910390fd5b61126d84846121e6565b335f908152602081905260409020600201611289848683614061565b50611293336128b2565b80156112a557506112a3336128fb565b155b156112b3576112b33361225a565b7f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c9170323385856040516112e693929190613f8e565b60405180910390a150505050565b600c546060905f906001600160401b0381111561131357611313613bbb565b60405190808252806020026020018201604052801561134c57816020015b611339613795565b8152602001906001900390816113315790505b5090505f5b600c548110156114b1575f600c828154811061136f5761136f613fcd565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff1615156060860152600282018054939650919490938401929091859160808401919061140790613e5e565b80601f016020809104026020016040519081016040528092919081815260200182805461143390613e5e565b801561147e5780601f106114555761010080835404028352916020019161147e565b820191905f5260205f20905b81548152906001019060200180831161146157829003601f168201915b50505050508152505081525084848151811061149c5761149c613fcd565b60209081029190910101525050600101611351565b50919050565b6114c033611bfa565b6114dd5760405163668191af60e11b815260040160405180910390fd5b335f9081526020819052604090206001810154600160c01b900460ff161561151857604051632d8b5c9760e21b815260040160405180910390fd5b600f546004541161153c57604051633b15f1f760e21b815260040160405180910390fd5b6001818101805460ff60c01b1916600160c01b179055600680545f90611563908490613ff5565b9091555061157290503361295d565b60018101546001600160801b0316156115fc5760018101546040515f9133916001600160801b03909116908381818185875af1925050503d805f81146115d3576040519150601f19603f3d011682016040523d82523d5f602084013e6115d8565b606091505b50509050806115fa57604051633c31275160e21b815260040160405180910390fd5b505b6040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a54117906020016109db565b6116346122cd565b8060ff165f0361165757604051630e52390960e41b815260040160405180910390fd5b60ff8116600f55611666612a6d565b61166e612c0b565b600d80546001600160a01b03191690556004545f906116939060ff8416908390612c5c565b90508060ff165f036116b8576040516367c0fced60e01b815260040160405180910390fd5b5f5b6004548110156119c5575f600482815481106116d8576116d8613fcd565b5f9182526020808320909101546001600160a01b031680835290829052604090912060018101549192509060ff600160c01b9091041680611727575080600201805461172390613e5e565b1590505b156117335750506119bd565b600d546001600160a01b031661176e5750600d80546001600160a01b0319166001600160a01b03929092169190911790556001600e556119bd565b8360ff16600e54101561178c576117858285612cae565b50506119bd565b600d546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160a0810184528554815260018601546001600160801b03811682850152600160801b81046001600160401b031694820194909452600160c01b90930460ff161515606084015260028501805491946119aa9490938401929091879160808401919061182190613e5e565b80601f016020809104026020016040519081016040528092919081815260200182805461184d90613e5e565b80156118985780601f1061186f57610100808354040283529160200191611898565b820191905f5260205f20905b81548152906001019060200180831161187b57829003601f168201915b505050919092525050509052604080518082018252600d546001600160a01b03168152815160a0810183528554815260018601546001600160801b038116602080840191909152600160801b82046001600160401b031694830194909452600160c01b900460ff161515606082015260028601805492938401928791608084019161192290613e5e565b80601f016020809104026020016040519081016040528092919081815260200182805461194e90613e5e565b80156119995780601f1061197057610100808354040283529160200191611999565b820191905f5260205f20905b81548152906001019060200180831161197c57829003601f168201915b5050505050815250508152506130f3565b156119b9576119b98386612cae565b5050505b6001016116ba565b50600e545f036119e8576040516367c0fced60e01b815260040160405180910390fd5b600d54600e546001600160a01b03909116905f906001600160401b03811115611a1357611a13613bbb565b604051908082528060200260200182016040528015611a3c578160200160208202803683370190505b5090505f5b600e54811015611a965782828281518110611a5e57611a5e613fcd565b6001600160a01b039283166020918202929092018101919091529381165f908152600b90945260409093205490921691600101611a41565b50611aa08161312f565b601180546001810182555f9182527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680190611add90600c906137f6565b600f546001600160401b03811115611af757611af7613bbb565b604051908082528060200260200182016040528015611b20578160200160208202803683370190505b508051611b3591600c91602090910190613811565b505f5b600f54811015610cc2575f83600e5483611b52919061411a565b81518110611b6257611b62613fcd565b6020026020010151905080600c8381548110611b8057611b80613fcd565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832054858301908152875460018181018a558986529390942095516002909402909501805493909416921691909117825591519082015501611b38565b6001600160a01b03165f9081526001602052604090205460ff1690565b611c1f6122cd565b828114611c6b5760405162461bcd60e51b81526020600482015260156024820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60448201526064015b60405180910390fd5b5f5b83811015611cd357611ccb858583818110611c8a57611c8a613fcd565b9050602002016020810190611c9f91906138a3565b848484818110611cb157611cb1613fcd565b9050602002016020810190611cc691906138a3565b613246565b600101611c6d565b5050505050565b6060611ce46122cd565b5f611cf2835f600a54612c5c565b6001600160401b03811115611d0957611d09613bbb565b604051908082528060200260200182016040528015611d4d57816020015b604080518082019091525f8082526020820152815260200190600190039081611d275790505b506008549091506001600160a01b0390811690851615611d8657506001600160a01b038085165f90815260076020526040902060030154165b5f5b6001600160a01b03821615801590611d9f57508481105b15611e14576001600160a01b038083165f818152600760209081526040918290208251808401909352928252825490931692810192909252908483611de38161401b565b945081518110611df557611df5613fcd565b6020908102919091010152600301546001600160a01b03169150611d88565b80835103611e2757829350505050610b73565b5f816001600160401b03811115611e4057611e40613bbb565b604051908082528060200260200182016040528015611e8457816020015b604080518082019091525f8082526020820152815260200190600190039081611e5e5790505b5090505f5b82811015611ed057848181518110611ea357611ea3613fcd565b6020026020010151828281518110611ebd57611ebd613fcd565b6020908102919091010152600101611e89565b509695505050505050565b611ee36122cd565b6001600160a01b038116611f0c57604051631e4fbdf760e01b81525f6004820152602401611c62565b611f1581612842565b50565b6003546060905f906001600160401b03811115611f3757611f37613bbb565b604051908082528060200260200182016040528015611f7057816020015b611f5d613795565b815260200190600190039081611f555790505b5090505f5b6003548110156114b1575f60038281548110611f9357611f93613fcd565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff1615156060860152600282018054939650919490938401929091859160808401919061202b90613e5e565b80601f016020809104026020016040519081016040528092919081815260200182805461205790613e5e565b80156120a25780601f10612079576101008083540402835291602001916120a2565b820191905f5260205f20905b81548152906001019060200180831161208557829003601f168201915b5050505050815250508152508484815181106120c0576120c0613fcd565b60209081029190910101525050600101611f75565b5f603084146120f757604051637db491eb60e01b815260040160405180910390fd5b6060821461211857604051637db491eb60e01b815260040160405180910390fd5b5f858585856040516020016121309493929190614139565b60405160208183030381529060405290505f5f63011812006001600160a01b03168360405161215f9190614158565b5f60405180830381855afa9150503d805f8114612197576040519150601f19603f3d011682016040523d82523d5f602084013e61219c565b606091505b50915091508115806121b057508051602014155b156121ce57604051633f48ffd960e21b815260040160405180910390fd5b6121d781614173565b60011498975050505050505050565b5f82826040516121f7929190614052565b60408051918290039091205f8181526002602052919091205490915060ff161561223457604051637e4c066f60e01b815260040160405180910390fd5b61223e83836134b2565b5f908152600260205260409020805460ff191660011790555050565b60048054600180820183555f8390527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319166001600160a01b03851617905590546122b29190614008565b6001600160a01b039091165f90815260056020526040902055565b336122ff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610f8e5760405163118cdaa760e01b8152336004820152602401611c62565b6001600160a01b038082165f908152600760205260409020805490911661234d575050565b60018101546001600160a01b038316318110156123ab57612378816001600160a01b03851631614008565b82546001600160a01b03165f90815260208190526040812080549091906123a0908490613ff5565b909155506123ed9050565b6123bf6001600160a01b0384163182614008565b82546001600160a01b03165f90815260208190526040812080549091906123e7908490614008565b90915550505b506001600160a01b0390911631600190910155565b335f90815260076020526040812080546001600160a01b03166124385760405163498ea63d60e01b815260040160405180910390fd5b6009546008546001600160a01b0391821691160361247157600880546001600160a01b0319908116909155600980549091169055612584565b600954336001600160a01b03909116036124ca576002810180546001600160a01b039081165f90815260076020526040902060030180546001600160a01b03199081169091559154600980549093169116179055612584565b600854336001600160a01b039091160361252e576009546001600160a01b039081165f9081526007602052604080822060020180546001600160a01b0319908116909155600880548086168552929093206003015491169216919091179055612584565b60038181018054600280850180546001600160a01b039081165f9081526007602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f81815260208190526040812060018401548154919290918391906125b5908490614008565b9091555050600181810180546010906125df908490600160801b90046001600160401b0316614196565b82546001600160401b039182166101009390930a928302919092021990911617905550335f90815260076020526040812080546001600160a01b031990811682556001820183905560028201805482169055600390910180549091169055600a80549161264b836141b5565b9091555091949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806126de57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126d25f5160206141f65f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610f8e5760405163703e46dd60e11b815260040160405180910390fd5b611f156122cd565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561275e575060408051601f3d908101601f1916820190925261275b918101906141ca565b60015b61278657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611c62565b5f5160206141f65f395f51905f5281146127b657604051632a87526960e21b815260048101829052602401611c62565b61093583836134d3565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8e5760405163703e46dd60e11b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610b73565b612839613528565b611f158161354d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6001600160a01b0381165f9081526020819052604081206001810154600160c01b900460ff161580156128f457508060020180546128ef90613e5e565b151590505b9392505050565b6001600160a01b0381165f90815260056020526040812054600454811061292457505f92915050565b826001600160a01b03166004828154811061294157612941613fcd565b5f918252602090912001546001600160a01b0316149392505050565b612966816128fb565b61296d5750565b6001600160a01b0381165f9081526005602052604081205460045490919061299790600190614008565b9050808214612a1c575f600482815481106129b4576129b4613fcd565b5f91825260209091200154600480546001600160a01b0390921692508291859081106129e2576129e2613fcd565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526005909152604090208290555b6004805480612a2d57612a2d6141e1565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b03949094168152600590935250506040812055565b6004545f819003612a7b5750565b5f612a87600183614008565b90505b8015610b94575f612a9c826001613ff5565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c612ad1919061411a565b9050808203612ae05750612bf9565b5f60048381548110612af457612af4613fcd565b5f918252602082200154600480546001600160a01b0390921693509084908110612b2057612b20613fcd565b5f91825260209091200154600480546001600160a01b0390921692509084908110612b4d57612b4d613fcd565b5f91825260209091200154600480546001600160a01b039092169186908110612b7857612b78613fcd565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508160048481548110612bb757612bb7613fcd565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905593821681526005909352604080842094909455168152208190555b80612c03816141b5565b915050612a8a565b600d546001600160a01b03165b6001600160a01b03811615612c55576001600160a01b039081165f908152600b6020526040902080546001600160a01b0319811690915516612c18565b505f600e55565b5f81831115612c8857604051632457cde760e01b81526004810184905260248101839052604401611c62565b82841015612c975750816128f4565b81841115612ca65750806128f4565b509192915050565b6001600160a01b0382165f90815260208181526040808320815160a0810183528154815260018201546001600160801b03811694820194909452600160801b84046001600160401b031692810192909252600160c01b90920460ff1615156060820152600282018054919291608084019190612d2990613e5e565b80601f0160208091040260200160405190810160405280929190818152602001828054612d5590613e5e565b8015612da05780601f10612d7757610100808354040283529160200191612da0565b820191905f5260205f20905b815481529060010190602001808311612d8357829003601f168201915b505050919092525050604080518082018252600d546001600160a01b03168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054969750612ee196939550918501939290916080840191612e3b90613e5e565b80601f0160208091040260200160405190810160405280929190818152602001828054612e6790613e5e565b8015612eb25780601f10612e8957610100808354040283529160200191612eb2565b820191905f5260205f20905b815481529060010190602001808311612e9557829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b03168152602001848152506130f3565b15612ef457612eef83613555565b613094565b600d546001600160a01b039081165f818152600b6020526040902054909116905b6001600160a01b038216612f3257612f2d81866135a6565b613091565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054613061959385019392916080840191612fbb90613e5e565b80601f0160208091040260200160405190810160405280929190818152602001828054612fe790613e5e565b80156130325780601f1061300957610100808354040283529160200191613032565b820191905f5260205f20905b81548152906001019060200180831161301557829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b03168152602001868152506130f3565b1561307057612f2d81866135a6565b506001600160a01b038082165f908152600b60205260409020541690612f15565b50505b8160ff16600e54111561093557600d80546001600160a01b039081165f908152600b6020526040812080546001600160a01b03198082169092558454931692168217909255600e805491926130e8836141b5565b919050555050505050565b6020808201515190830151515f91900361311f5750805182516001600160a01b03918216911610610b73565b5060209081015151910151511190565b80515f81900361313d575050565b5f613149600183614008565b90505b8015610935575f61315e826001613ff5565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c613193919061411a565b90505f8483815181106131a8576131a8613fcd565b602002602001015190508482815181106131c4576131c4613fcd565b60200260200101518584815181106131de576131de613fcd565b60200260200101906001600160a01b031690816001600160a01b0316815250508085838151811061321157613211613fcd565b60200260200101906001600160a01b031690816001600160a01b0316815250505050808061323e906141b5565b91505061314c565b60115415613267576040516349625b3b60e01b815260040160405180910390fd5b61327081611bfa565b61328d5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f9081526007602052604090208054909116156132c857604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556008541661338557600880546001600160a01b0385166001600160a01b031991821681179092556009805490911690911790556133dd565b600980546001600160a01b039081165f9081526007602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f6133ec8361401b565b90915550506001600160a01b038083165f9081526020819052604081208054909286163191839161341e908490613ff5565b909155505060018181018054601090613448908490600160801b90046001600160401b0316614033565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e284846040516112e69291906001600160a01b0392831681529116602082015260400190565b60308114610b94576040516305db9dbd60e01b815260040160405180910390fd5b6134dc82613604565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613520576109358282613667565b610b946136d9565b6135306136f8565b610f8e57604051631afcd79f60e31b815260040160405180910390fd5b611ee3613528565b600d80546001600160a01b038381165f818152600b602052604081208054939094166001600160a01b031993841617909355835490911617909155600e80549161359e8361401b565b919050555050565b6001600160a01b038281165f818152600b602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600e8054916135fb8361401b565b91905055505050565b806001600160a01b03163b5f0361363957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611c62565b5f5160206141f65f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516136839190614158565b5f60405180830381855af49150503d805f81146136bb576040519150601f19603f3d011682016040523d82523d5f602084013e6136c0565b606091505b50915091506136d0858383613711565b95945050505050565b3415610f8e5760405163b398979f60e01b815260040160405180910390fd5b5f613701612809565b54600160401b900460ff16919050565b606082613726576137218261376d565b6128f4565b815115801561373d57506001600160a01b0384163b155b1561376657604051639996b31560e01b81526001600160a01b0385166004820152602401611c62565b50806128f4565b80511561377c57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b031681526020016137f16040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b031681526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611f159190613874565b828054828255905f5260205f20908101928215613864579160200282015b8281111561386457825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061382f565b50613870929150613874565b5090565b5b80821115613870575f8155600101613875565b80356001600160a01b038116811461389e575f5ffd5b919050565b5f602082840312156138b3575f5ffd5b6128f482613888565b5f5b838110156138d65781810151838201526020016138be565b50505f910152565b5f81518084526138f58160208601602086016138bc565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526001600160801b0360208201511660608501526001600160401b0360408201511660808501526060810151151560a08501526080810151905060a060c085015261397660e08501826138de565b949350505050565b602081525f6128f46020830184613909565b5f5f83601f8401126139a0575f5ffd5b5081356001600160401b038111156139b6575f5ffd5b6020830191508360208285010111156139cd575f5ffd5b9250929050565b5f5f5f5f604085870312156139e7575f5ffd5b84356001600160401b038111156139fc575f5ffd5b613a0887828801613990565b90955093505060208501356001600160401b03811115613a26575f5ffd5b613a3287828801613990565b95989497509550505050565b5f5f83601f840112613a4e575f5ffd5b5081356001600160401b03811115613a64575f5ffd5b6020830191508360208260051b85010111156139cd575f5ffd5b5f5f60208385031215613a8f575f5ffd5b82356001600160401b03811115613aa4575f5ffd5b613ab085828601613a3e565b90969095509350505050565b5f60208284031215613acc575f5ffd5b81356001600160801b03811681146128f4575f5ffd5b5f5f60408385031215613af3575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613baf57868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b80831015613b9757835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613b60565b50965050506020938401939190910190600101613b28565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215613be0575f5ffd5b613be983613888565b915060208301356001600160401b03811115613c03575f5ffd5b8301601f81018513613c13575f5ffd5b80356001600160401b03811115613c2c57613c2c613bbb565b604051601f8201601f19908116603f011681016001600160401b0381118282101715613c5a57613c5a613bbb565b604052818152828201602001871015613c71575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60608587031215613ca3575f5ffd5b613cac85613888565b935060208501356001600160401b03811115613cc6575f5ffd5b613cd287828801613990565b90945092505060408501358015158114613cea575f5ffd5b939692955090935050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015613baf57603f19878603018452613d37858351613909565b94506020938401939190910190600101613d1b565b602081525f6128f460208301846138de565b5f60208284031215613d6e575f5ffd5b813560ff811681146128f4575f5ffd5b5f5f5f5f60408587031215613d91575f5ffd5b84356001600160401b03811115613da6575f5ffd5b613db287828801613a3e565b90955093505060208501356001600160401b03811115613dd0575f5ffd5b613a3287828801613a3e565b5f5f60408385031215613ded575f5ffd5b613df683613888565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b81811015613e5357835180516001600160a01b039081168552602091820151168185015290930192604090920191600101613e1d565b509095945050505050565b600181811c90821680613e7257607f821691505b6020821081036114b157634e487b7160e01b5f52602260045260245ffd5b601f82111561093557805f5260205f20601f840160051c81016020851015613eb55750805b601f840160051c820191505b81811015611cd3575f8155600101613ec1565b81516001600160401b03811115613eed57613eed613bbb565b613f0181613efb8454613e5e565b84613e90565b6020601f821160018114613f33575f8315613f1c5750848201515b5f19600385901b1c1916600184901b178455611cd3565b5f84815260208120601f198516915b82811015613f625787850151825560209485019460019092019101613f42565b5084821015613f7f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b7357610b73613fe1565b81810381811115610b7357610b73613fe1565b5f6001820161402c5761402c613fe1565b5060010190565b6001600160401b038181168382160190811115610b7357610b73613fe1565b818382375f9101908152919050565b6001600160401b0383111561407857614078613bbb565b61408c836140868354613e5e565b83613e90565b5f601f8411600181146140bd575f85156140a65750838201355b5f19600387901b1c1916600186901b178355611cd3565b5f83815260208120601f198716915b828110156140ec57868501358255602094850194600190920191016140cc565b5086821015614108575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f8261413457634e487b7160e01b5f52601260045260245ffd5b500690565b838582375f8482015f8152838582375f93019283525090949350505050565b5f82516141698184602087016138bc565b9190910192915050565b805160208083015191908110156114b1575f1960209190910360031b1b16919050565b6001600160401b038281168282160390811115610b7357610b73613fe1565b5f816141c3576141c3613fe1565b505f190190565b5f602082840312156141da575f5ffd5b5051919050565b634e487b7160e01b5f52603160045260245ffdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220239ca47940153ca95050e872fcd474f2e4c0506fb5d9affc9c904a9db13f056864736f6c634300081b0033",
451
+ "sourceMap": "1684:23443:34:-:0;;;1171:4:21;1128:48;;1684:23443:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
927
452
  "linkReferences": {}
928
453
  },
929
- "deployedBytecode": {
930
- "object": "0x6080604052600436106101d0575f3560e01c8063715018a6116100fd578063c5a7444911610092578063eb9019d411610062578063eb9019d414610512578063ed612f8c1461053e578063f2fde38b14610552578063f3513a3714610571575f5ffd5b8063c5a7444914610488578063d04a68c7146104a7578063ddca3f43146104d6578063e9257dc8146104f3575f5ffd5b8063a250eaf1116100cd578063a250eaf114610402578063ad3cb1cc14610423578063b84d356e14610460578063b85f5da214610474575f5ffd5b8063715018a6146103755780637c8a92c3146103895780638da5cb5b146103a8578063a09686c4146103ee575f5ffd5b806340f74f471161017357806356db9ef11161014357806356db9ef1146103055780635a8eed7314610324578063602a9eee146103435780636dd7d8ea14610356575f5ffd5b806340f74f471461029f5780634f1ef286146102cb57806352d1902d146102de57806354fd4d50146102f2575f5ffd5b80631b605b86116101ae5780631b605b86146102375780632bdf6d431461024b5780633174b6891461026c5780633687f24a14610280575f5ffd5b80630777cbef146101d45780630d2bd909146101f75780631904bb2e1461020b575b5f5ffd5b3480156101df575f5ffd5b506006545b6040519081526020015b60405180910390f35b348015610202575f5ffd5b506004546101e4565b348015610216575f5ffd5b5061022a610225366004613751565b610585565b6040516101ee919061382c565b348015610242575f5ffd5b50600a546101e4565b348015610256575f5ffd5b5061026a610265366004613885565b6106c2565b005b348015610277575f5ffd5b5061026a610710565b34801561028b575f5ffd5b5061026a61029a3660046138c3565b61075f565b3480156102aa575f5ffd5b506102be6102b93660046138e9565b6107bc565b6040516101ee9190613909565b61026a6102d93660046139d6565b61094f565b3480156102e9575f5ffd5b506101e461096e565b3480156102fd575f5ffd5b5060016101e4565b348015610310575f5ffd5b5061026a61031f3660046138c3565b610989565b34801561032f575f5ffd5b5061026a61033e366004613ad4565b610aa0565b61026a610351366004613ad4565b610b55565b348015610361575f5ffd5b5061026a610370366004613751565b610d54565b348015610380575f5ffd5b5061026a610fff565b348015610394575f5ffd5b5061026a6103a3366004613b06565b611012565b3480156103b3575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101ee565b3480156103f9575f5ffd5b506011546101e4565b34801561040d575f5ffd5b506104166112a5565b6040516101ee9190613b6b565b34801561042e575f5ffd5b50610453604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101ee9190613bc2565b34801561046b575f5ffd5b50600e546101e4565b34801561047f575f5ffd5b5061026a611468565b348015610493575f5ffd5b5061026a6104a2366004613bd4565b6115dd565b3480156104b2575f5ffd5b506104c66104c1366004613751565b611bab565b60405190151581526020016101ee565b3480156104e1575f5ffd5b506010546001600160801b03166101e4565b3480156104fe575f5ffd5b5061026a61050d366004613bf4565b611bc8565b34801561051d575f5ffd5b5061053161052c366004613c5e565b611c8b565b6040516101ee9190613c86565b348015610549575f5ffd5b506003546101e4565b34801561055d575f5ffd5b5061026a61056c366004613751565b611e8c565b34801561057c575f5ffd5b50610416611ec9565b61058d613643565b61059682611bab565b6105b35760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff161515606085015260028101805493949285019360808401919061063990613ce0565b80601f016020809104026020016040519081016040528092919081815260200182805461066590613ce0565b80156106b05780601f10610687576101008083540402835291602001916106b0565b820191905f5260205f20905b81548152906001019060200180831161069357829003601f168201915b50505091909252505050905292915050565b6106ca612086565b5f5b8181101561070b576107038383838181106106e9576106e9613d12565b90506020020160208101906106fe9190613751565b6120e1565b6001016106cc565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef3361073a6121bb565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b610767612086565b601080546001600160801b0319166001600160801b0383169081179091556040519081527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020015b60405180910390a150565b60606107c6612086565b601154829084106107d857505f6107fc565b6011546107e58486613d3a565b11156107fc576011546107f9908590613d4d565b90505b5f816001600160401b03811115610815576108156139c2565b60405190808252806020026020018201604052801561085a57816020015b604080518082019091525f8152606060208201528152602001906001900390816108335790505b5090505f5b82811015610944576040518060400160405280828861087e9190613d3a565b610889906001613d3a565b8152602001601161089a848a613d3a565b815481106108aa576108aa613d12565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610918575f848152602090819020604080518082019091526002850290910180546001600160a01b031682526001908101548284015290835290920191016108d1565b5050505081525082828151811061093157610931613d12565b602090810291909101015260010161085f565b509150505b92915050565b610957612411565b610960826124b5565b61096a82826124bd565b5050565b5f610977612579565b505f5160206140365f395f51905f5290565b5f6109926125c2565b805490915060ff600160401b82041615906001600160401b03165f811580156109b85750825b90505f826001600160401b031660011480156109d35750303b155b9050811580156109e1575080155b156109ff5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a2957845460ff60401b1916600160401b1785555b610a32336125ea565b6001600f55601080546001600160801b0319166001600160801b0388161790558315610a9857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b610aa933611bab565b610ac65760405163510b8aad60e11b815260040160405180910390fd5b610ad082826125fb565b335f908152602081905260409020600201610aec828483613da4565b50610af63361266f565b8015610b085750610b06336126b8565b155b15610b1657610b163361271a565b7f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b4993929190613e5d565b60405180910390a15050565b6010546001600160801b03163414610b80576040516358d620b360e01b815260040160405180910390fd5b335f9081526001602052604090205460ff1615610bb05760405163132e7efb60e31b815260040160405180910390fd5b610bba82826125fb565b5f6040518060a001604052805f8152602001346001600160801b031681526020015f6001600160401b031681526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050338152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b0390951694909417949094179390931691909117909155608083015192935083929091506002820190610cc49082613e9c565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191633908117909155610d14915061271a565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c338484604051610d4793929190613e5d565b60405180910390a1505050565b610d5d81611bab565b610d7a5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f9081526020819052604090206001810154600160c01b900460ff1615610dbe5760405163510ae2bd60e11b815260040160405180910390fd5b806002018054610dcd90613ce0565b90505f03610dee5760405163970c784d60e01b815260040160405180910390fd5b335f90815260076020526040902080546001600160a01b03848116911603610e2957604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610e4357610e416121bb565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560085416610ef55760088054336001600160a01b03199182168117909255600980549091169091179055610f4c565b600980546001600160a01b039081165f9081526007602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f610f5b83613f56565b9091555050815433319083905f90610f74908490613d3a565b909155505060018281018054601090610f9e908490600160801b90046001600160401b0316613f6e565b82546001600160401b039182166101009390930a928302919092021990911617905550604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610d47565b611007612086565b6110105f61278d565b565b61101a612086565b6011541561103b576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff16156110745760405163132e7efb60e31b815260040160405180910390fd5b60025f8484604051611087929190613f8d565b604080519182900390912082526020820192909252015f205460ff16156110c157604051637e4c066f60e01b815260040160405180910390fd5b81156110d1576110d183836125fb565b5f6040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b03168152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506001600160a01b0388168152600160208181526040808420805460ff19168417905583825292839020855181559085015191810180549386015160608701511515600160c01b0260ff60c01b196001600160401b03909216600160801b026001600160c01b03199096166001600160801b03909516949094179490941793909316919091179091556080830151929350839290915060028201906111e49082613e9c565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561124c5760068054905f61124683613f56565b91905055505b6112558561266f565b15611263576112638561271a565b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c85858560405161129693929190613e5d565b60405180910390a15050505050565b600c546060905f906001600160401b038111156112c4576112c46139c2565b6040519080825280602002602001820160405280156112fd57816020015b6112ea613643565b8152602001906001900390816112e25790505b5090505f5b600c54811015611462575f600c828154811061132057611320613d12565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff161515606086015260028201805493965091949093840192909185916080840191906113b890613ce0565b80601f01602080910402602001604051908101604052809291908181526020018280546113e490613ce0565b801561142f5780601f106114065761010080835404028352916020019161142f565b820191905f5260205f20905b81548152906001019060200180831161141257829003601f168201915b50505050508152505081525084848151811061144d5761144d613d12565b60209081029190910101525050600101611302565b50919050565b61147133611bab565b61148e5760405163668191af60e11b815260040160405180910390fd5b335f9081526020819052604090206001810154600160c01b900460ff16156114c957604051632d8b5c9760e21b815260040160405180910390fd5b600f54600454116114ed57604051633b15f1f760e21b815260040160405180910390fd5b6001818101805460ff60c01b1916600160c01b179055600680545f90611514908490613d3a565b909155506115239050336127fd565b60018101546001600160801b0316156115ad5760018101546040515f9133916001600160801b03909116908381818185875af1925050503d805f8114611584576040519150601f19603f3d011682016040523d82523d5f602084013e611589565b606091505b50509050806115ab57604051633c31275160e21b815260040160405180910390fd5b505b6040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a54117906020016107b1565b6115e5612086565b8060ff165f0361160857604051630e52390960e41b815260040160405180910390fd5b60ff8116600f5561161761290d565b61161f612aab565b600d80546001600160a01b03191690556004545f906116449060ff8416908390612afc565b90508060ff165f03611669576040516367c0fced60e01b815260040160405180910390fd5b5f5b600454811015611976575f6004828154811061168957611689613d12565b5f9182526020808320909101546001600160a01b031680835290829052604090912060018101549192509060ff600160c01b90910416806116d857508060020180546116d490613ce0565b1590505b156116e457505061196e565b600d546001600160a01b031661171f5750600d80546001600160a01b0319166001600160a01b03929092169190911790556001600e5561196e565b8360ff16600e54101561173d576117368285612b4e565b505061196e565b600d546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160a0810184528554815260018601546001600160801b03811682850152600160801b81046001600160401b031694820194909452600160c01b90930460ff1615156060840152600285018054919461195b949093840192909187916080840191906117d290613ce0565b80601f01602080910402602001604051908101604052809291908181526020018280546117fe90613ce0565b80156118495780601f1061182057610100808354040283529160200191611849565b820191905f5260205f20905b81548152906001019060200180831161182c57829003601f168201915b505050919092525050509052604080518082018252600d546001600160a01b03168152815160a0810183528554815260018601546001600160801b038116602080840191909152600160801b82046001600160401b031694830194909452600160c01b900460ff16151560608201526002860180549293840192879160808401916118d390613ce0565b80601f01602080910402602001604051908101604052809291908181526020018280546118ff90613ce0565b801561194a5780601f106119215761010080835404028352916020019161194a565b820191905f5260205f20905b81548152906001019060200180831161192d57829003601f168201915b505050505081525050815250612f93565b1561196a5761196a8386612b4e565b5050505b60010161166b565b50600e545f03611999576040516367c0fced60e01b815260040160405180910390fd5b600d54600e546001600160a01b03909116905f906001600160401b038111156119c4576119c46139c2565b6040519080825280602002602001820160405280156119ed578160200160208202803683370190505b5090505f5b600e54811015611a475782828281518110611a0f57611a0f613d12565b6001600160a01b039283166020918202929092018101919091529381165f908152600b909452604090932054909216916001016119f2565b50611a5181612fcf565b601180546001810182555f9182527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680190611a8e90600c906136a4565b600f546001600160401b03811115611aa857611aa86139c2565b604051908082528060200260200182016040528015611ad1578160200160208202803683370190505b508051611ae691600c916020909101906136bf565b505f5b600f54811015610a98575f83600e5483611b039190613f9c565b81518110611b1357611b13613d12565b6020026020010151905080600c8381548110611b3157611b31613d12565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832054858301908152875460018181018a558986529390942095516002909402909501805493909416921691909117825591519082015501611ae9565b6001600160a01b03165f9081526001602052604090205460ff1690565b611bd0612086565b828114611c1c5760405162461bcd60e51b81526020600482015260156024820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b60448201526064015b60405180910390fd5b5f5b83811015611c8457611c7c858583818110611c3b57611c3b613d12565b9050602002016020810190611c509190613751565b848484818110611c6257611c62613d12565b9050602002016020810190611c779190613751565b6130e6565b600101611c1e565b5050505050565b6060611c95612086565b5f611ca3835f600a54612afc565b6001600160401b03811115611cba57611cba6139c2565b604051908082528060200260200182016040528015611cfe57816020015b604080518082019091525f8082526020820152815260200190600190039081611cd85790505b506008549091506001600160a01b0390811690851615611d3757506001600160a01b038085165f90815260076020526040902060030154165b5f5b6001600160a01b03821615801590611d5057508481105b15611dc5576001600160a01b038083165f818152600760209081526040918290208251808401909352928252825490931692810192909252908483611d9481613f56565b945081518110611da657611da6613d12565b6020908102919091010152600301546001600160a01b03169150611d39565b80835103611dd857829350505050610949565b5f816001600160401b03811115611df157611df16139c2565b604051908082528060200260200182016040528015611e3557816020015b604080518082019091525f8082526020820152815260200190600190039081611e0f5790505b5090505f5b82811015611e8157848181518110611e5457611e54613d12565b6020026020010151828281518110611e6e57611e6e613d12565b6020908102919091010152600101611e3a565b509695505050505050565b611e94612086565b6001600160a01b038116611ebd57604051631e4fbdf760e01b81525f6004820152602401611c13565b611ec68161278d565b50565b6003546060905f906001600160401b03811115611ee857611ee86139c2565b604051908082528060200260200182016040528015611f2157816020015b611f0e613643565b815260200190600190039081611f065790505b5090505f5b600354811015611462575f60038281548110611f4457611f44613d12565b5f918252602080832091909101546001600160a01b031680835282825260409283902083518085018552828152845160a0810186528254815260018301546001600160801b03811682870152600160801b81046001600160401b031696820196909652600160c01b90950460ff16151560608601526002820180549396509194909384019290918591608084019190611fdc90613ce0565b80601f016020809104026020016040519081016040528092919081815260200182805461200890613ce0565b80156120535780601f1061202a57610100808354040283529160200191612053565b820191905f5260205f20905b81548152906001019060200180831161203657829003601f168201915b50505050508152505081525084848151811061207157612071613d12565b60209081029190910101525050600101611f26565b336120b87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146110105760405163118cdaa760e01b8152336004820152602401611c13565b6001600160a01b038082165f9081526007602052604090208054909116612106575050565b60018101546001600160a01b0383163181101561216457612131816001600160a01b03851631613d4d565b82546001600160a01b03165f9081526020819052604081208054909190612159908490613d3a565b909155506121a69050565b6121786001600160a01b0384163182613d4d565b82546001600160a01b03165f90815260208190526040812080549091906121a0908490613d4d565b90915550505b506001600160a01b0390911631600190910155565b335f90815260076020526040812080546001600160a01b03166121f15760405163498ea63d60e01b815260040160405180910390fd5b6009546008546001600160a01b0391821691160361222a57600880546001600160a01b031990811690915560098054909116905561233d565b600954336001600160a01b0390911603612283576002810180546001600160a01b039081165f90815260076020526040902060030180546001600160a01b0319908116909155915460098054909316911617905561233d565b600854336001600160a01b03909116036122e7576009546001600160a01b039081165f9081526007602052604080822060020180546001600160a01b031990811690915560088054808616855292909320600301549116921691909117905561233d565b60038181018054600280850180546001600160a01b039081165f9081526007602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f818152602081905260408120600184015481549192909183919061236e908490613d4d565b909155505060018181018054601090612398908490600160801b90046001600160401b0316613fbb565b82546001600160401b039182166101009390930a928302919092021990911617905550335f90815260076020526040812080546001600160a01b031990811682556001820183905560028201805482169055600390910180549091169055600a80549161240483613fda565b9091555091949350505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061249757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661248b5f5160206140365f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156110105760405163703e46dd60e11b815260040160405180910390fd5b611ec6612086565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612517575060408051601f3d908101601f1916820190925261251491810190613fef565b60015b61253f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611c13565b5f5160206140365f395f51905f52811461256f57604051632a87526960e21b815260048101829052602401611c13565b61070b8383613360565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110105760405163703e46dd60e11b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610949565b6125f26133b5565b611ec6816133da565b5f828260405161260c929190613f8d565b60408051918290039091205f8181526002602052919091205490915060ff161561264957604051637e4c066f60e01b815260040160405180910390fd5b61265383836133e2565b5f908152600260205260409020805460ff191660011790555050565b6001600160a01b0381165f9081526020819052604081206001810154600160c01b900460ff161580156126b157508060020180546126ac90613ce0565b151590505b9392505050565b6001600160a01b0381165f9081526005602052604081205460045481106126e157505f92915050565b826001600160a01b0316600482815481106126fe576126fe613d12565b5f918252602090912001546001600160a01b0316149392505050565b60048054600180820183555f8390527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319166001600160a01b03851617905590546127729190613d4d565b6001600160a01b039091165f90815260056020526040902055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612806816126b8565b61280d5750565b6001600160a01b0381165f9081526005602052604081205460045490919061283790600190613d4d565b90508082146128bc575f6004828154811061285457612854613d12565b5f91825260209091200154600480546001600160a01b03909216925082918590811061288257612882613d12565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559290911681526005909152604090208290555b60048054806128cd576128cd614006565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092556001600160a01b03949094168152600590935250506040812055565b6004545f81900361291b5750565b5f612927600183613d4d565b90505b801561096a575f61293c826001613d3a565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c6129719190613f9c565b90508082036129805750612a99565b5f6004838154811061299457612994613d12565b5f918252602082200154600480546001600160a01b03909216935090849081106129c0576129c0613d12565b5f91825260209091200154600480546001600160a01b03909216925090849081106129ed576129ed613d12565b5f91825260209091200154600480546001600160a01b039092169186908110612a1857612a18613d12565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508160048481548110612a5757612a57613d12565b5f91825260208083209190910180546001600160a01b0319166001600160a01b0394851617905593821681526005909352604080842094909455168152208190555b80612aa381613fda565b91505061292a565b600d546001600160a01b03165b6001600160a01b03811615612af5576001600160a01b039081165f908152600b6020526040902080546001600160a01b0319811690915516612ab8565b505f600e55565b5f81831115612b2857604051632457cde760e01b81526004810184905260248101839052604401611c13565b82841015612b375750816126b1565b81841115612b465750806126b1565b509192915050565b6001600160a01b0382165f90815260208181526040808320815160a0810183528154815260018201546001600160801b03811694820194909452600160801b84046001600160401b031692810192909252600160c01b90920460ff1615156060820152600282018054919291608084019190612bc990613ce0565b80601f0160208091040260200160405190810160405280929190818152602001828054612bf590613ce0565b8015612c405780601f10612c1757610100808354040283529160200191612c40565b820191905f5260205f20905b815481529060010190602001808311612c2357829003601f168201915b505050919092525050604080518082018252600d546001600160a01b03168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054969750612d8196939550918501939290916080840191612cdb90613ce0565b80601f0160208091040260200160405190810160405280929190818152602001828054612d0790613ce0565b8015612d525780601f10612d2957610100808354040283529160200191612d52565b820191905f5260205f20905b815481529060010190602001808311612d3557829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612f93565b15612d9457612d8f83613403565b612f34565b600d546001600160a01b039081165f818152600b6020526040902054909116905b6001600160a01b038216612dd257612dcd8186613454565b612f31565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160a0810185528154815260018201546001600160801b03811682850152600160801b81046001600160401b031695820195909552600160c01b90940460ff1615156060850152600281018054612f01959385019392916080840191612e5b90613ce0565b80601f0160208091040260200160405190810160405280929190818152602001828054612e8790613ce0565b8015612ed25780601f10612ea957610100808354040283529160200191612ed2565b820191905f5260205f20905b815481529060010190602001808311612eb557829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612f93565b15612f1057612dcd8186613454565b506001600160a01b038082165f908152600b60205260409020541690612db5565b50505b8160ff16600e54111561070b57600d80546001600160a01b039081165f908152600b6020526040812080546001600160a01b03198082169092558454931692168217909255600e80549192612f8883613fda565b919050555050505050565b6020808201515190830151515f919003612fbf5750805182516001600160a01b03918216911610610949565b5060209081015151910151511190565b80515f819003612fdd575050565b5f612fe9600183613d4d565b90505b801561070b575f612ffe826001613d3a565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c6130339190613f9c565b90505f84838151811061304857613048613d12565b6020026020010151905084828151811061306457613064613d12565b602002602001015185848151811061307e5761307e613d12565b60200260200101906001600160a01b031690816001600160a01b031681525050808583815181106130b1576130b1613d12565b60200260200101906001600160a01b031690816001600160a01b031681525050505080806130de90613fda565b915050612fec565b60115415613107576040516349625b3b60e01b815260040160405180910390fd5b61311081611bab565b61312d5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260076020526040902080549091161561316857604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600790925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556008541661322557600880546001600160a01b0385166001600160a01b0319918216811790925560098054909116909117905561327d565b600980546001600160a01b039081165f9081526007602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b600a8054905f61328c83613f56565b90915550506001600160a01b038083165f908152602081905260408120805490928616319183916132be908490613d3a565b9091555050600181810180546010906132e8908490600160801b90046001600160401b0316613f6e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e284846040516133529291906001600160a01b0392831681529116602082015260400190565b60405180910390a150505050565b613369826134b2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156133ad5761070b8282613515565b61096a613587565b6133bd6135a6565b61101057604051631afcd79f60e31b815260040160405180910390fd5b611e946133b5565b6030811461096a576040516305db9dbd60e01b815260040160405180910390fd5b600d80546001600160a01b038381165f818152600b602052604081208054939094166001600160a01b031993841617909355835490911617909155600e80549161344c83613f56565b919050555050565b6001600160a01b038281165f818152600b602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600e8054916134a983613f56565b91905055505050565b806001600160a01b03163b5f036134e757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611c13565b5f5160206140365f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613531919061401a565b5f60405180830381855af49150503d805f8114613569576040519150601f19603f3d011682016040523d82523d5f602084013e61356e565b606091505b509150915061357e8583836135bf565b95945050505050565b34156110105760405163b398979f60e01b815260040160405180910390fd5b5f6135af6125c2565b54600160401b900460ff16919050565b6060826135d4576135cf8261361b565b6126b1565b81511580156135eb57506001600160a01b0384163b155b1561361457604051639996b31560e01b81526001600160a01b0385166004820152602401611c13565b50806126b1565b80511561362a57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b0316815260200161369f6040518060a001604052805f81526020015f6001600160801b031681526020015f6001600160401b031681526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611ec69190613722565b828054828255905f5260205f20908101928215613712579160200282015b8281111561371257825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906136dd565b5061371e929150613722565b5090565b5b8082111561371e575f8155600101613723565b80356001600160a01b038116811461374c575f5ffd5b919050565b5f60208284031215613761575f5ffd5b6126b182613736565b5f5b8381101561378457818101518382015260200161376c565b50505f910152565b5f81518084526137a381602086016020860161376a565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526001600160801b0360208201511660608501526001600160401b0360408201511660808501526060810151151560a08501526080810151905060a060c085015261382460e085018261378c565b949350505050565b602081525f6126b160208301846137b7565b5f5f83601f84011261384e575f5ffd5b5081356001600160401b03811115613864575f5ffd5b6020830191508360208260051b850101111561387e575f5ffd5b9250929050565b5f5f60208385031215613896575f5ffd5b82356001600160401b038111156138ab575f5ffd5b6138b78582860161383e565b90969095509350505050565b5f602082840312156138d3575f5ffd5b81356001600160801b03811681146126b1575f5ffd5b5f5f604083850312156138fa575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156139b657868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b8083101561399e57835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613967565b5096505050602093840193919091019060010161392f565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156139e7575f5ffd5b6139f083613736565b915060208301356001600160401b03811115613a0a575f5ffd5b8301601f81018513613a1a575f5ffd5b80356001600160401b03811115613a3357613a336139c2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715613a6157613a616139c2565b604052818152828201602001871015613a78575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613aa7575f5ffd5b5081356001600160401b03811115613abd575f5ffd5b60208301915083602082850101111561387e575f5ffd5b5f5f60208385031215613ae5575f5ffd5b82356001600160401b03811115613afa575f5ffd5b6138b785828601613a97565b5f5f5f5f60608587031215613b19575f5ffd5b613b2285613736565b935060208501356001600160401b03811115613b3c575f5ffd5b613b4887828801613a97565b90945092505060408501358015158114613b60575f5ffd5b939692955090935050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156139b657603f19878603018452613bad8583516137b7565b94506020938401939190910190600101613b91565b602081525f6126b1602083018461378c565b5f60208284031215613be4575f5ffd5b813560ff811681146126b1575f5ffd5b5f5f5f5f60408587031215613c07575f5ffd5b84356001600160401b03811115613c1c575f5ffd5b613c288782880161383e565b90955093505060208501356001600160401b03811115613c46575f5ffd5b613c528782880161383e565b95989497509550505050565b5f5f60408385031215613c6f575f5ffd5b613c7883613736565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b81811015613cd557835180516001600160a01b039081168552602091820151168185015290930192604090920191600101613c9f565b509095945050505050565b600181811c90821680613cf457607f821691505b60208210810361146257634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561094957610949613d26565b8181038181111561094957610949613d26565b601f82111561070b57805f5260205f20601f840160051c81016020851015613d855750805b601f840160051c820191505b81811015611c84575f8155600101613d91565b6001600160401b03831115613dbb57613dbb6139c2565b613dcf83613dc98354613ce0565b83613d60565b5f601f841160018114613e00575f8515613de95750838201355b5f19600387901b1c1916600186901b178355611c84565b5f83815260208120601f198716915b82811015613e2f5786850135825560209485019460019092019101613e0f565b5086821015613e4b575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b03811115613eb557613eb56139c2565b613ec981613ec38454613ce0565b84613d60565b6020601f821160018114613efb575f8315613ee45750848201515b5f19600385901b1c1916600184901b178455611c84565b5f84815260208120601f198516915b82811015613f2a5787850151825560209485019460019092019101613f0a565b5084821015613f4757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60018201613f6757613f67613d26565b5060010190565b6001600160401b03818116838216019081111561094957610949613d26565b818382375f9101908152919050565b5f82613fb657634e487b7160e01b5f52601260045260245ffd5b500690565b6001600160401b03828116828216039081111561094957610949613d26565b5f81613fe857613fe8613d26565b505f190190565b5f60208284031215613fff575f5ffd5b5051919050565b634e487b7160e01b5f52603160045260245ffd5b5f825161402b81846020870161376a565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212200bd8846e3ba9afa55a2dbbb5167e87f5ba45cee50b29f55af253be0ac412a7b864736f6c634300081b0033",
931
- "sourceMap": "1647:23136:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13561:115;;;;;;;;;;-1:-1:-1;13645:24:33;;13561:115;;;160:25:48;;;148:2;133:18;13561:115:33;;;;;;;;13442:113;;;;;;;;;;-1:-1:-1;13524:17:33;:24;13442:113;;13918:253;;;;;;;;;;-1:-1:-1;13918:253:33;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15030:93::-;;;;;;;;;;-1:-1:-1;15104:12:33;;15030:93;;10660:176;;;;;;;;;;-1:-1:-1;10660:176:33;;;;;:::i;:::-;;:::i;:::-;;10575:79;;;;;;;;;;;;;:::i;4680:141::-;;;;;;;;;;-1:-1:-1;4680:141:33;;;;;:::i;:::-;;:::i;16084:531::-;;;;;;;;;;-1:-1:-1;16084:531:33;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4161:214:21:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;13172:76:33:-;;;;;;;;;;-1:-1:-1;13240:1:33;13172:76;;4374:167;;;;;;;;;;-1:-1:-1;4374:167:33;;;;;:::i;:::-;;:::i;7992:498::-;;;;;;;;;;-1:-1:-1;7992:498:33;;;;;:::i;:::-;;:::i;7209:777::-;;;;;;:::i;:::-;;:::i;9354:1215::-;;;;;;;;;;-1:-1:-1;9354:1215:33;;;;;:::i;:::-;;:::i;3155:101:19:-;;;;;;;;;;;;;:::i;4827:1061:33:-;;;;;;;;;;-1:-1:-1;4827:1061:33;;;;;:::i;:::-;;:::i;2441:144:19:-;;;;;;;;;;-1:-1:-1;1313:22:19;2570:8;2441:144;;-1:-1:-1;;;;;2570:8:19;;;7992:51:48;;7980:2;7965:18;2441:144:19;7846:203:48;15982:96:33;;;;;;;;;;-1:-1:-1;16057:7:33;:14;15982:96;;14177:429;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1819:58:21:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;13682:109:33:-;;;;;;;;;;-1:-1:-1;13763:21:33;;13682:109;;8496:852;;;;;;;;;;;;;:::i;10842:2284::-;;;;;;;;;;-1:-1:-1;10842:2284:33;;;;;:::i;:::-;;:::i;13797:115::-;;;;;;;;;;-1:-1:-1;13797:115:33;;;;;:::i;:::-;;:::i;:::-;;;9550:14:48;;9543:22;9525:41;;9513:2;9498:18;13797:115:33;9385:187:48;13254:75:33;;;;;;;;;;-1:-1:-1;13318:4:33;;-1:-1:-1;;;;;13318:4:33;13254:75;;5894:293;;;;;;;;;;-1:-1:-1;5894:293:33;;;;;:::i;:::-;;:::i;15129:847::-;;;;;;;;;;-1:-1:-1;15129:847:33;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13335:101::-;;;;;;;;;;-1:-1:-1;13411:11:33;:18;13335:101;;3405:215:19;;;;;;;;;;-1:-1:-1;3405:215:19;;;;;:::i;:::-;;:::i;14612:412:33:-;;;;;;;;;;;;;:::i;13918:253::-;13977:16;;:::i;:::-;14010:27;14032:4;14010:21;:27::i;:::-;14005:90;;14060:24;;-1:-1:-1;;;14060:24:33;;;;;;;;;;;14005:90;14112:52;;;;;;;;-1:-1:-1;;;;;14112:52:33;;;;;-1:-1:-1;14141:21:33;;;14112:52;14141:21;;;;;;;14112:52;;;;;;;;;;;;;;;-1:-1:-1;;;;;14112:52:33;;;;;;-1:-1:-1;;;14112:52:33;;-1:-1:-1;;;;;14112:52:33;;;;;;;;-1:-1:-1;;;14112:52:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14112:52:33;;;;-1:-1:-1;;;14112:52:33;;14105:59;13918:253;-1:-1:-1;;13918:253:33:o;10660:176::-;2334:13:19;:11;:13::i;:::-;10743:9:33::1;10738:92;10758:17:::0;;::::1;10738:92;;;10796:23;10809:6;;10816:1;10809:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;10796:12;:23::i;:::-;10777:3;;10738:92;;;;10660:176:::0;;:::o;10575:79::-;10617:30;10625:10;10637:9;:7;:9::i;:::-;10617:30;;;-1:-1:-1;;;;;12175:32:48;;;12157:51;;12244:32;;;;12239:2;12224:18;;12217:60;12130:18;10617:30:33;;;;;;;10575:79::o;4680:141::-;2334:13:19;:11;:13::i;:::-;4750:4:33::1;:22:::0;;-1:-1:-1;;;;;;4750:22:33::1;-1:-1:-1::0;;;;;4750:22:33;::::1;::::0;;::::1;::::0;;;4787:27:::1;::::0;12434:66:48;;;4787:27:33::1;::::0;12422:2:48;12407:18;4787:27:33::1;;;;;;;;4680:141:::0;:::o;16084:531::-;16167:14;2334:13:19;:11;:13::i;:::-;16238:7:33::1;:14:::0;16209:5;;16228:24;::::1;16224:163;;-1:-1:-1::0;16276:1:33::1;16224:163;;;16315:7;:14:::0;16298::::1;16307:5:::0;16298:6;:14:::1;:::i;:::-;:31;16294:93;;;16353:7;:14:::0;:23:::1;::::0;16370:6;;16353:23:::1;:::i;:::-;16345:31;;16294:93;16397:21;16433:5;-1:-1:-1::0;;;;;16421:18:33::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;16421:18:33::1;;;;;;;;;;;;;;;-1:-1:-1::0;16397:42:33;-1:-1:-1;16454:9:33::1;16449:136;16473:5;16469:1;:9;16449:136;;;16511:63;;;;;;;;16534:1;16525:6;:10;;;;:::i;:::-;:14;::::0;16538:1:::1;16525:14;:::i;:::-;16511:63:::0;;::::1;;16553:7;16561:10;16570:1:::0;16561:6;:10:::1;:::i;:::-;16553:19;;;;;;;;:::i;:::-;;;;;;;;16511:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;16511:63:33::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;::::0;16499:6:::1;16506:1;16499:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:75;16480:3:::1;;16449:136;;;-1:-1:-1::0;16602:6:33;-1:-1:-1;;2357:1:19::1;16084:531:33::0;;;;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;3708:134::-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;4374:167:33:-;4158:30:20;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:20;-1:-1:-1;;;4302:15:20;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;-1:-1:-1;;;;;4788:16:20;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:20;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:20;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:20;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:20;-1:-1:-1;;;5011:22:20;;;4977:67;4448:26:33::1;4463:10;4448:14;:26::i;:::-;4501:1;4484:14;:18:::0;4512:4:::1;:22:::0;;-1:-1:-1;;;;;;4512:22:33::1;-1:-1:-1::0;;;;;4512:22:33;::::1;;::::0;;5064:101:20;;;;5098:23;;-1:-1:-1;;;;5098:23:20;;;5140:14;;-1:-1:-1;13059:50:48;;5140:14:20;;13047:2:48;13032:18;5140:14:20;;;;;;;5064:101;4092:1079;;;;;4374:167:33;:::o;7992:498::-;8070:33;8092:10;8070:21;:33::i;:::-;8065:96;;8126:24;;-1:-1:-1;;;8126:24:33;;;;;;;;;;;8065:96;8171:44;8202:12;;8171:30;:44::i;:::-;8242:10;8226:15;:27;;;;;;;;;;:40;;:55;8269:12;;8226:40;:55;:::i;:::-;;8296:37;8322:10;8296:25;:37::i;:::-;:72;;;;;8338:30;8357:10;8338:18;:30::i;:::-;8337:31;8296:72;8292:134;;;8384:31;8404:10;8384:19;:31::i;:::-;8441:42;8458:10;8470:12;;8441:42;;;;;;;;:::i;:::-;;;;;;;;7992:498;;:::o;7209:777::-;7309:4;;-1:-1:-1;;;;;7309:4:33;7296:9;:17;7292:67;;7336:12;;-1:-1:-1;;;7336:12:33;;;;;;;;;;;7292:67;7387:10;7373:25;;;;:13;:25;;;;;;;;7369:91;;;7421:28;;-1:-1:-1;;;7421:28:33;;;;;;;;;;;7369:91;7470:44;7501:12;;7470:30;:44::i;:::-;7525:30;7558:189;;;;;;;;7627:1;7558:189;;;;7655:9;-1:-1:-1;;;;;7558:189:33;;;;;7599:1;-1:-1:-1;;;;;7558:189:33;;;;;7691:5;7558:189;;;;;;7724:12;;7558:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7558:189:33;;;;-1:-1:-1;;7772:10:33;7758:25;;7786:4;7758:25;;;;;;;;:32;;-1:-1:-1;;7758:32:33;;;;;7800:27;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7800:39:33;-1:-1:-1;;;;;;;;;7800:39:33;;;-1:-1:-1;;;7800:39:33;-1:-1:-1;;;;;;7800:39:33;;;-1:-1:-1;;;;;7800:39:33;;;;;;;;;;;;;;;;;;;;;;;;;;7525:222;;-1:-1:-1;7525:222:33;;7800:27;;-1:-1:-1;7800:39:33;;;;;;;;:::i;:::-;-1:-1:-1;;7849:11:33;:28;;;;;;;-1:-1:-1;7849:28:33;;;;;;;;-1:-1:-1;;;;;;7849:28:33;7866:10;7849:28;;;;;;7887:31;;-1:-1:-1;7887:19:33;:31::i;:::-;7934:45;7954:10;7966:12;;7934:45;;;;;;;;:::i;:::-;;;;;;;;7282:704;7209:777;;:::o;9354:1215::-;9406:27;9428:4;9406:21;:27::i;:::-;9401:90;;9456:24;;-1:-1:-1;;;9456:24:33;;;;;;;;;;;9401:90;-1:-1:-1;;;;;9539:21:33;;9501:35;9539:21;;;;;;;;;;9574:24;;;;-1:-1:-1;;;9574:24:33;;;;9570:85;;;9621:23;;-1:-1:-1;;;9621:23:33;;;;;;;;;;;9570:85;9669:13;:26;;:33;;;;;:::i;:::-;;;9706:1;9669:38;9665:110;;9730:34;;-1:-1:-1;;;9730:34:33;;;;;;;;;;;9665:110;9814:10;9785:18;9806:19;;;:7;:19;;;;;9839:15;;-1:-1:-1;;;;;9839:23:33;;;:15;;:23;9835:80;;9885:19;;-1:-1:-1;;;9885:19:33;;;;;;;;;;;9835:80;9929:15;;-1:-1:-1;;;;;9929:15:33;:29;9925:69;;9974:9;:7;:9::i;:::-;;9925:69;10026:88;;;;;;;;-1:-1:-1;;;;;10026:88:33;;;;;10058:10;:18;;10026:88;;;;;;;-1:-1:-1;10026:88:33;;;;;;;;;;;;10004:19;;;:7;:19;;;;;;;:110;;;;;;;-1:-1:-1;;;;;;10004:110:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10129:11;;;10125:277;;10170:11;:24;;10184:10;-1:-1:-1;;;;;;10170:24:33;;;;;;;;10208:11;:24;;;;;;;;;;10125:277;;;10271:11;;;-1:-1:-1;;;;;10271:11:33;;;10263:20;;;;:7;:20;;;;;;:25;;:38;;-1:-1:-1;;;;;;10263:38:33;;;10291:10;10263:38;;;;;;10342:11;;10315:19;;;;;;;:24;;:38;;;;10342:11;;;;10315:38;;;;;;;10367:24;;;;;;10125:277;10411:12;:14;;;:12;:14;;;:::i;:::-;;;;-1:-1:-1;;10436:47:33;;10465:10;:18;;10436:13;;:25;;:47;;10465:18;;10436:47;:::i;:::-;;;;-1:-1:-1;;10522:1:33;10493:25;;;:30;;:25;;:30;;10522:1;;-1:-1:-1;;;10493:30:33;;-1:-1:-1;;;;;10493:30:33;;:::i;:::-;;;-1:-1:-1;;;;;10493:30:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10539:23:33;;;10545:10;12157:51:48;;-1:-1:-1;;;;;12244:32:48;;12239:2;12224:18;;12217:60;10539:23:33;;12130:18:48;10539:23:33;11983:300:48;3155:101:19;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;4827:1061:33:-;2334:13:19;:11;:13::i;:::-;4942:7:33::1;:14:::0;:18;4938:76:::1;;4983:20;;-1:-1:-1::0;;;4983:20:33::1;;;;;;;;;;;4938:76;-1:-1:-1::0;;;;;5028:19:33;::::1;;::::0;;;:13:::1;:19;::::0;;;;;::::1;;5024:85;;;5070:28;;-1:-1:-1::0;;;5070:28:33::1;;;;;;;;;;;5024:85;5123:14;:39;5148:12;;5138:23;;;;;;;:::i;:::-;;::::0;;;;;::::1;::::0;;;5123:39;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;5123:39:33;;::::1;;5119:102;;;5185:25;;-1:-1:-1::0;;;5185:25:33::1;;;;;;;;;;;5119:102;5283:24:::0;;5279:99:::1;;5323:44;5354:12;;5323:30;:44::i;:::-;5388:30;5433:107;;;;;;;;5477:1;5433:107;;;;5485:1;-1:-1:-1::0;;;;;5433:107:33::1;;;;;5461:1;-1:-1:-1::0;;;;;5433:107:33::1;;;;;5500:10;5433:107;;;;;;5526:12;;5433:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;5433:107:33;;;;-1:-1:-1;;;;;;;5551:19:33;::::1;::::0;;5573:4:::1;5551:19;::::0;;;;;;;:26;;-1:-1:-1;;5551:26:33::1;::::0;::::1;::::0;;5587:21;;;;;;;:33;;;;;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;-1:-1:-1::0;;;5587:33:33::1;-1:-1:-1::0;;;;;;;;;5587:33:33;;::::1;-1:-1:-1::0;;;5587:33:33::1;-1:-1:-1::0;;;;;;5587:33:33;;;-1:-1:-1;;;;;5587:33:33;;::::1;::::0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;::::1;::::0;5388:152;;-1:-1:-1;5388:152:33;;5587:21;;-1:-1:-1;5587:33:33::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;5630:11:33::1;:22:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;5630:22:33;;;;;::::1;::::0;;-1:-1:-1;;;;;;5630:22:33::1;-1:-1:-1::0;;;;;5630:22:33;::::1;;::::0;;-1:-1:-1;5663:67:33;::::1;;;5693:24;:26:::0;;;:24:::1;:26;::::0;::::1;:::i;:::-;;;;;;5663:67;5744:31;5770:4;5744:25;:31::i;:::-;5740:87;;;5791:25;5811:4;5791:19;:25::i;:::-;5842:39;5862:4;5868:12;;5842:39;;;;;;;;:::i;:::-;;;;;;;;4928:960;4827:1061:::0;;;;:::o;14177:429::-;14304:16;:23;14230:18;;14260:25;;-1:-1:-1;;;;;14288:40:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;14260:68:33;-1:-1:-1;14343:9:33;14338:238;14362:16;:23;14358:27;;14338:238;;;14406:12;14421:16;14438:1;14421:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;14421:19:33;14483:21;;;;;;;;;;;14530:35;;;;;;;;;;;;;;;;;;;;;14421:19;14530:35;;;-1:-1:-1;;;;;14530:35:33;;;;;;-1:-1:-1;;;14530:35:33;;-1:-1:-1;;;;;14530:35:33;;;;;;;;-1:-1:-1;;;14530:35:33;;;;;;;;;;;;;;;;14421:19;;-1:-1:-1;14483:21:33;;14530:35;;;;;;;14483:21;;14530:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14518:6;14525:1;14518:9;;;;;;;;:::i;:::-;;;;;;;;;;:47;-1:-1:-1;;14387:3:33;;14338:238;;;-1:-1:-1;14593:6:33;14177:429;-1:-1:-1;14177:429:33:o;8496:852::-;8547:33;8569:10;8547:21;:33::i;:::-;8542:94;;8603:22;;-1:-1:-1;;;8603:22:33;;;;;;;;;;;8542:94;8696:10;8646:31;8680:27;;;;;;;;;;8721:20;;;;-1:-1:-1;;;8721:20:33;;;;8717:84;;;8764:26;;-1:-1:-1;;;8764:26:33;;;;;;;;;;;8717:84;8843:14;;8815:17;:24;:42;8811:101;;8880:21;;-1:-1:-1;;;8880:21:33;;;;;;;;;;;8811:101;8945:4;8922:20;;;:27;;-1:-1:-1;;;;8922:27:33;-1:-1:-1;;;8922:27:33;;;8959:24;:29;;8922:27;;8959:29;;8945:4;;8959:29;:::i;:::-;;;;-1:-1:-1;8999:34:33;;-1:-1:-1;9022:10:33;8999:22;:34::i;:::-;9104:13;;;;-1:-1:-1;;;;;9104:13:33;:17;9100:197;;9187:13;;;;9155:50;;9138:12;;9163:10;;-1:-1:-1;;;;;9187:13:33;;;;9138:12;9155:50;9138:12;9155:50;9187:13;9163:10;9155:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9137:68;;;9224:7;9219:68;;9258:14;;-1:-1:-1;;;9258:14:33;;;;;;;;;;;9219:68;9123:174;9100:197;9312:29;;9330:10;7992:51:48;;9312:29:33;;7980:2:48;7965:18;9312:29:33;7846:203:48;10842:2284:33;2334:13:19;:11;:13::i;:::-;10918:1:33::1;:6;;10923:1;10918:6:::0;10914:63:::1;;10947:19;;-1:-1:-1::0;;;10947:19:33::1;;;;;;;;;;;10914:63;10987:18;::::0;::::1;:14;:18:::0;11016:10:::1;:8;:10::i;:::-;11036:24;:22;:24::i;:::-;11071:20;:33:::0;;-1:-1:-1;;;;;;11071:33:33::1;::::0;;11145:17:::1;:24:::0;11102:1:::1;::::0;11132:38:::1;::::0;::::1;::::0;::::1;::::0;11102:1;;11132:6:::1;:38::i;:::-;11114:57;;11186:3;:8;;11193:1;11186:8:::0;11182:66:::1;;11217:20;;-1:-1:-1::0;;;11217:20:33::1;;;;;;;;;;;11182:66;11263:9;11258:904;11282:17;:24:::0;11278:28;::::1;11258:904;;;11327:12;11342:17;11360:1;11342:20;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;11342:20:33::1;11406:21:::0;;;;;;;;;;;11342:20;11446:15;::::1;::::0;11342:20;;-1:-1:-1;11406:21:33;11446:15:::1;-1:-1:-1::0;;;11446:15:33;;::::1;;::::0;:48:::1;;;11465:4;:17;;:24;;;;;:::i;:::-;:29:::0;;-1:-1:-1;11446:48:33::1;11442:95;;;11514:8;;;;11442:95;11555:20;::::0;-1:-1:-1;;;;;11555:20:33::1;11551:169;;-1:-1:-1::0;11609:20:33::1;:27:::0;;-1:-1:-1;;;;;;11609:27:33::1;-1:-1:-1::0;;;;;11609:27:33;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;11654:21:33::1;:25:::0;11697:8:::1;;11551:169;11762:3;11738:27;;:21;;:27;11734:119;;;11785:27;11802:4;11808:3;11785:16;:27::i;:::-;11830:8;;;;11734:119;11916:20;::::0;-1:-1:-1;;;;;11916:20:33;;::::1;11867:30;11900:37:::0;;;::::1;::::0;;;;;;;;11984:35;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;;11916:20;11984:35;::::1;::::0;-1:-1:-1;;;;;11984:35:33;::::1;::::0;;::::1;::::0;-1:-1:-1;;;11984:35:33;::::1;-1:-1:-1::0;;;;;11984:35:33::1;::::0;;;;;;;-1:-1:-1;;;11984:35:33;;::::1;;;;;::::0;;;;::::1;::::0;::::1;::::0;;11900:37;;11973:104:::1;::::0;11984:35;;;::::1;::::0;;;;;;;;;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;11984:35:33;;;;-1:-1:-1;;;11984:35:33;;12021:55:::1;::::0;;;;::::1;::::0;;12038:20:::1;::::0;-1:-1:-1;;;;;12038:20:33::1;12021:55:::0;;;;::::1;::::0;::::1;::::0;;;;;;12038:20;12021:55;::::1;::::0;-1:-1:-1;;;;;12021:55:33;::::1;;::::0;;::::1;::::0;;;;-1:-1:-1;;;12021:55:33;::::1;-1:-1:-1::0;;;;;12021:55:33::1;::::0;;;;;;;-1:-1:-1;;;12021:55:33;::::1;;;;;::::0;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;::::0;11973:10:::1;:104::i;:::-;11952:200;;;12110:27;12127:4;12133:3;12110:16;:27::i;:::-;11313:849;;;11258:904;11308:3;;11258:904;;;;12176:21;;12201:1;12176:26:::0;12172:84:::1;;12225:20;;-1:-1:-1::0;;;12225:20:33::1;;;;;;;;;;;12172:84;12361:20;::::0;12438:21:::1;::::0;-1:-1:-1;;;;;12361:20:33;;::::1;::::0;12346:12:::1;::::0;-1:-1:-1;;;;;12424:36:33;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;12424:36:33::1;-1:-1:-1::0;12391:69:33;-1:-1:-1;12476:9:33::1;12471:146;12495:21;;12491:1;:25;12471:146;;;12556:4;12537:13;12551:1;12537:16;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12537:23:33;;::::1;:16;::::0;;::::1;::::0;;;;;;:23;;;;12581:25;;::::1;;::::0;;;:19:::1;:25:::0;;;;;;;;;;::::1;::::0;;12518:3:::1;12471:146;;;;12626:26;12638:13;12626:11;:26::i;:::-;12737:7;:14:::0;;::::1;::::0;::::1;::::0;;12704:30:::1;12737:14:::0;;;;::::1;::::0;12761:23:::1;::::0;12768:16:::1;::::0;12761:23:::1;:::i;:::-;12827:14;;-1:-1:-1::0;;;;;12813:29:33::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;12813:29:33::1;-1:-1:-1::0;12794:48:33;;::::1;::::0;:16:::1;::::0;:48:::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;12858:9:33::1;12853:267;12877:14;;12873:1;:18;12853:267;;;12912:12;12927:13;12945:21;;12941:1;:25;;;;:::i;:::-;12927:40;;;;;;;;:::i;:::-;;;;;;;12912:55;;13003:4;12981:16;12998:1;12981:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;:26:::0;;-1:-1:-1;;;;;12981:26:33;;::::1;-1:-1:-1::0;;;;;;12981:26:33;;::::1;;::::0;;;13032:76:::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;13073:21;;;;;;;:33;13032:76;;::::1;::::0;;;13021:88;;12981:26;13021:88;;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;12893:3:::1;12853:267;;13797:115:::0;-1:-1:-1;;;;;13886:19:33;13863:4;13886:19;;;:13;:19;;;;;;;;;13797:115::o;5894:293::-;2334:13:19;:11;:13::i;:::-;6007:34:33;;::::1;5999:68;;;::::0;-1:-1:-1;;;5999:68:33;;18165:2:48;5999:68:33::1;::::0;::::1;18147:21:48::0;18204:2;18184:18;;;18177:30;-1:-1:-1;;;18223:18:48;;;18216:51;18284:18;;5999:68:33::1;;;;;;;;;6083:9;6078:103;6098:17:::0;;::::1;6078:103;;;6136:34;6145:6;;6152:1;6145:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6156:10;;6167:1;6156:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6136:8;:34::i;:::-;6117:3;;6078:103;;;;5894:293:::0;;;;:::o;15129:847::-;15209:19;2334:13:19;:11;:13::i;:::-;15240:26:33::1;15286:30;15293:5;15300:1;15303:12;;15286:6;:30::i;:::-;-1:-1:-1::0;;;;;15269:48:33::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;15269:48:33::1;;;;;;;;;;;;;;;-1:-1:-1::0;15343:11:33::1;::::0;15240:77;;-1:-1:-1;;;;;;15343:11:33;;::::1;::::0;15369:18;::::1;::::0;15365:74:::1;;-1:-1:-1::0;;;;;;15410:13:33;;::::1;;::::0;;;:7:::1;:13;::::0;;;;:18:::1;;::::0;::::1;15365:74;15449:9;15472:211;-1:-1:-1::0;;;;;15479:18:33;::::1;::::0;;::::1;::::0;:31:::1;;;15505:5;15501:1;:9;15479:31;15472:211;;;-1:-1:-1::0;;;;;15547:13:33;;::::1;15526:18;15547:13:::0;;;:7:::1;:13;::::0;;;;;;;;15588:53;;;;::::1;::::0;;;;;;15624:15;;;;::::1;15588:53:::0;;::::1;::::0;;;;15547:13;15574:6;15581:3;::::1;::::0;::::1;:::i;:::-;;;15574:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:67;15662:10:::1;;::::0;-1:-1:-1;;;;;15662:10:33::1;::::0;-1:-1:-1;15472:211:33::1;;;15714:1;15697:6;:13;:18:::0;15693:62:::1;;15738:6;15731:13;;;;;;;15693:62;15813:25;15858:1;-1:-1:-1::0;;;;;15841:19:33::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;15841:19:33::1;;;;;;;;;;;;;;;-1:-1:-1::0;15813:47:33;-1:-1:-1;15875:9:33::1;15870:77;15894:1;15890;:5;15870:77;;;15927:6;15934:1;15927:9;;;;;;;;:::i;:::-;;;;;;;15916:5;15922:1;15916:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:20;15897:3:::1;;15870:77;;;-1:-1:-1::0;15964:5:33;15129:847;-1:-1:-1;;;;;;15129:847:33:o;3405:215:19:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:19;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:19;;3562:1:::1;3534:31;::::0;::::1;7992:51:48::0;7965:18;;3534:31:19::1;7846:203:48::0;3485:91:19::1;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;14612:412:33:-;14737:11;:18;14663;;14693:25;;-1:-1:-1;;;;;14721:35:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;14693:63:33;-1:-1:-1;14771:9:33;14766:228;14790:11;:18;14786:22;;14766:228;;;14829:12;14844:11;14856:1;14844:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;14844:14:33;14901:21;;;;;;;;;;;14948:35;;;;;;;;;;;;;;;;;;;;;14844:14;14948:35;;;-1:-1:-1;;;;;14948:35:33;;;;;;-1:-1:-1;;;14948:35:33;;-1:-1:-1;;;;;14948:35:33;;;;;;;;-1:-1:-1;;;14948:35:33;;;;;;;;;;;;;;;;14844:14;;-1:-1:-1;14901:21:33;;14948:35;;;;;;;14901:21;;14948:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14936:6;14943:1;14936:9;;;;;;;;:::i;:::-;;;;;;;;;;:47;-1:-1:-1;;14810:3:33;;14766:228;;2658:162:19;966:10:22;2717:7:19;1313:22;2570:8;-1:-1:-1;;;;;2570:8:19;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:19;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:19;;966:10:22;2763:40:19;;;7992:51:48;7965:18;;2763:40:19;7846:203:48;22889:658:33;-1:-1:-1;;;;;22965:13:33;;;22944:18;22965:13;;;:7;:13;;;;;22992:15;;22965:13;;22992:15;22988:218;;23189:7;22889:658;:::o;22988:218::-;23239:13;;;;-1:-1:-1;;;;;23282:12:33;;;23267:27;;23263:239;;;23358:27;23373:12;-1:-1:-1;;;;;23358:12:33;;;:27;:::i;:::-;23326:15;;-1:-1:-1;;;;;23326:15:33;23310;:32;;;;;;;;;;:75;;:32;;:15;:75;;;;;:::i;:::-;;;;-1:-1:-1;23263:239:33;;-1:-1:-1;23263:239:33;;23464:27;-1:-1:-1;;;;;23479:12:33;;;23464;:27;:::i;:::-;23432:15;;-1:-1:-1;;;;;23432:15:33;23416;:32;;;;;;;;;;:75;;:32;;:15;:75;;;;;:::i;:::-;;;;-1:-1:-1;;23263:239:33;-1:-1:-1;;;;;;23528:12:33;;;;23512:13;;;;:28;22889:658::o;21836:1047::-;21921:10;21873:7;21913:19;;;:7;:19;;;;;21946:15;;-1:-1:-1;;;;;21946:15:33;21942:80;;21998:13;;-1:-1:-1;;;21998:13:33;;;;;;;;;;;21942:80;22051:11;;22036;;-1:-1:-1;;;;;22051:11:33;;;22036;;:26;22032:528;;22078:11;:24;;-1:-1:-1;;;;;;22078:24:33;;;;;;22116:11;:24;;;;;;;22032:528;;;22161:11;;22176:10;-1:-1:-1;;;;;22161:11:33;;;:25;22157:403;;22210:10;;;;;-1:-1:-1;;;;;22210:10:33;;;22237:1;22202:19;;;:7;:19;;;;;:24;;:37;;-1:-1:-1;;;;;;22202:37:33;;;;;;22267:10;;22253:11;:24;;;;;22267:10;;22253:24;;;22157:403;;;22298:11;;22313:10;-1:-1:-1;;;;;22298:11:33;;;:25;22294:266;;22347:11;;-1:-1:-1;;;;;22347:11:33;;;22375:1;22339:20;;;:7;:20;;;;;;:25;;:38;;-1:-1:-1;;;;;;22339:38:33;;;;;;22413:11;;;;;;22405:20;;;;;;:25;;;22391:39;;22405:25;;22391:39;;;;;;22294:266;;;22488:10;;;;;;22469;;;;;;-1:-1:-1;;;;;22469:10:33;;;22488;22461:19;;;:7;:19;;;;;;:24;;;:37;;22488:10;;;-1:-1:-1;;;;;;22461:37:33;;;;;;22539:10;;22520;;;;22512:19;;;;;:24;:37;;22539:10;;;;22512:37;;;;;22294:266;22594:15;;-1:-1:-1;;;;;22594:15:33;22570:21;22658:32;;;;;;;;;;22594:15;22730:13;;;22701:42;;22658:32;;22730:13;;22658:32;;22570:21;22701:42;;22730:13;;22701:42;:::i;:::-;;;;-1:-1:-1;;22782:1:33;22753:25;;;:30;;:25;;:30;;22782:1;;-1:-1:-1;;;22753:30:33;;-1:-1:-1;;;;;22753:30:33;;:::i;:::-;;;-1:-1:-1;;;;;22753:30:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22809:10:33;-1:-1:-1;22801:19:33;;;:7;:19;;;;;22794:26;;-1:-1:-1;;;;;;22794:26:33;;;;;-1:-1:-1;22794:26:33;;;;;;;;;;;;;;;;;;;;;;;;;22831:12;:14;;;;;;:::i;:::-;;;;-1:-1:-1;22863:13:33;;21836:1047;-1:-1:-1;;;;21836:1047:33:o;4578:312:21:-;4658:4;-1:-1:-1;;;;;4667:6:21;4650:23;;;:120;;;4764:6;-1:-1:-1;;;;;4728:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:26;-1:-1:-1;;;;;1519:53:26;;1441:138;4728:32:21;-1:-1:-1;;;;;4728:42:21;;;4650:120;4633:251;;;4844:29;;-1:-1:-1;;;4844:29:21;;;;;;;;;;;4564:84:33;2334:13:19;:11;:13::i;6032:538:21:-;6149:17;-1:-1:-1;;;;;6131:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6131:52:21;;;;;;;;-1:-1:-1;;6131:52:21;;;;;;;;;;;;:::i;:::-;;;6127:437;;6493:60;;-1:-1:-1;;;6493:60:21;;-1:-1:-1;;;;;8010:32:48;;6493:60:21;;;7992:51:48;7965:18;;6493:60:21;7846:203:48;6127:437:21;-1:-1:-1;;;;;;;;;;;6225:40:21;;6221:120;;6292:34;;-1:-1:-1;;;6292:34:21;;;;;160:25:48;;;133:18;;6292:34:21;14:177:48;6221:120:21;6354:54;6384:17;6403:4;6354:29;:54::i;5007:213::-;5081:4;-1:-1:-1;;;;;5090:6:21;5073:23;;5069:145;;5174:29;;-1:-1:-1;;;5174:29:21;;;;;;;;;;;9071:205:20;9129:30;;3147:66;9186:27;8819:122;1847:127:19;6929:20:20;:18;:20::i;:::-;1929:38:19::1;1954:12;1929:24;:38::i;23553:348:33:-:0;23641:24;23678:12;;23668:23;;;;;;;:::i;:::-;;;;;;;;;;;23705:32;;;;:14;:32;;;;;;;23668:23;;-1:-1:-1;23705:32:33;;23701:95;;;23760:25;;-1:-1:-1;;;23760:25:33;;;;;;;;;;;23701:95;23806:38;23831:12;;23806:24;:38::i;:::-;23855:32;;;;:14;:32;;;;;:39;;-1:-1:-1;;23855:39:33;23890:4;23855:39;;;-1:-1:-1;;23553:348:33:o;21207:211::-;-1:-1:-1;;;;;21324:21:33;;21279:4;21324:21;;;;;;;;;;21363:15;;;;-1:-1:-1;;;21363:15:33;;;;21362:16;:49;;;;;21382:4;:17;;:24;;;;;:::i;:::-;:29;;;-1:-1:-1;21362:49:33;21355:56;21207:211;-1:-1:-1;;;21207:211:33:o;21424:406::-;-1:-1:-1;;;;;21521:27:33;;21489:4;21521:27;;;:21;:27;;;;;;21606:17;:24;21597:33;;21593:76;;-1:-1:-1;21653:5:33;;21424:406;-1:-1:-1;;21424:406:33:o;21593:76::-;21819:4;-1:-1:-1;;;;;21791:32:33;:17;21809:5;21791:24;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;21791:24:33;:32;;21424:406;-1:-1:-1;;;21424:406:33:o;20325:165::-;20387:17;:28;;;;;;;;-1:-1:-1;20387:28:33;;;;;;;;;-1:-1:-1;;;;;;20387:28:33;-1:-1:-1;;;;;20387:28:33;;;;;20455:24;;:28;;20387;20455;:::i;:::-;-1:-1:-1;;;;;20425:27:33;;;;;;;:21;:27;;;;;:58;20325:165::o;3774:248:19:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:19;;-1:-1:-1;;;;;3941:19:19;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;20496:705:33:-;20566:24;20585:4;20566:18;:24::i;:::-;20561:62;;20496:705;:::o;20561:62::-;-1:-1:-1;;;;;20649:27:33;;20633:13;20649:27;;;:21;:27;;;;;;20706:17;:24;20649:27;;20633:13;20706:28;;20733:1;;20706:28;:::i;:::-;20686:48;;20886:9;20877:5;:18;20873:213;;20911:21;20935:17;20953:9;20935:28;;;;;;;;:::i;:::-;;;;;;;;;;;20977:17;:24;;-1:-1:-1;;;;;20935:28:33;;;;-1:-1:-1;20935:28:33;;20995:5;;20977:24;;;;;;:::i;:::-;;;;;;;;;;;;;:40;;-1:-1:-1;;;;;;20977:40:33;-1:-1:-1;;;;;20977:40:33;;;;;;21031:36;;;;;;:21;:36;;;;;;:44;;;20873:213;21127:17;:23;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;21127:23:33;;;;;-1:-1:-1;;;;;;21127:23:33;;;;;;;;;-1:-1:-1;;;;;21167:27:33;;;;;;:21;:27;;;-1:-1:-1;;21167:27:33;;;21160:34;20496:705::o;16647:1060::-;16698:17;:24;16686:9;16736:6;;;16732:43;;16758:7;16647:1060::o;16732:43::-;16790:9;16802:5;16806:1;16802;:5;:::i;:::-;16790:17;;16785:916;16809:5;;16785:916;;16897:9;16969:5;:1;16973;16969:5;:::i;:::-;16927:36;;;16944:15;16927:36;;;19131:19:48;19166:12;;;19159:28;;;19203:12;;16927:36:33;;;;;;;;;;;;16917:47;;;;;;16909:56;;:66;;;;:::i;:::-;16897:78;;16999:1;16994;:6;16990:96;;17020:8;;;16990:96;17411:13;17427:17;17445:1;17427:20;;;;;;;;:::i;:::-;;;;;;;;;;17477:17;:20;;-1:-1:-1;;;;;17427:20:33;;;;-1:-1:-1;17477:17:33;17495:1;;17477:20;;;;;;:::i;:::-;;;;;;;;;;;17535:17;:20;;-1:-1:-1;;;;;17477:20:33;;;;-1:-1:-1;17535:17:33;17553:1;;17535:20;;;;;;:::i;:::-;;;;;;;;;;;17512:17;:20;;-1:-1:-1;;;;;17535:20:33;;;;17530:1;;17512:20;;;;;;:::i;:::-;;;;;;;;;:43;;;;;-1:-1:-1;;;;;17512:43:33;;;;;-1:-1:-1;;;;;17512:43:33;;;;;;17592:5;17569:17;17587:1;17569:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;:28;;-1:-1:-1;;;;;;17569:28:33;-1:-1:-1;;;;;17569:28:33;;;;;;17612;;;;;:21;:28;;;;;;;:32;;;;17658:28;;;;:32;;;16785:916;16816:3;;;;:::i;:::-;;;;16785:916;;18228:312;18296:20;;-1:-1:-1;;;;;18296:20:33;18327:172;-1:-1:-1;;;;;18334:18:33;;;18327:172;;-1:-1:-1;;;;;18411:28:33;;;18368:15;18411:28;;;:19;:28;;;;;;;-1:-1:-1;;;;;;18453:35:33;;;;;18411:28;18327:172;;;-1:-1:-1;18532:1:33;18508:21;:25;18228:312::o;24444:337::-;24524:7;24553:3;24547;:9;24543:69;;;24579:22;;-1:-1:-1;;;24579:22:33;;;;;19400:25:48;;;19441:18;;;19434:34;;;19373:18;;24579:22:33;19226:248:48;24543:69:33;24634:3;24626:5;:11;24622:153;;;-1:-1:-1;24660:3:33;24653:10;;24622:153;24692:3;24684:5;:11;24680:95;;;-1:-1:-1;24718:3:33;24711:10;;24680:95;-1:-1:-1;24759:5:33;;24444:337;-1:-1:-1;;24444:337:33:o;18546:1378::-;-1:-1:-1;;;;;18644:21:33;;18616:25;18644:21;;;;;;;;;;;18616:49;;;;;;;;;;;;;;;-1:-1:-1;;;;;18616:49:33;;;;;;;;;-1:-1:-1;;;18616:49:33;;-1:-1:-1;;;;;18616:49:33;;;;;;;;-1:-1:-1;;;18616:49:33;;;;;;;;;;;;;;;;;;18644:21;18616:49;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18616:49:33;;;;-1:-1:-1;;18721:84:33;;;;;;;;18738:20;;-1:-1:-1;;;;;18738:20:33;18721:84;;;-1:-1:-1;18766:37:33;;;18721:84;18766:37;;;;;;;18721:84;;;;;;;;;;;18738:20;18721:84;;;-1:-1:-1;;;;;18721:84:33;;;;;;-1:-1:-1;;;18721:84:33;;-1:-1:-1;;;;;18721:84:33;;;;;;;;-1:-1:-1;;;18721:84:33;;;;;;;;;;;;;;;;18616:49;;-1:-1:-1;18693:179:33;;18721:84;;-1:-1:-1;18721:84:33;;;;;18766:37;;18721:84;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18823:35;;;;;;;;18840:4;-1:-1:-1;;;;;18823:35:33;;;;;18852:4;18823:35;;;18693:10;:179::i;:::-;18676:978;;;18897:17;18909:4;18897:11;:17::i;:::-;18676:978;;;18983:20;;-1:-1:-1;;;;;18983:20:33;;;18945:15;18963:41;;;:19;:41;;;;;;;;;;19072:572;-1:-1:-1;;;;;19107:21:33;;19103:123;;19152:28;19165:8;19175:4;19152:12;:28::i;:::-;19202:5;;19103:123;19305:58;;;;;;;;-1:-1:-1;;;;;19305:58:33;;;;;-1:-1:-1;19337:24:33;;;19305:58;19337:24;;;;;;;19305:58;;;;;;;;;;;;;;;-1:-1:-1;;;;;19305:58:33;;;;;;-1:-1:-1;;;19305:58:33;;-1:-1:-1;;;;;19305:58:33;;;;;;;;-1:-1:-1;;;19305:58:33;;;;;;;;;;;;;;;;19269:153;;19305:58;;;;;19337:24;19305:58;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19365:35;;;;;;;;19382:4;-1:-1:-1;;;;;19365:35:33;;;;;19394:4;19365:35;;;19269:10;:153::i;:::-;19244:293;;;19463:28;19476:8;19486:4;19463:12;:28::i;19244:293::-;-1:-1:-1;;;;;;19601:28:33;;;;;;;:19;:28;;;;;;;;19072:572;;;18931:723;;18676:978;19692:3;19668:27;;:21;;:27;19664:254;;;19746:20;;;-1:-1:-1;;;;;19746:20:33;;;19711:12;19726:41;;;:19;:41;;;;;;;-1:-1:-1;;;;;;19781:48:33;;;;;;19843:27;;19726:41;;19843:27;;;;;;;19884:21;:23;;19726:41;;19884:23;;;:::i;:::-;;;;;;19697:221;18606:1318;18546:1378;;:::o;24111:327::-;24263:15;;;;;:27;24232:15;;;;:27;24212:4;;24232:58;;24228:129;;-1:-1:-1;24331:15:33;;24313;;-1:-1:-1;;;;;24313:33:33;;;;;;24306:40;;24228:129;-1:-1:-1;24404:15:33;;;;;:27;24374:15;;;:27;:57;;24111:327::o;17713:509::-;17794:12;;17782:9;17820:6;;;17816:43;;17842:7;17713:509;:::o;17816:43::-;17874:9;17886:5;17890:1;17886;:5;:::i;:::-;17874:17;;17869:347;17893:5;;17869:347;;17981:9;18053:5;:1;18057;18053:5;:::i;:::-;18011:36;;;18028:15;18011:36;;;19131:19:48;19166:12;;;19159:28;;;19203:12;;18011:36:33;;;;;;;;;;;;18001:47;;;;;;17993:56;;:66;;;;:::i;:::-;17981:78;;18120:12;18135:5;18141:1;18135:8;;;;;;;;:::i;:::-;;;;;;;18120:23;;18168:5;18174:1;18168:8;;;;;;;;:::i;:::-;;;;;;;18157:5;18163:1;18157:8;;;;;;;;:::i;:::-;;;;;;:19;-1:-1:-1;;;;;18157:19:33;;;-1:-1:-1;;;;;18157:19:33;;;;;18201:4;18190:5;18196:1;18190:8;;;;;;;;:::i;:::-;;;;;;:15;-1:-1:-1;;;;;18190:15:33;;;-1:-1:-1;;;;;18190:15:33;;;;;17905:311;;17900:3;;;;;:::i;:::-;;;;17869:347;;6193:1010;6268:7;:14;:18;6264:76;;6309:20;;-1:-1:-1;;;6309:20:33;;;;;;;;;;;6264:76;6355:32;6377:9;6355:21;:32::i;:::-;6350:95;;6410:24;;-1:-1:-1;;;6410:24:33;;;;;;;;;;;6350:95;-1:-1:-1;;;;;6480:14:33;;;6455:22;6480:14;;;:7;:14;;;;;6508:19;;6480:14;;6508:19;:33;6504:85;;6564:14;;-1:-1:-1;;;6564:14:33;;;;;;;;;;;6504:85;6616:88;;;;;;;;-1:-1:-1;;;;;6616:88:33;;;;;6653:13;;;;;6616:88;;;;;;;-1:-1:-1;6616:88:33;;;;;;;;;;;;6599:14;;;:7;:14;;;;;;;:105;;;;;;;-1:-1:-1;;;;;;6599:105:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:11;;;6715:252;;6760:11;:19;;-1:-1:-1;;;;;6760:19:33;;-1:-1:-1;;;;;;6760:19:33;;;;;;;;6793:11;:19;;;;;;;;;;6715:252;;;6851:11;;;-1:-1:-1;;;;;6851:11:33;;;6843:20;;;;:7;:20;;;;;;:25;;:33;;;;;-1:-1:-1;;;;;;6843:33:33;;;;;;;;6912:11;;6890:14;;;;;;;:19;;:33;;;;6912:11;;;;6890:33;;;;;;;6937:19;;;;;;6715:252;6976:12;:14;;;:12;:14;;;:::i;:::-;;;;-1:-1:-1;;;;;;;7039:26:33;;;7001:35;7039:26;;;;;;;;;;7075:42;;7039:26;;7104:13;;;;7039:26;;7075:42;;7104:13;;7075:42;:::i;:::-;;;;-1:-1:-1;;7156:1:33;7127:25;;;:30;;:25;;:30;;7156:1;;-1:-1:-1;;;7127:30:33;;-1:-1:-1;;;;;7127:30:33;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;7127:30:33;;;;;-1:-1:-1;;;;;7127:30:33;;;;;;7173:23;7179:5;7186:9;7173:23;;;;;;-1:-1:-1;;;;;12175:32:48;;;12157:51;;12244:32;;12239:2;12224:18;;12217:60;12145:2;12130:18;;11983:300;7173:23:33;;;;;;;;6254:949;;6193:1010;;:::o;2264:344:26:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:26;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7082:141:20:-;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:20;;;;;;;;;;;1980:235:19;6929:20:20;:18;:20::i;23938:167:33:-;24046:2;24026:22;;24022:77;;24071:17;;-1:-1:-1;;;24071:17:33;;;;;;;;;;;19930:179;20012:20;;;-1:-1:-1;;;;;19984:25:33;;;20012:20;19984:25;;;:19;:25;;;;;:48;;20012:20;;;;-1:-1:-1;;;;;;19984:48:33;;;;;;;20042:27;;;;;;;;;20079:21;:23;;;;;;:::i;:::-;;;;;;19930:179;:::o;20115:204::-;-1:-1:-1;;;;;20212:25:33;;;;;;;:19;:25;;;;;;;;20184;;;;;;;;;:53;;20212:25;;;;-1:-1:-1;;;;;;20184:53:33;;;;;;;20247:25;;;:32;;;;;;;;;;20289:21;:23;;;;;;:::i;:::-;;;;;;20115:204;;:::o;1671:281:26:-;1748:17;-1:-1:-1;;;;;1748:29:26;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:26;;-1:-1:-1;;;;;8010:32:48;;1805:47:26;;;7992:51:48;7965:18;;1805:47:26;7846:203:48;1744:119:26;-1:-1:-1;;;;;;;;;;;1872:73:26;;-1:-1:-1;;;;;;1872:73:26;-1:-1:-1;;;;;1872:73:26;;;;;;;;;;1671:281::o;3916:253:30:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:30;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:30:o;6113:122:26:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:26;;;;;;;;;;;8485:120:20;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:20;;;;;;-1:-1:-1;8485:120:20:o;4437:582:30:-;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:30;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:30;;-1:-1:-1;;;;;8010:32:48;;4933:24:30;;;7992:51:48;7965:18;;4933:24:30;7846:203:48;4853:119:30;-1:-1:-1;4992:10:30;4985:17;;5559:434;5690:17;;:21;5686:301;;5894:10;5888:17;5881:4;5869:10;5865:21;5858:48;5686:301;5957:19;;-1:-1:-1;;;5957:19:30;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;196:173:48;264:20;;-1:-1:-1;;;;;313:31:48;;303:42;;293:70;;359:1;356;349:12;293:70;196:173;;;:::o;374:186::-;433:6;486:2;474:9;465:7;461:23;457:32;454:52;;;502:1;499;492:12;454:52;525:29;544:9;525:29;:::i;565:250::-;650:1;660:113;674:6;671:1;668:13;660:113;;;750:11;;;744:18;731:11;;;724:39;696:2;689:10;660:113;;;-1:-1:-1;;807:1:48;789:16;;782:27;565:250::o;820:270::-;861:3;899:5;893:12;926:6;921:3;914:19;942:76;1011:6;1004:4;999:3;995:14;988:4;981:5;977:16;942:76;:::i;:::-;1072:2;1051:15;-1:-1:-1;;1047:29:48;1038:39;;;;1079:4;1034:50;;820:270;-1:-1:-1;;820:270:48:o;1095:693::-;1212:1;1208;1203:3;1199:11;1195:19;1187:5;1181:12;1177:38;1172:3;1165:51;1147:3;1262:4;1255:5;1251:16;1245:23;1300:4;1293;1288:3;1284:14;1277:28;1343:12;1337:19;1330:4;1325:3;1321:14;1314:43;-1:-1:-1;;;;;1415:4:48;1401:12;1397:23;1391:30;1387:71;1382:2;1377:3;1373:12;1366:93;-1:-1:-1;;;;;1518:4:48;1504:12;1500:23;1494:30;1490:55;1484:3;1479;1475:13;1468:78;1616:2;1602:12;1598:21;1592:28;1585:36;1578:44;1571:4;1566:3;1562:14;1555:68;1678:3;1664:12;1660:22;1654:29;1632:51;;1714:4;1708:3;1703;1699:13;1692:27;1735:47;1777:3;1772;1768:13;1752:14;1735:47;:::i;:::-;1728:54;1095:693;-1:-1:-1;;;;1095:693:48:o;1793:266::-;1978:2;1967:9;1960:21;1941:4;1998:55;2049:2;2038:9;2034:18;2026:6;1998:55;:::i;2064:367::-;2127:8;2137:6;2191:3;2184:4;2176:6;2172:17;2168:27;2158:55;;2209:1;2206;2199:12;2158:55;-1:-1:-1;2232:20:48;;-1:-1:-1;;;;;2264:30:48;;2261:50;;;2307:1;2304;2297:12;2261:50;2344:4;2336:6;2332:17;2320:29;;2404:3;2397:4;2387:6;2384:1;2380:14;2372:6;2368:27;2364:38;2361:47;2358:67;;;2421:1;2418;2411:12;2358:67;2064:367;;;;;:::o;2436:437::-;2522:6;2530;2583:2;2571:9;2562:7;2558:23;2554:32;2551:52;;;2599:1;2596;2589:12;2551:52;2639:9;2626:23;-1:-1:-1;;;;;2664:6:48;2661:30;2658:50;;;2704:1;2701;2694:12;2658:50;2743:70;2805:7;2796:6;2785:9;2781:22;2743:70;:::i;:::-;2832:8;;2717:96;;-1:-1:-1;2436:437:48;-1:-1:-1;;;;2436:437:48:o;2878:301::-;2937:6;2990:2;2978:9;2969:7;2965:23;2961:32;2958:52;;;3006:1;3003;2996:12;2958:52;3045:9;3032:23;-1:-1:-1;;;;;3088:5:48;3084:46;3077:5;3074:57;3064:85;;3145:1;3142;3135:12;3184:346;3252:6;3260;3313:2;3301:9;3292:7;3288:23;3284:32;3281:52;;;3329:1;3326;3319:12;3281:52;-1:-1:-1;;3374:23:48;;;3494:2;3479:18;;;3466:32;;-1:-1:-1;3184:346:48:o;3535:1554::-;3725:4;3773:2;3762:9;3758:18;3803:2;3792:9;3785:21;3826:6;3861;3855:13;3892:6;3884;3877:22;3930:2;3919:9;3915:18;3908:25;;3992:2;3982:6;3979:1;3975:14;3964:9;3960:30;3956:39;3942:53;;4030:2;4022:6;4018:15;4051:1;4061:999;4075:6;4072:1;4069:13;4061:999;;;4140:22;;;-1:-1:-1;;4136:36:48;4124:49;;4196:13;;4279:9;;4264:25;;4336:2;4328:11;;;4322:18;4248:2;4360:15;;;4353:27;;;4441:19;;4236:15;;;4473:24;;;4563:21;;;-1:-1:-1;;4531:2:48;4519:15;;;4622:330;4638:8;4633:3;4630:17;4622:330;;;4711:15;;4761:9;;-1:-1:-1;;;;;4757:35:48;4743:50;;4847:2;4839:11;;;4833:18;4817:14;;;4810:42;4921:17;;;;4789:1;4657:11;;;;;4889:2;4878:14;;;;4622:330;;;-1:-1:-1;4975:5:48;-1:-1:-1;;;5015:2:48;5038:12;;;;5003:15;;;;;4097:1;4090:9;4061:999;;;-1:-1:-1;5077:6:48;;3535:1554;-1:-1:-1;;;;;;3535:1554:48:o;5094:127::-;5155:10;5150:3;5146:20;5143:1;5136:31;5186:4;5183:1;5176:15;5210:4;5207:1;5200:15;5226:1018;5303:6;5311;5364:2;5352:9;5343:7;5339:23;5335:32;5332:52;;;5380:1;5377;5370:12;5332:52;5403:29;5422:9;5403:29;:::i;:::-;5393:39;;5483:2;5472:9;5468:18;5455:32;-1:-1:-1;;;;;5502:6:48;5499:30;5496:50;;;5542:1;5539;5532:12;5496:50;5565:22;;5618:4;5610:13;;5606:27;-1:-1:-1;5596:55:48;;5647:1;5644;5637:12;5596:55;5687:2;5674:16;-1:-1:-1;;;;;5705:6:48;5702:30;5699:56;;;5735:18;;:::i;:::-;5784:2;5778:9;5876:2;5838:17;;-1:-1:-1;;5834:31:48;;;5867:2;5830:40;5826:54;5814:67;;-1:-1:-1;;;;;5896:34:48;;5932:22;;;5893:62;5890:88;;;5958:18;;:::i;:::-;5994:2;5987:22;6018;;;6059:15;;;6076:2;6055:24;6052:37;-1:-1:-1;6049:57:48;;;6102:1;6099;6092:12;6049:57;6158:6;6153:2;6149;6145:11;6140:2;6132:6;6128:15;6115:50;6211:1;6206:2;6197:6;6189;6185:19;6181:28;6174:39;6232:6;6222:16;;;;;5226:1018;;;;;:::o;6431:347::-;6482:8;6492:6;6546:3;6539:4;6531:6;6527:17;6523:27;6513:55;;6564:1;6561;6554:12;6513:55;-1:-1:-1;6587:20:48;;-1:-1:-1;;;;;6619:30:48;;6616:50;;;6662:1;6659;6652:12;6616:50;6699:4;6691:6;6687:17;6675:29;;6751:3;6744:4;6735:6;6727;6723:19;6719:30;6716:39;6713:59;;;6768:1;6765;6758:12;6783:409;6853:6;6861;6914:2;6902:9;6893:7;6889:23;6885:32;6882:52;;;6930:1;6927;6920:12;6882:52;6970:9;6957:23;-1:-1:-1;;;;;6995:6:48;6992:30;6989:50;;;7035:1;7032;7025:12;6989:50;7074:58;7124:7;7115:6;7104:9;7100:22;7074:58;:::i;7197:644::-;7282:6;7290;7298;7306;7359:2;7347:9;7338:7;7334:23;7330:32;7327:52;;;7375:1;7372;7365:12;7327:52;7398:29;7417:9;7398:29;:::i;:::-;7388:39;;7478:2;7467:9;7463:18;7450:32;-1:-1:-1;;;;;7497:6:48;7494:30;7491:50;;;7537:1;7534;7527:12;7491:50;7576:58;7626:7;7617:6;7606:9;7602:22;7576:58;:::i;:::-;7653:8;;-1:-1:-1;7550:84:48;-1:-1:-1;;7738:2:48;7723:18;;7710:32;7778:13;;7771:21;7761:32;;7751:60;;7807:1;7804;7797:12;7751:60;7197:644;;;;-1:-1:-1;7197:644:48;;-1:-1:-1;;7197:644:48:o;8054:828::-;8252:4;8300:2;8289:9;8285:18;8330:2;8319:9;8312:21;8353:6;8388;8382:13;8419:6;8411;8404:22;8457:2;8446:9;8442:18;8435:25;;8519:2;8509:6;8506:1;8502:14;8491:9;8487:30;8483:39;8469:53;;8557:2;8549:6;8545:15;8578:1;8588:265;8602:6;8599:1;8596:13;8588:265;;;8695:2;8691:7;8679:9;8671:6;8667:22;8663:36;8658:3;8651:49;8723:50;8766:6;8757;8751:13;8723:50;:::i;:::-;8713:60;-1:-1:-1;8808:2:48;8831:12;;;;8796:15;;;;;8624:1;8617:9;8588:265;;8887:219;9036:2;9025:9;9018:21;8999:4;9056:44;9096:2;9085:9;9081:18;9073:6;9056:44;:::i;9111:269::-;9168:6;9221:2;9209:9;9200:7;9196:23;9192:32;9189:52;;;9237:1;9234;9227:12;9189:52;9276:9;9263:23;9326:4;9319:5;9315:16;9308:5;9305:27;9295:55;;9346:1;9343;9336:12;9577:768;9699:6;9707;9715;9723;9776:2;9764:9;9755:7;9751:23;9747:32;9744:52;;;9792:1;9789;9782:12;9744:52;9832:9;9819:23;-1:-1:-1;;;;;9857:6:48;9854:30;9851:50;;;9897:1;9894;9887:12;9851:50;9936:70;9998:7;9989:6;9978:9;9974:22;9936:70;:::i;:::-;10025:8;;-1:-1:-1;9910:96:48;-1:-1:-1;;10113:2:48;10098:18;;10085:32;-1:-1:-1;;;;;10129:32:48;;10126:52;;;10174:1;10171;10164:12;10126:52;10213:72;10277:7;10266:8;10255:9;10251:24;10213:72;:::i;:::-;9577:768;;;;-1:-1:-1;10304:8:48;-1:-1:-1;;;;9577:768:48:o;10350:300::-;10418:6;10426;10479:2;10467:9;10458:7;10454:23;10450:32;10447:52;;;10495:1;10492;10485:12;10447:52;10518:29;10537:9;10518:29;:::i;:::-;10508:39;10616:2;10601:18;;;;10588:32;;-1:-1:-1;;;10350:300:48:o;10655:806::-;10903:2;10915:21;;;10985:13;;10888:18;;;11007:22;;;10855:4;;11086:15;;;11060:2;11045:18;;;10855:4;11129:306;11143:6;11140:1;11137:13;11129:306;;;11202:13;;11244:9;;-1:-1:-1;;;;;11240:35:48;;;11228:48;;11328:2;11320:11;;;11314:18;11310:44;11296:12;;;11289:66;11410:15;;;;11384:2;11375:12;;;;11272:1;11158:9;11129:306;;;-1:-1:-1;11452:3:48;;10655:806;-1:-1:-1;;;;;10655:806:48:o;11466:380::-;11545:1;11541:12;;;;11588;;;11609:61;;11663:4;11655:6;11651:17;11641:27;;11609:61;11716:2;11708:6;11705:14;11685:18;11682:38;11679:161;;11762:10;11757:3;11753:20;11750:1;11743:31;11797:4;11794:1;11787:15;11825:4;11822:1;11815:15;11851:127;11912:10;11907:3;11903:20;11900:1;11893:31;11943:4;11940:1;11933:15;11967:4;11964:1;11957:15;12511:127;12572:10;12567:3;12563:20;12560:1;12553:31;12603:4;12600:1;12593:15;12627:4;12624:1;12617:15;12643:125;12708:9;;;12729:10;;;12726:36;;;12742:18;;:::i;12773:128::-;12840:9;;;12861:11;;;12858:37;;;12875:18;;:::i;13245:517::-;13346:2;13341:3;13338:11;13335:421;;;13382:5;13379:1;13372:16;13426:4;13423:1;13413:18;13496:2;13484:10;13480:19;13477:1;13473:27;13467:4;13463:38;13532:4;13520:10;13517:20;13514:47;;;-1:-1:-1;13555:4:48;13514:47;13610:2;13605:3;13601:12;13598:1;13594:20;13588:4;13584:31;13574:41;;13665:81;13683:2;13676:5;13673:13;13665:81;;;13742:1;13728:16;;13709:1;13698:13;13665:81;;13938:1194;-1:-1:-1;;;;;14055:3:48;14052:27;14049:53;;;14082:18;;:::i;:::-;14111:93;14200:3;14160:38;14192:4;14186:11;14160:38;:::i;:::-;14154:4;14111:93;:::i;:::-;14230:1;14255:2;14250:3;14247:11;14272:1;14267:607;;;;14918:1;14935:3;14932:93;;;-1:-1:-1;14991:19:48;;;14978:33;14932:93;-1:-1:-1;;13895:1:48;13891:11;;;13887:24;13883:29;13873:40;13919:1;13915:11;;;13870:57;15038:78;;14240:886;;14267:607;13192:1;13185:14;;;13229:4;13216:18;;-1:-1:-1;;14303:17:48;;;14417:229;14431:7;14428:1;14425:14;14417:229;;;14520:19;;;14507:33;14492:49;;14627:4;14612:20;;;;14580:1;14568:14;;;;14447:12;14417:229;;;14421:3;14674;14665:7;14662:16;14659:159;;;14798:1;14794:6;14788:3;14782;14779:1;14775:11;14771:21;14767:34;14763:39;14750:9;14745:3;14741:19;14728:33;14724:79;14716:6;14709:95;14659:159;;;14861:1;14855:3;14852:1;14848:11;14844:19;14838:4;14831:33;14240:886;;13938:1194;;;:::o;15137:485::-;-1:-1:-1;;;;;15322:32:48;;15304:51;;15391:2;15386;15371:18;;15364:30;;;15410:18;;15403:34;;;15430:6;15479;15474:2;15459:18;;15446:48;15543:1;15514:22;;;15538:2;15510:31;;;15503:42;;;;15606:2;15585:15;;;-1:-1:-1;;15581:29:48;15566:45;15562:54;;15137:485;-1:-1:-1;;15137:485:48:o;15627:1295::-;15751:3;15745:10;-1:-1:-1;;;;;15770:6:48;15767:30;15764:56;;;15800:18;;:::i;:::-;15829:96;15918:6;15878:38;15910:4;15904:11;15878:38;:::i;:::-;15872:4;15829:96;:::i;:::-;15974:4;16005:2;15994:14;;16022:1;16017:648;;;;16709:1;16726:6;16723:89;;;-1:-1:-1;16778:19:48;;;16772:26;16723:89;-1:-1:-1;;13895:1:48;13891:11;;;13887:24;13883:29;13873:40;13919:1;13915:11;;;13870:57;16825:81;;15987:929;;16017:648;13192:1;13185:14;;;13229:4;13216:18;;-1:-1:-1;;16053:20:48;;;16170:222;16184:7;16181:1;16178:14;16170:222;;;16266:19;;;16260:26;16245:42;;16373:4;16358:20;;;;16326:1;16314:14;;;;16200:12;16170:222;;;16174:3;16420:6;16411:7;16408:19;16405:201;;;16481:19;;;16475:26;-1:-1:-1;;16564:1:48;16560:14;;;16576:3;16556:24;16552:37;16548:42;16533:58;16518:74;;16405:201;-1:-1:-1;;;;16652:1:48;16636:14;;;16632:22;16619:36;;-1:-1:-1;15627:1295:48:o;16927:135::-;16966:3;16987:17;;;16984:43;;17007:18;;:::i;:::-;-1:-1:-1;17054:1:48;17043:13;;16927:135::o;17067:191::-;-1:-1:-1;;;;;17135:26:48;;;17163;;;17131:59;;17202:27;;17199:53;;;17232:18;;:::i;17263:271::-;17446:6;17438;17433:3;17420:33;17402:3;17472:16;;17497:13;;;17472:16;17263:271;-1:-1:-1;17263:271:48:o;17749:209::-;17781:1;17807;17797:132;;17851:10;17846:3;17842:20;17839:1;17832:31;17886:4;17883:1;17876:15;17914:4;17911:1;17904:15;17797:132;-1:-1:-1;17943:9:48;;17749:209::o;18313:194::-;-1:-1:-1;;;;;18411:26:48;;;18383;;;18379:59;;18450:28;;18447:54;;;18481:18;;:::i;18512:136::-;18551:3;18579:5;18569:39;;18588:18;;:::i;:::-;-1:-1:-1;;;18624:18:48;;18512:136::o;18653:184::-;18723:6;18776:2;18764:9;18755:7;18751:23;18747:32;18744:52;;;18792:1;18789;18782:12;18744:52;-1:-1:-1;18815:16:48;;18653:184;-1:-1:-1;18653:184:48:o;18842:127::-;18903:10;18898:3;18894:20;18891:1;18884:31;18934:4;18931:1;18924:15;18958:4;18955:1;18948:15;19479:287;19608:3;19646:6;19640:13;19662:66;19721:6;19716:3;19709:4;19701:6;19697:17;19662:66;:::i;:::-;19744:16;;;;;19479:287;-1:-1:-1;;19479:287:48:o",
932
- "linkReferences": {},
933
- "immutableReferences": {
934
- "39840": [
935
- {
936
- "start": 9244,
937
- "length": 32
938
- },
939
- {
940
- "start": 9285,
941
- "length": 32
942
- },
943
- {
944
- "start": 9604,
945
- "length": 32
946
- }
947
- ]
948
- }
949
- },
950
454
  "methodIdentifiers": {
951
455
  "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc",
952
456
  "activeValidatorsCount()": "0d2bd909",
@@ -964,251 +468,102 @@
964
468
  "initialize(uint128)": "56db9ef1",
965
469
  "isValidatorRegistered(address)": "d04a68c7",
966
470
  "owner()": "8da5cb5b",
967
- "proxiableUUID()": "52d1902d",
968
- "registerValidator(bytes)": "602a9eee",
969
- "renounceOwnership()": "715018a6",
970
- "resignValidator()": "b85f5da2",
971
- "resignedValidatorsCount()": "0777cbef",
972
- "roundValidatorsCount()": "b84d356e",
973
- "setFee(uint128)": "3687f24a",
974
- "transferOwnership(address)": "f2fde38b",
975
- "unvote()": "3174b689",
976
- "updateValidator(bytes)": "5a8eed73",
977
- "updateVoters(address[])": "2bdf6d43",
978
- "upgradeToAndCall(address,bytes)": "4f1ef286",
979
- "validatorsCount()": "ed612f8c",
980
- "version()": "54fd4d50",
981
- "vote(address)": "6dd7d8ea"
982
- },
983
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyVoted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BellowMinValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyIsInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerIsNotValidator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImportIsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"InvalidRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingVote\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoActiveValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyResigned\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteResignedValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteSameValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteValidatorWithoutBlsPublicKey\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"FeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Unvoted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"ValidatorResigned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Voted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"}],\"name\":\"addValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"voters\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"}],\"name\":\"addVotes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"}],\"name\":\"calculateRoundValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"votersCount\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"votersCount\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getRounds\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"}],\"internalType\":\"struct ConsensusV1.RoundValidator[]\",\"name\":\"validators\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ConsensusV1.Round[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"votersCount\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getVotes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"internalType\":\"struct ConsensusV1.VoteResult[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"registrationFee\",\"type\":\"uint128\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isValidatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignedValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"registrationFee\",\"type\":\"uint128\"}],\"name\":\"setFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unvote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"updateValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"voters\",\"type\":\"address[]\"}],\"name\":\"updateVoters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/consensus/ConsensusV1.sol\":\"ConsensusV1\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@contracts/=src/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x06871a0948d0fed9316ae59ee4368527e144911f5e284755312b5bfcde8b27ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c30e46d061d8a450c561935a1236b1885aa76ffab93a19b26dcb8868c839843\",\"dweb:/ipfs/QmZbWbeDyixTyYkVtJvuiQYfkQz12pS7zxWZF3Ju9PYwGH\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"src/consensus/ConsensusV1.sol\":{\"keccak256\":\"0xdecd36de254ed125150d7c3855aadf1c701955789a7f9c618d78a04f0260f21f\",\"license\":\"GNU GENERAL PUBLIC LICENSE\",\"urls\":[\"bzz-raw://5e2461cef0e37c487e3d5f70f94905ab3859e681bed1408e46c132fd8d8b9075\",\"dweb:/ipfs/Qmc3XeGPSf7KqVADsMnzj7RQiG3DxJUoQDSJC8bXJXfQP8\"]}},\"version\":1}",
984
- "metadata": {
985
- "compiler": {
986
- "version": "0.8.27+commit.40a35a09"
987
- },
988
- "language": "Solidity",
989
- "output": {
990
- "abi": [
991
- {
992
- "inputs": [
993
- {
994
- "internalType": "address",
995
- "name": "target",
996
- "type": "address"
997
- }
998
- ],
999
- "type": "error",
1000
- "name": "AddressEmptyCode"
1001
- },
1002
- {
1003
- "inputs": [],
1004
- "type": "error",
1005
- "name": "AlreadyVoted"
1006
- },
1007
- {
1008
- "inputs": [],
1009
- "type": "error",
1010
- "name": "BellowMinValidators"
1011
- },
1012
- {
1013
- "inputs": [],
1014
- "type": "error",
1015
- "name": "BlsKeyAlreadyRegistered"
1016
- },
1017
- {
1018
- "inputs": [],
1019
- "type": "error",
1020
- "name": "BlsKeyIsInvalid"
1021
- },
1022
- {
1023
- "inputs": [],
1024
- "type": "error",
1025
- "name": "CallerIsNotValidator"
1026
- },
1027
- {
1028
- "inputs": [
1029
- {
1030
- "internalType": "address",
1031
- "name": "implementation",
1032
- "type": "address"
1033
- }
1034
- ],
1035
- "type": "error",
1036
- "name": "ERC1967InvalidImplementation"
1037
- },
1038
- {
1039
- "inputs": [],
1040
- "type": "error",
1041
- "name": "ERC1967NonPayable"
1042
- },
1043
- {
1044
- "inputs": [],
1045
- "type": "error",
1046
- "name": "FailedCall"
1047
- },
1048
- {
1049
- "inputs": [],
1050
- "type": "error",
1051
- "name": "ImportIsNotAllowed"
1052
- },
1053
- {
1054
- "inputs": [],
1055
- "type": "error",
1056
- "name": "InvalidFee"
1057
- },
471
+ "proxiableUUID()": "52d1902d",
472
+ "registerValidator(bytes,bytes)": "226f2645",
473
+ "renounceOwnership()": "715018a6",
474
+ "resignValidator()": "b85f5da2",
475
+ "resignedValidatorsCount()": "0777cbef",
476
+ "roundValidatorsCount()": "b84d356e",
477
+ "setFee(uint128)": "3687f24a",
478
+ "transferOwnership(address)": "f2fde38b",
479
+ "unvote()": "3174b689",
480
+ "updateValidator(bytes,bytes)": "8f062626",
481
+ "updateVoters(address[])": "2bdf6d43",
482
+ "upgradeToAndCall(address,bytes)": "4f1ef286",
483
+ "validatorsCount()": "ed612f8c",
484
+ "version()": "54fd4d50",
485
+ "vote(address)": "6dd7d8ea"
486
+ },
487
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyVoted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BellowMinValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyIsInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerIsNotValidator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImportIsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInputLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParameters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProofOfPossession\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"InvalidRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingVote\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoActiveValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrecompileCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyResigned\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteResignedValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteSameValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteValidatorWithoutBlsPublicKey\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"FeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Unvoted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"ValidatorResigned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Voted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"}],\"name\":\"addValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"voters\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"}],\"name\":\"addVotes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"}],\"name\":\"calculateRoundValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"votersCount\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"votersCount\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getRounds\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"}],\"internalType\":\"struct ConsensusV1.RoundValidator[]\",\"name\":\"validators\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ConsensusV1.Round[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"fee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"votersCount\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getVotes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"internalType\":\"struct ConsensusV1.VoteResult[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"registrationFee\",\"type\":\"uint128\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isValidatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proofOfPossession\",\"type\":\"bytes\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignedValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"roundValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"registrationFee\",\"type\":\"uint128\"}],\"name\":\"setFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unvote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proofOfPossession\",\"type\":\"bytes\"}],\"name\":\"updateValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"voters\",\"type\":\"address[]\"}],\"name\":\"updateVoters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/consensus/ConsensusV1.sol\":\"ConsensusV1\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@contracts/=src/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x06871a0948d0fed9316ae59ee4368527e144911f5e284755312b5bfcde8b27ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c30e46d061d8a450c561935a1236b1885aa76ffab93a19b26dcb8868c839843\",\"dweb:/ipfs/QmZbWbeDyixTyYkVtJvuiQYfkQz12pS7zxWZF3Ju9PYwGH\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"src/consensus/BLSPoP.sol\":{\"keccak256\":\"0x19842d7113033964e1f51c97458aa44cb5efc41618b67fc7f949f48824cfd3ee\",\"license\":\"GNU GENERAL PUBLIC LICENSE\",\"urls\":[\"bzz-raw://a6d8f6d87bef7eff7b1e475d1f82ed401c20e5f83a9cdd8724dd27fc67a1ef26\",\"dweb:/ipfs/QmbyRGmCF1vi5NwZmN9p4T55XVs2kdoRJx8ZiBFU4evRYe\"]},\"src/consensus/ConsensusV1.sol\":{\"keccak256\":\"0x32c0841d05f559c4dbbaf2478891e7e1979e6d6f4b541cde9ada1e3b3747eac9\",\"license\":\"GNU GENERAL PUBLIC LICENSE\",\"urls\":[\"bzz-raw://35a52180a27c0818efa6cc80445db16c9d655a0004bfb1db599c0dc5d0588ee4\",\"dweb:/ipfs/Qmd4cjwm4CWNJFihLM4sbNqSEPALoXXfsdDS3MhDzcvvGR\"]}},\"version\":1}",
488
+ "metadata": {
489
+ "compiler": { "version": "0.8.27+commit.40a35a09" },
490
+ "language": "Solidity",
491
+ "output": {
492
+ "abi": [
1058
493
  {
1059
- "inputs": [],
494
+ "inputs": [{ "internalType": "address", "name": "target", "type": "address" }],
1060
495
  "type": "error",
1061
- "name": "InvalidInitialization"
496
+ "name": "AddressEmptyCode"
1062
497
  },
498
+ { "inputs": [], "type": "error", "name": "AlreadyVoted" },
499
+ { "inputs": [], "type": "error", "name": "BellowMinValidators" },
500
+ { "inputs": [], "type": "error", "name": "BlsKeyAlreadyRegistered" },
501
+ { "inputs": [], "type": "error", "name": "BlsKeyIsInvalid" },
502
+ { "inputs": [], "type": "error", "name": "CallerIsNotValidator" },
1063
503
  {
1064
- "inputs": [],
504
+ "inputs": [{ "internalType": "address", "name": "implementation", "type": "address" }],
1065
505
  "type": "error",
1066
- "name": "InvalidParameters"
506
+ "name": "ERC1967InvalidImplementation"
1067
507
  },
508
+ { "inputs": [], "type": "error", "name": "ERC1967NonPayable" },
509
+ { "inputs": [], "type": "error", "name": "FailedCall" },
510
+ { "inputs": [], "type": "error", "name": "ImportIsNotAllowed" },
511
+ { "inputs": [], "type": "error", "name": "InvalidFee" },
512
+ { "inputs": [], "type": "error", "name": "InvalidInitialization" },
513
+ { "inputs": [], "type": "error", "name": "InvalidInputLength" },
514
+ { "inputs": [], "type": "error", "name": "InvalidParameters" },
515
+ { "inputs": [], "type": "error", "name": "InvalidProofOfPossession" },
1068
516
  {
1069
517
  "inputs": [
1070
- {
1071
- "internalType": "uint256",
1072
- "name": "min",
1073
- "type": "uint256"
1074
- },
1075
- {
1076
- "internalType": "uint256",
1077
- "name": "max",
1078
- "type": "uint256"
1079
- }
518
+ { "internalType": "uint256", "name": "min", "type": "uint256" },
519
+ { "internalType": "uint256", "name": "max", "type": "uint256" }
1080
520
  ],
1081
521
  "type": "error",
1082
522
  "name": "InvalidRange"
1083
523
  },
524
+ { "inputs": [], "type": "error", "name": "MissingVote" },
525
+ { "inputs": [], "type": "error", "name": "NoActiveValidators" },
526
+ { "inputs": [], "type": "error", "name": "NotInitializing" },
1084
527
  {
1085
- "inputs": [],
1086
- "type": "error",
1087
- "name": "MissingVote"
1088
- },
1089
- {
1090
- "inputs": [],
1091
- "type": "error",
1092
- "name": "NoActiveValidators"
1093
- },
1094
- {
1095
- "inputs": [],
1096
- "type": "error",
1097
- "name": "NotInitializing"
1098
- },
1099
- {
1100
- "inputs": [
1101
- {
1102
- "internalType": "address",
1103
- "name": "owner",
1104
- "type": "address"
1105
- }
1106
- ],
528
+ "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }],
1107
529
  "type": "error",
1108
530
  "name": "OwnableInvalidOwner"
1109
531
  },
1110
532
  {
1111
- "inputs": [
1112
- {
1113
- "internalType": "address",
1114
- "name": "account",
1115
- "type": "address"
1116
- }
1117
- ],
533
+ "inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
1118
534
  "type": "error",
1119
535
  "name": "OwnableUnauthorizedAccount"
1120
536
  },
537
+ { "inputs": [], "type": "error", "name": "PrecompileCallFailed" },
538
+ { "inputs": [], "type": "error", "name": "RefundFailed" },
539
+ { "inputs": [], "type": "error", "name": "UUPSUnauthorizedCallContext" },
1121
540
  {
1122
- "inputs": [],
1123
- "type": "error",
1124
- "name": "RefundFailed"
1125
- },
1126
- {
1127
- "inputs": [],
1128
- "type": "error",
1129
- "name": "UUPSUnauthorizedCallContext"
1130
- },
1131
- {
1132
- "inputs": [
1133
- {
1134
- "internalType": "bytes32",
1135
- "name": "slot",
1136
- "type": "bytes32"
1137
- }
1138
- ],
541
+ "inputs": [{ "internalType": "bytes32", "name": "slot", "type": "bytes32" }],
1139
542
  "type": "error",
1140
543
  "name": "UUPSUnsupportedProxiableUUID"
1141
544
  },
545
+ { "inputs": [], "type": "error", "name": "ValidatorAlreadyRegistered" },
546
+ { "inputs": [], "type": "error", "name": "ValidatorAlreadyResigned" },
547
+ { "inputs": [], "type": "error", "name": "ValidatorNotRegistered" },
548
+ { "inputs": [], "type": "error", "name": "VoteResignedValidator" },
549
+ { "inputs": [], "type": "error", "name": "VoteSameValidator" },
550
+ { "inputs": [], "type": "error", "name": "VoteValidatorWithoutBlsPublicKey" },
1142
551
  {
1143
- "inputs": [],
1144
- "type": "error",
1145
- "name": "ValidatorAlreadyRegistered"
1146
- },
1147
- {
1148
- "inputs": [],
1149
- "type": "error",
1150
- "name": "ValidatorAlreadyResigned"
1151
- },
1152
- {
1153
- "inputs": [],
1154
- "type": "error",
1155
- "name": "ValidatorNotRegistered"
1156
- },
1157
- {
1158
- "inputs": [],
1159
- "type": "error",
1160
- "name": "VoteResignedValidator"
1161
- },
1162
- {
1163
- "inputs": [],
1164
- "type": "error",
1165
- "name": "VoteSameValidator"
1166
- },
1167
- {
1168
- "inputs": [],
1169
- "type": "error",
1170
- "name": "VoteValidatorWithoutBlsPublicKey"
1171
- },
1172
- {
1173
- "inputs": [
1174
- {
1175
- "internalType": "uint256",
1176
- "name": "fee",
1177
- "type": "uint256",
1178
- "indexed": false
1179
- }
1180
- ],
552
+ "inputs": [{ "internalType": "uint256", "name": "fee", "type": "uint256", "indexed": false }],
1181
553
  "type": "event",
1182
554
  "name": "FeeUpdated",
1183
555
  "anonymous": false
1184
556
  },
1185
557
  {
1186
- "inputs": [
1187
- {
1188
- "internalType": "uint64",
1189
- "name": "version",
1190
- "type": "uint64",
1191
- "indexed": false
1192
- }
1193
- ],
558
+ "inputs": [{ "internalType": "uint64", "name": "version", "type": "uint64", "indexed": false }],
1194
559
  "type": "event",
1195
560
  "name": "Initialized",
1196
561
  "anonymous": false
1197
562
  },
1198
563
  {
1199
564
  "inputs": [
1200
- {
1201
- "internalType": "address",
1202
- "name": "previousOwner",
1203
- "type": "address",
1204
- "indexed": true
1205
- },
1206
- {
1207
- "internalType": "address",
1208
- "name": "newOwner",
1209
- "type": "address",
1210
- "indexed": true
1211
- }
565
+ { "internalType": "address", "name": "previousOwner", "type": "address", "indexed": true },
566
+ { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true }
1212
567
  ],
1213
568
  "type": "event",
1214
569
  "name": "OwnershipTransferred",
@@ -1216,18 +571,8 @@
1216
571
  },
1217
572
  {
1218
573
  "inputs": [
1219
- {
1220
- "internalType": "address",
1221
- "name": "voter",
1222
- "type": "address",
1223
- "indexed": false
1224
- },
1225
- {
1226
- "internalType": "address",
1227
- "name": "validator",
1228
- "type": "address",
1229
- "indexed": false
1230
- }
574
+ { "internalType": "address", "name": "voter", "type": "address", "indexed": false },
575
+ { "internalType": "address", "name": "validator", "type": "address", "indexed": false }
1231
576
  ],
1232
577
  "type": "event",
1233
578
  "name": "Unvoted",
@@ -1235,12 +580,7 @@
1235
580
  },
1236
581
  {
1237
582
  "inputs": [
1238
- {
1239
- "internalType": "address",
1240
- "name": "implementation",
1241
- "type": "address",
1242
- "indexed": true
1243
- }
583
+ { "internalType": "address", "name": "implementation", "type": "address", "indexed": true }
1244
584
  ],
1245
585
  "type": "event",
1246
586
  "name": "Upgraded",
@@ -1248,50 +588,23 @@
1248
588
  },
1249
589
  {
1250
590
  "inputs": [
1251
- {
1252
- "internalType": "address",
1253
- "name": "addr",
1254
- "type": "address",
1255
- "indexed": false
1256
- },
1257
- {
1258
- "internalType": "bytes",
1259
- "name": "blsPublicKey",
1260
- "type": "bytes",
1261
- "indexed": false
1262
- }
591
+ { "internalType": "address", "name": "addr", "type": "address", "indexed": false },
592
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes", "indexed": false }
1263
593
  ],
1264
594
  "type": "event",
1265
595
  "name": "ValidatorRegistered",
1266
596
  "anonymous": false
1267
597
  },
1268
598
  {
1269
- "inputs": [
1270
- {
1271
- "internalType": "address",
1272
- "name": "addr",
1273
- "type": "address",
1274
- "indexed": false
1275
- }
1276
- ],
599
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address", "indexed": false }],
1277
600
  "type": "event",
1278
601
  "name": "ValidatorResigned",
1279
602
  "anonymous": false
1280
603
  },
1281
604
  {
1282
605
  "inputs": [
1283
- {
1284
- "internalType": "address",
1285
- "name": "addr",
1286
- "type": "address",
1287
- "indexed": false
1288
- },
1289
- {
1290
- "internalType": "bytes",
1291
- "name": "blsPublicKey",
1292
- "type": "bytes",
1293
- "indexed": false
1294
- }
606
+ { "internalType": "address", "name": "addr", "type": "address", "indexed": false },
607
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes", "indexed": false }
1295
608
  ],
1296
609
  "type": "event",
1297
610
  "name": "ValidatorUpdated",
@@ -1299,18 +612,8 @@
1299
612
  },
1300
613
  {
1301
614
  "inputs": [
1302
- {
1303
- "internalType": "address",
1304
- "name": "voter",
1305
- "type": "address",
1306
- "indexed": false
1307
- },
1308
- {
1309
- "internalType": "address",
1310
- "name": "validator",
1311
- "type": "address",
1312
- "indexed": false
1313
- }
615
+ { "internalType": "address", "name": "voter", "type": "address", "indexed": false },
616
+ { "internalType": "address", "name": "validator", "type": "address", "indexed": false }
1314
617
  ],
1315
618
  "type": "event",
1316
619
  "name": "Voted",
@@ -1321,44 +624,20 @@
1321
624
  "stateMutability": "view",
1322
625
  "type": "function",
1323
626
  "name": "UPGRADE_INTERFACE_VERSION",
1324
- "outputs": [
1325
- {
1326
- "internalType": "string",
1327
- "name": "",
1328
- "type": "string"
1329
- }
1330
- ]
627
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }]
1331
628
  },
1332
629
  {
1333
630
  "inputs": [],
1334
631
  "stateMutability": "view",
1335
632
  "type": "function",
1336
633
  "name": "activeValidatorsCount",
1337
- "outputs": [
1338
- {
1339
- "internalType": "uint256",
1340
- "name": "",
1341
- "type": "uint256"
1342
- }
1343
- ]
634
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1344
635
  },
1345
636
  {
1346
637
  "inputs": [
1347
- {
1348
- "internalType": "address",
1349
- "name": "addr",
1350
- "type": "address"
1351
- },
1352
- {
1353
- "internalType": "bytes",
1354
- "name": "blsPublicKey",
1355
- "type": "bytes"
1356
- },
1357
- {
1358
- "internalType": "bool",
1359
- "name": "isResigned",
1360
- "type": "bool"
1361
- }
638
+ { "internalType": "address", "name": "addr", "type": "address" },
639
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" },
640
+ { "internalType": "bool", "name": "isResigned", "type": "bool" }
1362
641
  ],
1363
642
  "stateMutability": "nonpayable",
1364
643
  "type": "function",
@@ -1366,29 +645,15 @@
1366
645
  },
1367
646
  {
1368
647
  "inputs": [
1369
- {
1370
- "internalType": "address[]",
1371
- "name": "voters",
1372
- "type": "address[]"
1373
- },
1374
- {
1375
- "internalType": "address[]",
1376
- "name": "validators",
1377
- "type": "address[]"
1378
- }
648
+ { "internalType": "address[]", "name": "voters", "type": "address[]" },
649
+ { "internalType": "address[]", "name": "validators", "type": "address[]" }
1379
650
  ],
1380
651
  "stateMutability": "nonpayable",
1381
652
  "type": "function",
1382
653
  "name": "addVotes"
1383
654
  },
1384
655
  {
1385
- "inputs": [
1386
- {
1387
- "internalType": "uint8",
1388
- "name": "n",
1389
- "type": "uint8"
1390
- }
1391
- ],
656
+ "inputs": [{ "internalType": "uint8", "name": "n", "type": "uint8" }],
1392
657
  "stateMutability": "nonpayable",
1393
658
  "type": "function",
1394
659
  "name": "calculateRoundValidators"
@@ -1398,13 +663,7 @@
1398
663
  "stateMutability": "view",
1399
664
  "type": "function",
1400
665
  "name": "fee",
1401
- "outputs": [
1402
- {
1403
- "internalType": "uint256",
1404
- "name": "",
1405
- "type": "uint256"
1406
- }
1407
- ]
666
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1408
667
  },
1409
668
  {
1410
669
  "inputs": [],
@@ -1417,41 +676,17 @@
1417
676
  "name": "",
1418
677
  "type": "tuple[]",
1419
678
  "components": [
1420
- {
1421
- "internalType": "address",
1422
- "name": "addr",
1423
- "type": "address"
1424
- },
679
+ { "internalType": "address", "name": "addr", "type": "address" },
1425
680
  {
1426
681
  "internalType": "struct ConsensusV1.ValidatorData",
1427
682
  "name": "data",
1428
683
  "type": "tuple",
1429
684
  "components": [
1430
- {
1431
- "internalType": "uint256",
1432
- "name": "voteBalance",
1433
- "type": "uint256"
1434
- },
1435
- {
1436
- "internalType": "uint128",
1437
- "name": "fee",
1438
- "type": "uint128"
1439
- },
1440
- {
1441
- "internalType": "uint64",
1442
- "name": "votersCount",
1443
- "type": "uint64"
1444
- },
1445
- {
1446
- "internalType": "bool",
1447
- "name": "isResigned",
1448
- "type": "bool"
1449
- },
1450
- {
1451
- "internalType": "bytes",
1452
- "name": "blsPublicKey",
1453
- "type": "bytes"
1454
- }
685
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" },
686
+ { "internalType": "uint128", "name": "fee", "type": "uint128" },
687
+ { "internalType": "uint64", "name": "votersCount", "type": "uint64" },
688
+ { "internalType": "bool", "name": "isResigned", "type": "bool" },
689
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }
1455
690
  ]
1456
691
  }
1457
692
  ]
@@ -1469,41 +704,17 @@
1469
704
  "name": "",
1470
705
  "type": "tuple[]",
1471
706
  "components": [
1472
- {
1473
- "internalType": "address",
1474
- "name": "addr",
1475
- "type": "address"
1476
- },
707
+ { "internalType": "address", "name": "addr", "type": "address" },
1477
708
  {
1478
709
  "internalType": "struct ConsensusV1.ValidatorData",
1479
710
  "name": "data",
1480
711
  "type": "tuple",
1481
712
  "components": [
1482
- {
1483
- "internalType": "uint256",
1484
- "name": "voteBalance",
1485
- "type": "uint256"
1486
- },
1487
- {
1488
- "internalType": "uint128",
1489
- "name": "fee",
1490
- "type": "uint128"
1491
- },
1492
- {
1493
- "internalType": "uint64",
1494
- "name": "votersCount",
1495
- "type": "uint64"
1496
- },
1497
- {
1498
- "internalType": "bool",
1499
- "name": "isResigned",
1500
- "type": "bool"
1501
- },
1502
- {
1503
- "internalType": "bytes",
1504
- "name": "blsPublicKey",
1505
- "type": "bytes"
1506
- }
713
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" },
714
+ { "internalType": "uint128", "name": "fee", "type": "uint128" },
715
+ { "internalType": "uint64", "name": "votersCount", "type": "uint64" },
716
+ { "internalType": "bool", "name": "isResigned", "type": "bool" },
717
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }
1507
718
  ]
1508
719
  }
1509
720
  ]
@@ -1512,16 +723,8 @@
1512
723
  },
1513
724
  {
1514
725
  "inputs": [
1515
- {
1516
- "internalType": "uint256",
1517
- "name": "offset",
1518
- "type": "uint256"
1519
- },
1520
- {
1521
- "internalType": "uint256",
1522
- "name": "count",
1523
- "type": "uint256"
1524
- }
726
+ { "internalType": "uint256", "name": "offset", "type": "uint256" },
727
+ { "internalType": "uint256", "name": "count", "type": "uint256" }
1525
728
  ],
1526
729
  "stateMutability": "view",
1527
730
  "type": "function",
@@ -1532,26 +735,14 @@
1532
735
  "name": "",
1533
736
  "type": "tuple[]",
1534
737
  "components": [
1535
- {
1536
- "internalType": "uint256",
1537
- "name": "round",
1538
- "type": "uint256"
1539
- },
738
+ { "internalType": "uint256", "name": "round", "type": "uint256" },
1540
739
  {
1541
740
  "internalType": "struct ConsensusV1.RoundValidator[]",
1542
741
  "name": "validators",
1543
742
  "type": "tuple[]",
1544
743
  "components": [
1545
- {
1546
- "internalType": "address",
1547
- "name": "addr",
1548
- "type": "address"
1549
- },
1550
- {
1551
- "internalType": "uint256",
1552
- "name": "voteBalance",
1553
- "type": "uint256"
1554
- }
744
+ { "internalType": "address", "name": "addr", "type": "address" },
745
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" }
1555
746
  ]
1556
747
  }
1557
748
  ]
@@ -1563,22 +754,10 @@
1563
754
  "stateMutability": "view",
1564
755
  "type": "function",
1565
756
  "name": "getRoundsCount",
1566
- "outputs": [
1567
- {
1568
- "internalType": "uint256",
1569
- "name": "",
1570
- "type": "uint256"
1571
- }
1572
- ]
757
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1573
758
  },
1574
759
  {
1575
- "inputs": [
1576
- {
1577
- "internalType": "address",
1578
- "name": "addr",
1579
- "type": "address"
1580
- }
1581
- ],
760
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address" }],
1582
761
  "stateMutability": "view",
1583
762
  "type": "function",
1584
763
  "name": "getValidator",
@@ -1588,41 +767,17 @@
1588
767
  "name": "",
1589
768
  "type": "tuple",
1590
769
  "components": [
1591
- {
1592
- "internalType": "address",
1593
- "name": "addr",
1594
- "type": "address"
1595
- },
770
+ { "internalType": "address", "name": "addr", "type": "address" },
1596
771
  {
1597
772
  "internalType": "struct ConsensusV1.ValidatorData",
1598
773
  "name": "data",
1599
774
  "type": "tuple",
1600
775
  "components": [
1601
- {
1602
- "internalType": "uint256",
1603
- "name": "voteBalance",
1604
- "type": "uint256"
1605
- },
1606
- {
1607
- "internalType": "uint128",
1608
- "name": "fee",
1609
- "type": "uint128"
1610
- },
1611
- {
1612
- "internalType": "uint64",
1613
- "name": "votersCount",
1614
- "type": "uint64"
1615
- },
1616
- {
1617
- "internalType": "bool",
1618
- "name": "isResigned",
1619
- "type": "bool"
1620
- },
1621
- {
1622
- "internalType": "bytes",
1623
- "name": "blsPublicKey",
1624
- "type": "bytes"
1625
- }
776
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" },
777
+ { "internalType": "uint128", "name": "fee", "type": "uint128" },
778
+ { "internalType": "uint64", "name": "votersCount", "type": "uint64" },
779
+ { "internalType": "bool", "name": "isResigned", "type": "bool" },
780
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }
1626
781
  ]
1627
782
  }
1628
783
  ]
@@ -1631,16 +786,8 @@
1631
786
  },
1632
787
  {
1633
788
  "inputs": [
1634
- {
1635
- "internalType": "address",
1636
- "name": "addr",
1637
- "type": "address"
1638
- },
1639
- {
1640
- "internalType": "uint256",
1641
- "name": "count",
1642
- "type": "uint256"
1643
- }
789
+ { "internalType": "address", "name": "addr", "type": "address" },
790
+ { "internalType": "uint256", "name": "count", "type": "uint256" }
1644
791
  ],
1645
792
  "stateMutability": "view",
1646
793
  "type": "function",
@@ -1651,16 +798,8 @@
1651
798
  "name": "",
1652
799
  "type": "tuple[]",
1653
800
  "components": [
1654
- {
1655
- "internalType": "address",
1656
- "name": "voter",
1657
- "type": "address"
1658
- },
1659
- {
1660
- "internalType": "address",
1661
- "name": "validator",
1662
- "type": "address"
1663
- }
801
+ { "internalType": "address", "name": "voter", "type": "address" },
802
+ { "internalType": "address", "name": "validator", "type": "address" }
1664
803
  ]
1665
804
  }
1666
805
  ]
@@ -1670,187 +809,92 @@
1670
809
  "stateMutability": "view",
1671
810
  "type": "function",
1672
811
  "name": "getVotesCount",
1673
- "outputs": [
1674
- {
1675
- "internalType": "uint256",
1676
- "name": "",
1677
- "type": "uint256"
1678
- }
1679
- ]
812
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1680
813
  },
1681
814
  {
1682
- "inputs": [
1683
- {
1684
- "internalType": "uint128",
1685
- "name": "registrationFee",
1686
- "type": "uint128"
1687
- }
1688
- ],
815
+ "inputs": [{ "internalType": "uint128", "name": "registrationFee", "type": "uint128" }],
1689
816
  "stateMutability": "nonpayable",
1690
817
  "type": "function",
1691
818
  "name": "initialize"
1692
819
  },
1693
820
  {
1694
- "inputs": [
1695
- {
1696
- "internalType": "address",
1697
- "name": "addr",
1698
- "type": "address"
1699
- }
1700
- ],
821
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address" }],
1701
822
  "stateMutability": "view",
1702
823
  "type": "function",
1703
824
  "name": "isValidatorRegistered",
1704
- "outputs": [
1705
- {
1706
- "internalType": "bool",
1707
- "name": "",
1708
- "type": "bool"
1709
- }
1710
- ]
825
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
1711
826
  },
1712
827
  {
1713
828
  "inputs": [],
1714
829
  "stateMutability": "view",
1715
830
  "type": "function",
1716
831
  "name": "owner",
1717
- "outputs": [
1718
- {
1719
- "internalType": "address",
1720
- "name": "",
1721
- "type": "address"
1722
- }
1723
- ]
832
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
1724
833
  },
1725
834
  {
1726
835
  "inputs": [],
1727
836
  "stateMutability": "view",
1728
837
  "type": "function",
1729
838
  "name": "proxiableUUID",
1730
- "outputs": [
1731
- {
1732
- "internalType": "bytes32",
1733
- "name": "",
1734
- "type": "bytes32"
1735
- }
1736
- ]
839
+ "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }]
1737
840
  },
1738
841
  {
1739
842
  "inputs": [
1740
- {
1741
- "internalType": "bytes",
1742
- "name": "blsPublicKey",
1743
- "type": "bytes"
1744
- }
843
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" },
844
+ { "internalType": "bytes", "name": "proofOfPossession", "type": "bytes" }
1745
845
  ],
1746
846
  "stateMutability": "payable",
1747
847
  "type": "function",
1748
848
  "name": "registerValidator"
1749
849
  },
1750
- {
1751
- "inputs": [],
1752
- "stateMutability": "nonpayable",
1753
- "type": "function",
1754
- "name": "renounceOwnership"
1755
- },
1756
- {
1757
- "inputs": [],
1758
- "stateMutability": "nonpayable",
1759
- "type": "function",
1760
- "name": "resignValidator"
1761
- },
850
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "renounceOwnership" },
851
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "resignValidator" },
1762
852
  {
1763
853
  "inputs": [],
1764
854
  "stateMutability": "view",
1765
855
  "type": "function",
1766
856
  "name": "resignedValidatorsCount",
1767
- "outputs": [
1768
- {
1769
- "internalType": "uint256",
1770
- "name": "",
1771
- "type": "uint256"
1772
- }
1773
- ]
857
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1774
858
  },
1775
859
  {
1776
860
  "inputs": [],
1777
861
  "stateMutability": "view",
1778
862
  "type": "function",
1779
863
  "name": "roundValidatorsCount",
1780
- "outputs": [
1781
- {
1782
- "internalType": "uint256",
1783
- "name": "",
1784
- "type": "uint256"
1785
- }
1786
- ]
864
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1787
865
  },
1788
866
  {
1789
- "inputs": [
1790
- {
1791
- "internalType": "uint128",
1792
- "name": "registrationFee",
1793
- "type": "uint128"
1794
- }
1795
- ],
867
+ "inputs": [{ "internalType": "uint128", "name": "registrationFee", "type": "uint128" }],
1796
868
  "stateMutability": "nonpayable",
1797
869
  "type": "function",
1798
870
  "name": "setFee"
1799
871
  },
1800
872
  {
1801
- "inputs": [
1802
- {
1803
- "internalType": "address",
1804
- "name": "newOwner",
1805
- "type": "address"
1806
- }
1807
- ],
873
+ "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
1808
874
  "stateMutability": "nonpayable",
1809
875
  "type": "function",
1810
876
  "name": "transferOwnership"
1811
877
  },
1812
- {
1813
- "inputs": [],
1814
- "stateMutability": "nonpayable",
1815
- "type": "function",
1816
- "name": "unvote"
1817
- },
878
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "unvote" },
1818
879
  {
1819
880
  "inputs": [
1820
- {
1821
- "internalType": "bytes",
1822
- "name": "blsPublicKey",
1823
- "type": "bytes"
1824
- }
881
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" },
882
+ { "internalType": "bytes", "name": "proofOfPossession", "type": "bytes" }
1825
883
  ],
1826
884
  "stateMutability": "nonpayable",
1827
885
  "type": "function",
1828
886
  "name": "updateValidator"
1829
887
  },
1830
888
  {
1831
- "inputs": [
1832
- {
1833
- "internalType": "address[]",
1834
- "name": "voters",
1835
- "type": "address[]"
1836
- }
1837
- ],
889
+ "inputs": [{ "internalType": "address[]", "name": "voters", "type": "address[]" }],
1838
890
  "stateMutability": "nonpayable",
1839
891
  "type": "function",
1840
892
  "name": "updateVoters"
1841
893
  },
1842
894
  {
1843
895
  "inputs": [
1844
- {
1845
- "internalType": "address",
1846
- "name": "newImplementation",
1847
- "type": "address"
1848
- },
1849
- {
1850
- "internalType": "bytes",
1851
- "name": "data",
1852
- "type": "bytes"
1853
- }
896
+ { "internalType": "address", "name": "newImplementation", "type": "address" },
897
+ { "internalType": "bytes", "name": "data", "type": "bytes" }
1854
898
  ],
1855
899
  "stateMutability": "payable",
1856
900
  "type": "function",
@@ -1861,35 +905,17 @@
1861
905
  "stateMutability": "view",
1862
906
  "type": "function",
1863
907
  "name": "validatorsCount",
1864
- "outputs": [
1865
- {
1866
- "internalType": "uint256",
1867
- "name": "",
1868
- "type": "uint256"
1869
- }
1870
- ]
908
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1871
909
  },
1872
910
  {
1873
911
  "inputs": [],
1874
912
  "stateMutability": "pure",
1875
913
  "type": "function",
1876
914
  "name": "version",
1877
- "outputs": [
1878
- {
1879
- "internalType": "uint256",
1880
- "name": "",
1881
- "type": "uint256"
1882
- }
1883
- ]
915
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
1884
916
  },
1885
917
  {
1886
- "inputs": [
1887
- {
1888
- "internalType": "address",
1889
- "name": "addr",
1890
- "type": "address"
1891
- }
1892
- ],
918
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address" }],
1893
919
  "stateMutability": "nonpayable",
1894
920
  "type": "function",
1895
921
  "name": "vote"
@@ -1898,9 +924,7 @@
1898
924
  "devdoc": {
1899
925
  "kind": "dev",
1900
926
  "methods": {
1901
- "owner()": {
1902
- "details": "Returns the address of the current owner."
1903
- },
927
+ "owner()": { "details": "Returns the address of the current owner." },
1904
928
  "proxiableUUID()": {
1905
929
  "details": "Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
1906
930
  },
@@ -1917,11 +941,7 @@
1917
941
  },
1918
942
  "version": 1
1919
943
  },
1920
- "userdoc": {
1921
- "kind": "user",
1922
- "methods": {},
1923
- "version": 1
1924
- }
944
+ "userdoc": { "kind": "user", "methods": {}, "version": 1 }
1925
945
  },
1926
946
  "settings": {
1927
947
  "remappings": [
@@ -1929,25 +949,16 @@
1929
949
  "@forge-std/=lib/forge-std/src/",
1930
950
  "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
1931
951
  "@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
1932
- "ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
1933
952
  "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
1934
953
  "forge-std/=lib/forge-std/src/",
1935
954
  "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
1936
955
  "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
1937
956
  "openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/",
1938
- "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
1939
- "solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"
957
+ "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"
1940
958
  ],
1941
- "optimizer": {
1942
- "enabled": true,
1943
- "runs": 200
1944
- },
1945
- "metadata": {
1946
- "bytecodeHash": "ipfs"
1947
- },
1948
- "compilationTarget": {
1949
- "src/consensus/ConsensusV1.sol": "ConsensusV1"
1950
- },
959
+ "optimizer": { "enabled": true, "runs": 200 },
960
+ "metadata": { "bytecodeHash": "ipfs" },
961
+ "compilationTarget": { "src/consensus/ConsensusV1.sol": "ConsensusV1" },
1951
962
  "evmVersion": "shanghai",
1952
963
  "libraries": {}
1953
964
  },
@@ -2040,16 +1051,24 @@
2040
1051
  ],
2041
1052
  "license": "MIT"
2042
1053
  },
1054
+ "src/consensus/BLSPoP.sol": {
1055
+ "keccak256": "0x19842d7113033964e1f51c97458aa44cb5efc41618b67fc7f949f48824cfd3ee",
1056
+ "urls": [
1057
+ "bzz-raw://a6d8f6d87bef7eff7b1e475d1f82ed401c20e5f83a9cdd8724dd27fc67a1ef26",
1058
+ "dweb:/ipfs/QmbyRGmCF1vi5NwZmN9p4T55XVs2kdoRJx8ZiBFU4evRYe"
1059
+ ],
1060
+ "license": "GNU GENERAL PUBLIC LICENSE"
1061
+ },
2043
1062
  "src/consensus/ConsensusV1.sol": {
2044
- "keccak256": "0xdecd36de254ed125150d7c3855aadf1c701955789a7f9c618d78a04f0260f21f",
1063
+ "keccak256": "0x32c0841d05f559c4dbbaf2478891e7e1979e6d6f4b541cde9ada1e3b3747eac9",
2045
1064
  "urls": [
2046
- "bzz-raw://5e2461cef0e37c487e3d5f70f94905ab3859e681bed1408e46c132fd8d8b9075",
2047
- "dweb:/ipfs/Qmc3XeGPSf7KqVADsMnzj7RQiG3DxJUoQDSJC8bXJXfQP8"
1065
+ "bzz-raw://35a52180a27c0818efa6cc80445db16c9d655a0004bfb1db599c0dc5d0588ee4",
1066
+ "dweb:/ipfs/Qmd4cjwm4CWNJFihLM4sbNqSEPALoXXfsdDS3MhDzcvvGR"
2048
1067
  ],
2049
1068
  "license": "GNU GENERAL PUBLIC LICENSE"
2050
1069
  }
2051
1070
  },
2052
1071
  "version": 1
2053
1072
  },
2054
- "id": 33
1073
+ "id": 34
2055
1074
  }