@keep-network/tbtc-v2 0.1.1-dev.2 → 0.1.1-dev.22

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.
Files changed (32) hide show
  1. package/artifacts/TBTC.json +18 -18
  2. package/artifacts/TBTCToken.json +18 -18
  3. package/artifacts/VendingMachine.json +19 -19
  4. package/artifacts/solcInputs/e2b5f983e9c69369a4f41eb2f0688e3c.json +140 -0
  5. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  6. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.json +2 -2
  7. package/build/contracts/bank/Bank.sol/Bank.dbg.json +4 -0
  8. package/build/contracts/bank/Bank.sol/Bank.json +537 -0
  9. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +4 -0
  10. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +96 -0
  11. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  12. package/build/contracts/bridge/Bridge.sol/Bridge.json +767 -50
  13. package/build/contracts/bridge/Bridge.sol/IRelay.dbg.json +4 -0
  14. package/build/contracts/bridge/Bridge.sol/IRelay.json +37 -0
  15. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  16. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.json +2 -2
  17. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  18. package/build/contracts/token/TBTC.sol/TBTC.json +2 -2
  19. package/build/contracts/vault/IVault.sol/IVault.dbg.json +4 -0
  20. package/build/contracts/vault/IVault.sol/IVault.json +47 -0
  21. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +4 -0
  22. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +181 -0
  23. package/contracts/GovernanceUtils.sol +1 -1
  24. package/contracts/bank/Bank.sol +390 -0
  25. package/contracts/bridge/BitcoinTx.sol +231 -0
  26. package/contracts/bridge/Bridge.sol +1562 -104
  27. package/contracts/bridge/VendingMachine.sol +1 -1
  28. package/contracts/token/TBTC.sol +1 -1
  29. package/contracts/vault/IVault.sol +60 -0
  30. package/contracts/vault/TBTCVault.sol +146 -0
  31. package/package.json +10 -9
  32. package/artifacts/solcInputs/02b9e185d8beb23545e98201d474fc6b.json +0 -107
@@ -4,14 +4,34 @@
4
4
  "sourceName": "contracts/bridge/Bridge.sol",
5
5
  "abi": [
6
6
  {
7
- "anonymous": false,
8
7
  "inputs": [
9
8
  {
10
- "indexed": false,
9
+ "internalType": "address",
10
+ "name": "_bank",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_relay",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_treasury",
21
+ "type": "address"
22
+ },
23
+ {
11
24
  "internalType": "uint256",
12
- "name": "depositId",
25
+ "name": "_txProofDifficultyFactor",
13
26
  "type": "uint256"
14
- },
27
+ }
28
+ ],
29
+ "stateMutability": "nonpayable",
30
+ "type": "constructor"
31
+ },
32
+ {
33
+ "anonymous": false,
34
+ "inputs": [
15
35
  {
16
36
  "indexed": false,
17
37
  "internalType": "bytes32",
@@ -20,9 +40,9 @@
20
40
  },
21
41
  {
22
42
  "indexed": false,
23
- "internalType": "uint8",
43
+ "internalType": "uint32",
24
44
  "name": "fundingOutputIndex",
25
- "type": "uint8"
45
+ "type": "uint32"
26
46
  },
27
47
  {
28
48
  "indexed": false,
@@ -33,65 +53,543 @@
33
53
  {
34
54
  "indexed": false,
35
55
  "internalType": "uint64",
36
- "name": "blindingFactor",
56
+ "name": "amount",
37
57
  "type": "uint64"
38
58
  },
59
+ {
60
+ "indexed": false,
61
+ "internalType": "bytes8",
62
+ "name": "blindingFactor",
63
+ "type": "bytes8"
64
+ },
65
+ {
66
+ "indexed": false,
67
+ "internalType": "bytes20",
68
+ "name": "walletPubKeyHash",
69
+ "type": "bytes20"
70
+ },
71
+ {
72
+ "indexed": false,
73
+ "internalType": "bytes20",
74
+ "name": "refundPubKeyHash",
75
+ "type": "bytes20"
76
+ },
77
+ {
78
+ "indexed": false,
79
+ "internalType": "bytes4",
80
+ "name": "refundLocktime",
81
+ "type": "bytes4"
82
+ },
83
+ {
84
+ "indexed": false,
85
+ "internalType": "address",
86
+ "name": "vault",
87
+ "type": "address"
88
+ }
89
+ ],
90
+ "name": "DepositRevealed",
91
+ "type": "event"
92
+ },
93
+ {
94
+ "anonymous": false,
95
+ "inputs": [
96
+ {
97
+ "indexed": false,
98
+ "internalType": "bytes20",
99
+ "name": "walletPubKeyHash",
100
+ "type": "bytes20"
101
+ },
102
+ {
103
+ "indexed": false,
104
+ "internalType": "bytes32",
105
+ "name": "sweepTxHash",
106
+ "type": "bytes32"
107
+ }
108
+ ],
109
+ "name": "DepositsSwept",
110
+ "type": "event"
111
+ },
112
+ {
113
+ "anonymous": false,
114
+ "inputs": [
115
+ {
116
+ "indexed": true,
117
+ "internalType": "address",
118
+ "name": "previousOwner",
119
+ "type": "address"
120
+ },
121
+ {
122
+ "indexed": true,
123
+ "internalType": "address",
124
+ "name": "newOwner",
125
+ "type": "address"
126
+ }
127
+ ],
128
+ "name": "OwnershipTransferred",
129
+ "type": "event"
130
+ },
131
+ {
132
+ "anonymous": false,
133
+ "inputs": [
134
+ {
135
+ "indexed": false,
136
+ "internalType": "bytes20",
137
+ "name": "walletPubKeyHash",
138
+ "type": "bytes20"
139
+ },
39
140
  {
40
141
  "indexed": false,
41
142
  "internalType": "bytes",
42
- "name": "refundPubKey",
143
+ "name": "redeemerOutputScript",
43
144
  "type": "bytes"
44
145
  },
146
+ {
147
+ "indexed": false,
148
+ "internalType": "address",
149
+ "name": "redeemer",
150
+ "type": "address"
151
+ },
45
152
  {
46
153
  "indexed": false,
47
154
  "internalType": "uint64",
48
- "name": "amount",
155
+ "name": "requestedAmount",
156
+ "type": "uint64"
157
+ },
158
+ {
159
+ "indexed": false,
160
+ "internalType": "uint64",
161
+ "name": "treasuryFee",
162
+ "type": "uint64"
163
+ },
164
+ {
165
+ "indexed": false,
166
+ "internalType": "uint64",
167
+ "name": "txMaxFee",
49
168
  "type": "uint64"
169
+ }
170
+ ],
171
+ "name": "RedemptionRequested",
172
+ "type": "event"
173
+ },
174
+ {
175
+ "anonymous": false,
176
+ "inputs": [
177
+ {
178
+ "indexed": false,
179
+ "internalType": "bytes20",
180
+ "name": "walletPubKeyHash",
181
+ "type": "bytes20"
50
182
  },
51
183
  {
52
184
  "indexed": false,
185
+ "internalType": "bytes32",
186
+ "name": "redemptionTxHash",
187
+ "type": "bytes32"
188
+ }
189
+ ],
190
+ "name": "RedemptionsCompleted",
191
+ "type": "event"
192
+ },
193
+ {
194
+ "anonymous": false,
195
+ "inputs": [
196
+ {
197
+ "indexed": true,
53
198
  "internalType": "address",
54
199
  "name": "vault",
55
200
  "type": "address"
201
+ },
202
+ {
203
+ "indexed": false,
204
+ "internalType": "bool",
205
+ "name": "isTrusted",
206
+ "type": "bool"
56
207
  }
57
208
  ],
58
- "name": "DepositRevealed",
209
+ "name": "VaultStatusUpdated",
59
210
  "type": "event"
60
211
  },
212
+ {
213
+ "inputs": [],
214
+ "name": "bank",
215
+ "outputs": [
216
+ {
217
+ "internalType": "contract Bank",
218
+ "name": "",
219
+ "type": "address"
220
+ }
221
+ ],
222
+ "stateMutability": "view",
223
+ "type": "function"
224
+ },
225
+ {
226
+ "inputs": [],
227
+ "name": "depositTreasuryFeeDivisor",
228
+ "outputs": [
229
+ {
230
+ "internalType": "uint64",
231
+ "name": "",
232
+ "type": "uint64"
233
+ }
234
+ ],
235
+ "stateMutability": "view",
236
+ "type": "function"
237
+ },
238
+ {
239
+ "inputs": [],
240
+ "name": "depositTxMaxFee",
241
+ "outputs": [
242
+ {
243
+ "internalType": "uint64",
244
+ "name": "",
245
+ "type": "uint64"
246
+ }
247
+ ],
248
+ "stateMutability": "view",
249
+ "type": "function"
250
+ },
61
251
  {
62
252
  "inputs": [
253
+ {
254
+ "internalType": "uint256",
255
+ "name": "",
256
+ "type": "uint256"
257
+ }
258
+ ],
259
+ "name": "deposits",
260
+ "outputs": [
261
+ {
262
+ "internalType": "address",
263
+ "name": "depositor",
264
+ "type": "address"
265
+ },
266
+ {
267
+ "internalType": "uint64",
268
+ "name": "amount",
269
+ "type": "uint64"
270
+ },
271
+ {
272
+ "internalType": "uint32",
273
+ "name": "revealedAt",
274
+ "type": "uint32"
275
+ },
276
+ {
277
+ "internalType": "address",
278
+ "name": "vault",
279
+ "type": "address"
280
+ },
281
+ {
282
+ "internalType": "uint64",
283
+ "name": "treasuryFee",
284
+ "type": "uint64"
285
+ },
286
+ {
287
+ "internalType": "uint32",
288
+ "name": "sweptAt",
289
+ "type": "uint32"
290
+ }
291
+ ],
292
+ "stateMutability": "view",
293
+ "type": "function"
294
+ },
295
+ {
296
+ "inputs": [
297
+ {
298
+ "internalType": "address",
299
+ "name": "",
300
+ "type": "address"
301
+ }
302
+ ],
303
+ "name": "isVaultTrusted",
304
+ "outputs": [
305
+ {
306
+ "internalType": "bool",
307
+ "name": "",
308
+ "type": "bool"
309
+ }
310
+ ],
311
+ "stateMutability": "view",
312
+ "type": "function"
313
+ },
314
+ {
315
+ "inputs": [
316
+ {
317
+ "internalType": "bytes20",
318
+ "name": "",
319
+ "type": "bytes20"
320
+ }
321
+ ],
322
+ "name": "mainUtxos",
323
+ "outputs": [
63
324
  {
64
325
  "internalType": "bytes32",
65
- "name": "fundingTxHash",
326
+ "name": "",
66
327
  "type": "bytes32"
328
+ }
329
+ ],
330
+ "stateMutability": "view",
331
+ "type": "function"
332
+ },
333
+ {
334
+ "inputs": [],
335
+ "name": "owner",
336
+ "outputs": [
337
+ {
338
+ "internalType": "address",
339
+ "name": "",
340
+ "type": "address"
341
+ }
342
+ ],
343
+ "stateMutability": "view",
344
+ "type": "function"
345
+ },
346
+ {
347
+ "inputs": [
348
+ {
349
+ "internalType": "uint256",
350
+ "name": "",
351
+ "type": "uint256"
352
+ }
353
+ ],
354
+ "name": "pendingRedemptions",
355
+ "outputs": [
356
+ {
357
+ "internalType": "address",
358
+ "name": "redeemer",
359
+ "type": "address"
67
360
  },
68
361
  {
69
- "internalType": "uint8",
70
- "name": "fundingOutputIndex",
71
- "type": "uint8"
362
+ "internalType": "uint64",
363
+ "name": "requestedAmount",
364
+ "type": "uint64"
72
365
  },
73
366
  {
74
367
  "internalType": "uint64",
75
- "name": "blindingFactor",
368
+ "name": "treasuryFee",
76
369
  "type": "uint64"
77
370
  },
371
+ {
372
+ "internalType": "uint64",
373
+ "name": "txMaxFee",
374
+ "type": "uint64"
375
+ },
376
+ {
377
+ "internalType": "uint32",
378
+ "name": "requestedAt",
379
+ "type": "uint32"
380
+ }
381
+ ],
382
+ "stateMutability": "view",
383
+ "type": "function"
384
+ },
385
+ {
386
+ "inputs": [],
387
+ "name": "redemptionDustThreshold",
388
+ "outputs": [
389
+ {
390
+ "internalType": "uint64",
391
+ "name": "",
392
+ "type": "uint64"
393
+ }
394
+ ],
395
+ "stateMutability": "view",
396
+ "type": "function"
397
+ },
398
+ {
399
+ "inputs": [],
400
+ "name": "redemptionTimeout",
401
+ "outputs": [
402
+ {
403
+ "internalType": "uint256",
404
+ "name": "",
405
+ "type": "uint256"
406
+ }
407
+ ],
408
+ "stateMutability": "view",
409
+ "type": "function"
410
+ },
411
+ {
412
+ "inputs": [],
413
+ "name": "redemptionTreasuryFeeDivisor",
414
+ "outputs": [
415
+ {
416
+ "internalType": "uint64",
417
+ "name": "",
418
+ "type": "uint64"
419
+ }
420
+ ],
421
+ "stateMutability": "view",
422
+ "type": "function"
423
+ },
424
+ {
425
+ "inputs": [],
426
+ "name": "redemptionTxMaxFee",
427
+ "outputs": [
428
+ {
429
+ "internalType": "uint64",
430
+ "name": "",
431
+ "type": "uint64"
432
+ }
433
+ ],
434
+ "stateMutability": "view",
435
+ "type": "function"
436
+ },
437
+ {
438
+ "inputs": [],
439
+ "name": "relay",
440
+ "outputs": [
441
+ {
442
+ "internalType": "contract IRelay",
443
+ "name": "",
444
+ "type": "address"
445
+ }
446
+ ],
447
+ "stateMutability": "view",
448
+ "type": "function"
449
+ },
450
+ {
451
+ "inputs": [],
452
+ "name": "renounceOwnership",
453
+ "outputs": [],
454
+ "stateMutability": "nonpayable",
455
+ "type": "function"
456
+ },
457
+ {
458
+ "inputs": [
459
+ {
460
+ "internalType": "bytes20",
461
+ "name": "walletPubKeyHash",
462
+ "type": "bytes20"
463
+ },
464
+ {
465
+ "components": [
466
+ {
467
+ "internalType": "bytes32",
468
+ "name": "txHash",
469
+ "type": "bytes32"
470
+ },
471
+ {
472
+ "internalType": "uint32",
473
+ "name": "txOutputIndex",
474
+ "type": "uint32"
475
+ },
476
+ {
477
+ "internalType": "uint64",
478
+ "name": "txOutputValue",
479
+ "type": "uint64"
480
+ }
481
+ ],
482
+ "internalType": "struct BitcoinTx.UTXO",
483
+ "name": "mainUtxo",
484
+ "type": "tuple"
485
+ },
78
486
  {
79
487
  "internalType": "bytes",
80
- "name": "refundPubKey",
488
+ "name": "redeemerOutputScript",
81
489
  "type": "bytes"
82
490
  },
83
491
  {
84
492
  "internalType": "uint64",
85
493
  "name": "amount",
86
494
  "type": "uint64"
495
+ }
496
+ ],
497
+ "name": "requestRedemption",
498
+ "outputs": [],
499
+ "stateMutability": "nonpayable",
500
+ "type": "function"
501
+ },
502
+ {
503
+ "inputs": [
504
+ {
505
+ "components": [
506
+ {
507
+ "internalType": "bytes4",
508
+ "name": "version",
509
+ "type": "bytes4"
510
+ },
511
+ {
512
+ "internalType": "bytes",
513
+ "name": "inputVector",
514
+ "type": "bytes"
515
+ },
516
+ {
517
+ "internalType": "bytes",
518
+ "name": "outputVector",
519
+ "type": "bytes"
520
+ },
521
+ {
522
+ "internalType": "bytes4",
523
+ "name": "locktime",
524
+ "type": "bytes4"
525
+ }
526
+ ],
527
+ "internalType": "struct BitcoinTx.Info",
528
+ "name": "fundingTx",
529
+ "type": "tuple"
87
530
  },
531
+ {
532
+ "components": [
533
+ {
534
+ "internalType": "uint32",
535
+ "name": "fundingOutputIndex",
536
+ "type": "uint32"
537
+ },
538
+ {
539
+ "internalType": "address",
540
+ "name": "depositor",
541
+ "type": "address"
542
+ },
543
+ {
544
+ "internalType": "bytes8",
545
+ "name": "blindingFactor",
546
+ "type": "bytes8"
547
+ },
548
+ {
549
+ "internalType": "bytes20",
550
+ "name": "walletPubKeyHash",
551
+ "type": "bytes20"
552
+ },
553
+ {
554
+ "internalType": "bytes20",
555
+ "name": "refundPubKeyHash",
556
+ "type": "bytes20"
557
+ },
558
+ {
559
+ "internalType": "bytes4",
560
+ "name": "refundLocktime",
561
+ "type": "bytes4"
562
+ },
563
+ {
564
+ "internalType": "address",
565
+ "name": "vault",
566
+ "type": "address"
567
+ }
568
+ ],
569
+ "internalType": "struct Bridge.RevealInfo",
570
+ "name": "reveal",
571
+ "type": "tuple"
572
+ }
573
+ ],
574
+ "name": "revealDeposit",
575
+ "outputs": [],
576
+ "stateMutability": "nonpayable",
577
+ "type": "function"
578
+ },
579
+ {
580
+ "inputs": [
88
581
  {
89
582
  "internalType": "address",
90
583
  "name": "vault",
91
584
  "type": "address"
585
+ },
586
+ {
587
+ "internalType": "bool",
588
+ "name": "isTrusted",
589
+ "type": "bool"
92
590
  }
93
591
  ],
94
- "name": "revealDeposit",
592
+ "name": "setVaultStatus",
95
593
  "outputs": [],
96
594
  "stateMutability": "nonpayable",
97
595
  "type": "function"
@@ -99,42 +597,162 @@
99
597
  {
100
598
  "inputs": [
101
599
  {
102
- "internalType": "bytes4",
103
- "name": "txVersion",
104
- "type": "bytes4"
600
+ "components": [
601
+ {
602
+ "internalType": "bytes4",
603
+ "name": "version",
604
+ "type": "bytes4"
605
+ },
606
+ {
607
+ "internalType": "bytes",
608
+ "name": "inputVector",
609
+ "type": "bytes"
610
+ },
611
+ {
612
+ "internalType": "bytes",
613
+ "name": "outputVector",
614
+ "type": "bytes"
615
+ },
616
+ {
617
+ "internalType": "bytes4",
618
+ "name": "locktime",
619
+ "type": "bytes4"
620
+ }
621
+ ],
622
+ "internalType": "struct BitcoinTx.Info",
623
+ "name": "redemptionTx",
624
+ "type": "tuple"
105
625
  },
106
626
  {
107
- "internalType": "bytes",
108
- "name": "txInputVector",
109
- "type": "bytes"
627
+ "components": [
628
+ {
629
+ "internalType": "bytes",
630
+ "name": "merkleProof",
631
+ "type": "bytes"
632
+ },
633
+ {
634
+ "internalType": "uint256",
635
+ "name": "txIndexInBlock",
636
+ "type": "uint256"
637
+ },
638
+ {
639
+ "internalType": "bytes",
640
+ "name": "bitcoinHeaders",
641
+ "type": "bytes"
642
+ }
643
+ ],
644
+ "internalType": "struct BitcoinTx.Proof",
645
+ "name": "redemptionProof",
646
+ "type": "tuple"
110
647
  },
111
648
  {
112
- "internalType": "bytes",
113
- "name": "txOutput",
114
- "type": "bytes"
649
+ "components": [
650
+ {
651
+ "internalType": "bytes32",
652
+ "name": "txHash",
653
+ "type": "bytes32"
654
+ },
655
+ {
656
+ "internalType": "uint32",
657
+ "name": "txOutputIndex",
658
+ "type": "uint32"
659
+ },
660
+ {
661
+ "internalType": "uint64",
662
+ "name": "txOutputValue",
663
+ "type": "uint64"
664
+ }
665
+ ],
666
+ "internalType": "struct BitcoinTx.UTXO",
667
+ "name": "mainUtxo",
668
+ "type": "tuple"
115
669
  },
116
670
  {
117
- "internalType": "bytes4",
118
- "name": "txLocktime",
119
- "type": "bytes4"
120
- },
671
+ "internalType": "bytes20",
672
+ "name": "walletPubKeyHash",
673
+ "type": "bytes20"
674
+ }
675
+ ],
676
+ "name": "submitRedemptionProof",
677
+ "outputs": [],
678
+ "stateMutability": "nonpayable",
679
+ "type": "function"
680
+ },
681
+ {
682
+ "inputs": [
121
683
  {
122
- "internalType": "bytes",
123
- "name": "merkleProof",
124
- "type": "bytes"
684
+ "components": [
685
+ {
686
+ "internalType": "bytes4",
687
+ "name": "version",
688
+ "type": "bytes4"
689
+ },
690
+ {
691
+ "internalType": "bytes",
692
+ "name": "inputVector",
693
+ "type": "bytes"
694
+ },
695
+ {
696
+ "internalType": "bytes",
697
+ "name": "outputVector",
698
+ "type": "bytes"
699
+ },
700
+ {
701
+ "internalType": "bytes4",
702
+ "name": "locktime",
703
+ "type": "bytes4"
704
+ }
705
+ ],
706
+ "internalType": "struct BitcoinTx.Info",
707
+ "name": "sweepTx",
708
+ "type": "tuple"
125
709
  },
126
710
  {
127
- "internalType": "uint256",
128
- "name": "txIndexInBlock",
129
- "type": "uint256"
711
+ "components": [
712
+ {
713
+ "internalType": "bytes",
714
+ "name": "merkleProof",
715
+ "type": "bytes"
716
+ },
717
+ {
718
+ "internalType": "uint256",
719
+ "name": "txIndexInBlock",
720
+ "type": "uint256"
721
+ },
722
+ {
723
+ "internalType": "bytes",
724
+ "name": "bitcoinHeaders",
725
+ "type": "bytes"
726
+ }
727
+ ],
728
+ "internalType": "struct BitcoinTx.Proof",
729
+ "name": "sweepProof",
730
+ "type": "tuple"
130
731
  },
131
732
  {
132
- "internalType": "bytes",
133
- "name": "bitcoinHeaders",
134
- "type": "bytes"
733
+ "components": [
734
+ {
735
+ "internalType": "bytes32",
736
+ "name": "txHash",
737
+ "type": "bytes32"
738
+ },
739
+ {
740
+ "internalType": "uint32",
741
+ "name": "txOutputIndex",
742
+ "type": "uint32"
743
+ },
744
+ {
745
+ "internalType": "uint64",
746
+ "name": "txOutputValue",
747
+ "type": "uint64"
748
+ }
749
+ ],
750
+ "internalType": "struct BitcoinTx.UTXO",
751
+ "name": "mainUtxo",
752
+ "type": "tuple"
135
753
  }
136
754
  ],
137
- "name": "sweep",
755
+ "name": "submitSweepProof",
138
756
  "outputs": [],
139
757
  "stateMutability": "nonpayable",
140
758
  "type": "function"
@@ -147,30 +765,129 @@
147
765
  "type": "uint256"
148
766
  }
149
767
  ],
150
- "name": "unswept",
768
+ "name": "timedOutRedemptions",
151
769
  "outputs": [
770
+ {
771
+ "internalType": "address",
772
+ "name": "redeemer",
773
+ "type": "address"
774
+ },
152
775
  {
153
776
  "internalType": "uint64",
154
- "name": "amount",
777
+ "name": "requestedAmount",
155
778
  "type": "uint64"
156
779
  },
157
780
  {
158
- "internalType": "address",
159
- "name": "vault",
160
- "type": "address"
781
+ "internalType": "uint64",
782
+ "name": "treasuryFee",
783
+ "type": "uint64"
784
+ },
785
+ {
786
+ "internalType": "uint64",
787
+ "name": "txMaxFee",
788
+ "type": "uint64"
161
789
  },
162
790
  {
163
791
  "internalType": "uint32",
164
- "name": "revealedAt",
792
+ "name": "requestedAt",
165
793
  "type": "uint32"
166
794
  }
167
795
  ],
168
796
  "stateMutability": "view",
169
797
  "type": "function"
798
+ },
799
+ {
800
+ "inputs": [
801
+ {
802
+ "internalType": "address",
803
+ "name": "newOwner",
804
+ "type": "address"
805
+ }
806
+ ],
807
+ "name": "transferOwnership",
808
+ "outputs": [],
809
+ "stateMutability": "nonpayable",
810
+ "type": "function"
811
+ },
812
+ {
813
+ "inputs": [],
814
+ "name": "treasury",
815
+ "outputs": [
816
+ {
817
+ "internalType": "address",
818
+ "name": "",
819
+ "type": "address"
820
+ }
821
+ ],
822
+ "stateMutability": "view",
823
+ "type": "function"
824
+ },
825
+ {
826
+ "inputs": [],
827
+ "name": "txProofDifficultyFactor",
828
+ "outputs": [
829
+ {
830
+ "internalType": "uint256",
831
+ "name": "",
832
+ "type": "uint256"
833
+ }
834
+ ],
835
+ "stateMutability": "view",
836
+ "type": "function"
837
+ },
838
+ {
839
+ "inputs": [
840
+ {
841
+ "internalType": "bytes20",
842
+ "name": "",
843
+ "type": "bytes20"
844
+ }
845
+ ],
846
+ "name": "wallets",
847
+ "outputs": [
848
+ {
849
+ "internalType": "enum Bridge.WalletState",
850
+ "name": "state",
851
+ "type": "uint8"
852
+ },
853
+ {
854
+ "internalType": "uint64",
855
+ "name": "pendingRedemptionsValue",
856
+ "type": "uint64"
857
+ }
858
+ ],
859
+ "stateMutability": "view",
860
+ "type": "function"
170
861
  }
171
862
  ],
172
- "bytecode": "0x608060405234801561001057600080fd5b506109f0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632c3e1d121461004657806342b1f1a41461006257806343c6de291461007e575b600080fd5b610060600480360381019061005b91906103df565b6100b0565b005b61007c60048036038101906100779190610486565b610238565b005b61009860048036038101906100939190610584565b610241565b6040516100a793929190610735565b60405180910390f35b60008787336040516020016100c793929190610657565b6040516020818303038152906040528051906020012060001c905060008060008381526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff1614610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9061068e565b60405180910390fd5b838160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160000160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504281600001601c6101000a81548163ffffffff021916908363ffffffff1602179055507fed7e2a3180a53ccf8540bf67f1679359557837b4c2350f3c7f1d1409eaac3739828a8a338b8b8b8b8b604051610225999897969594939291906106ae565b60405180910390a1505050505050505050565b50505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060000160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600001601c9054906101000a900463ffffffff16905083565b60006102c26102bd84610791565b61076c565b9050828152602081018484840111156102da57600080fd5b6102e5848285610887565b509392505050565b6000813590506102fc81610930565b92915050565b60008135905061031181610947565b92915050565b6000813590506103268161095e565b92915050565b60008083601f84011261033e57600080fd5b8235905067ffffffffffffffff81111561035757600080fd5b60208301915083600182028301111561036f57600080fd5b9250929050565b600082601f83011261038757600080fd5b81356103978482602086016102af565b91505092915050565b6000813590506103af81610975565b92915050565b6000813590506103c48161098c565b92915050565b6000813590506103d9816109a3565b92915050565b600080600080600080600060c0888a0312156103fa57600080fd5b60006104088a828b01610302565b97505060206104198a828b016103ca565b965050604061042a8a828b016103b5565b955050606088013567ffffffffffffffff81111561044757600080fd5b6104538a828b0161032c565b945094505060806104668a828b016103b5565b92505060a06104778a828b016102ed565b91505092959891949750929550565b600080600080600080600060e0888a0312156104a157600080fd5b60006104af8a828b01610317565b975050602088013567ffffffffffffffff8111156104cc57600080fd5b6104d88a828b01610376565b965050604088013567ffffffffffffffff8111156104f557600080fd5b6105018a828b01610376565b95505060606105128a828b01610317565b945050608088013567ffffffffffffffff81111561052f57600080fd5b61053b8a828b01610376565b93505060a061054c8a828b016103a0565b92505060c088013567ffffffffffffffff81111561056957600080fd5b6105758a828b01610376565b91505092959891949750929550565b60006020828403121561059657600080fd5b60006105a4848285016103a0565b91505092915050565b6105b6816107e4565b82525050565b6105c5816107f6565b82525050565b60006105d783856107c2565b93506105e4838584610887565b6105ed836108f6565b840190509392505050565b60006106056018836107d3565b915061061082610907565b602082019050919050565b6106248161084c565b82525050565b61063381610856565b82525050565b61064281610866565b82525050565b6106518161087a565b82525050565b600060608201905061066c60008301866105bc565b6106796020830185610648565b61068660408301846105ad565b949350505050565b600060208201905081810360008301526106a7816105f8565b9050919050565b6000610100820190506106c4600083018c61061b565b6106d1602083018b6105bc565b6106de604083018a610648565b6106eb60608301896105ad565b6106f86080830188610639565b81810360a083015261070b8186886105cb565b905061071a60c0830185610639565b61072760e08301846105ad565b9a9950505050505050505050565b600060608201905061074a6000830186610639565b61075760208301856105ad565b610764604083018461062a565b949350505050565b6000610776610787565b90506107828282610896565b919050565b6000604051905090565b600067ffffffffffffffff8211156107ac576107ab6108c7565b5b6107b5826108f6565b9050602081019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006107ef8261082c565b9050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b61089f826108f6565b810181811067ffffffffffffffff821117156108be576108bd6108c7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b610939816107e4565b811461094457600080fd5b50565b610950816107f6565b811461095b57600080fd5b50565b61096781610800565b811461097257600080fd5b50565b61097e8161084c565b811461098957600080fd5b50565b61099581610866565b81146109a057600080fd5b50565b6109ac8161087a565b81146109b757600080fd5b5056fea2646970667358221220bca337d7cb05b6b689ca49ecdd85c75dc9cdde9d5b5a54318aba5449dda2e35064736f6c63430008040033",
173
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632c3e1d121461004657806342b1f1a41461006257806343c6de291461007e575b600080fd5b610060600480360381019061005b91906103df565b6100b0565b005b61007c60048036038101906100779190610486565b610238565b005b61009860048036038101906100939190610584565b610241565b6040516100a793929190610735565b60405180910390f35b60008787336040516020016100c793929190610657565b6040516020818303038152906040528051906020012060001c905060008060008381526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff1614610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9061068e565b60405180910390fd5b838160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160000160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504281600001601c6101000a81548163ffffffff021916908363ffffffff1602179055507fed7e2a3180a53ccf8540bf67f1679359557837b4c2350f3c7f1d1409eaac3739828a8a338b8b8b8b8b604051610225999897969594939291906106ae565b60405180910390a1505050505050505050565b50505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060000160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600001601c9054906101000a900463ffffffff16905083565b60006102c26102bd84610791565b61076c565b9050828152602081018484840111156102da57600080fd5b6102e5848285610887565b509392505050565b6000813590506102fc81610930565b92915050565b60008135905061031181610947565b92915050565b6000813590506103268161095e565b92915050565b60008083601f84011261033e57600080fd5b8235905067ffffffffffffffff81111561035757600080fd5b60208301915083600182028301111561036f57600080fd5b9250929050565b600082601f83011261038757600080fd5b81356103978482602086016102af565b91505092915050565b6000813590506103af81610975565b92915050565b6000813590506103c48161098c565b92915050565b6000813590506103d9816109a3565b92915050565b600080600080600080600060c0888a0312156103fa57600080fd5b60006104088a828b01610302565b97505060206104198a828b016103ca565b965050604061042a8a828b016103b5565b955050606088013567ffffffffffffffff81111561044757600080fd5b6104538a828b0161032c565b945094505060806104668a828b016103b5565b92505060a06104778a828b016102ed565b91505092959891949750929550565b600080600080600080600060e0888a0312156104a157600080fd5b60006104af8a828b01610317565b975050602088013567ffffffffffffffff8111156104cc57600080fd5b6104d88a828b01610376565b965050604088013567ffffffffffffffff8111156104f557600080fd5b6105018a828b01610376565b95505060606105128a828b01610317565b945050608088013567ffffffffffffffff81111561052f57600080fd5b61053b8a828b01610376565b93505060a061054c8a828b016103a0565b92505060c088013567ffffffffffffffff81111561056957600080fd5b6105758a828b01610376565b91505092959891949750929550565b60006020828403121561059657600080fd5b60006105a4848285016103a0565b91505092915050565b6105b6816107e4565b82525050565b6105c5816107f6565b82525050565b60006105d783856107c2565b93506105e4838584610887565b6105ed836108f6565b840190509392505050565b60006106056018836107d3565b915061061082610907565b602082019050919050565b6106248161084c565b82525050565b61063381610856565b82525050565b61064281610866565b82525050565b6106518161087a565b82525050565b600060608201905061066c60008301866105bc565b6106796020830185610648565b61068660408301846105ad565b949350505050565b600060208201905081810360008301526106a7816105f8565b9050919050565b6000610100820190506106c4600083018c61061b565b6106d1602083018b6105bc565b6106de604083018a610648565b6106eb60608301896105ad565b6106f86080830188610639565b81810360a083015261070b8186886105cb565b905061071a60c0830185610639565b61072760e08301846105ad565b9a9950505050505050505050565b600060608201905061074a6000830186610639565b61075760208301856105ad565b610764604083018461062a565b949350505050565b6000610776610787565b90506107828282610896565b919050565b6000604051905090565b600067ffffffffffffffff8211156107ac576107ab6108c7565b5b6107b5826108f6565b9050602081019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006107ef8261082c565b9050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b61089f826108f6565b810181811067ffffffffffffffff821117156108be576108bd6108c7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b610939816107e4565b811461094457600080fd5b50565b610950816107f6565b811461095b57600080fd5b50565b61096781610800565b811461097257600080fd5b50565b61097e8161084c565b811461098957600080fd5b50565b61099581610866565b81146109a057600080fd5b50565b6109ac8161087a565b81146109b757600080fd5b5056fea2646970667358221220bca337d7cb05b6b689ca49ecdd85c75dc9cdde9d5b5a54318aba5449dda2e35064736f6c63430008040033",
174
- "linkReferences": {},
175
- "deployedLinkReferences": {}
863
+ "bytecode": "0x6101006040523480156200001257600080fd5b5060405162004cdb38038062004cdb83398101604081905262000035916200021d565b6200004033620001b0565b6001600160a01b0384166200009c5760405162461bcd60e51b815260206004820152601b60248201527f42616e6b20616464726573732063616e6e6f74206265207a65726f000000000060448201526064015b60405180910390fd5b6001600160a01b0380851660a0528316620000fa5760405162461bcd60e51b815260206004820152601c60248201527f52656c617920616464726573732063616e6e6f74206265207a65726f00000000604482015260640162000093565b6001600160a01b0380841660c0528216620001585760405162461bcd60e51b815260206004820152601f60248201527f547265617375727920616464726573732063616e6e6f74206265207a65726f00604482015260640162000093565b6001600160a01b039190911660e052608052505060008054600160a01b600160e01b031916607d60a41b1790557903e800000000000007d000000000000f424000000000000003e86001556202a3006002556200026f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200021857600080fd5b919050565b600080600080608085870312156200023457600080fd5b6200023f8562000200565b93506200024f6020860162000200565b92506200025f6040860162000200565b6060959095015193969295505050565b60805160a05160c05160e0516149ec620002ef6000396000818161035701528181610afe01526117720152600081816104d8015281816120bf015261215901526000818161039e01528181610a6b01528181610b2d015281816116d9015281816117aa0152611f470152600081816102f501526121ef01526149ec6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80638da5cb5b116100e3578063cb7f3a091161008c578063e65e19d511610066578063e65e19d51461056d578063e95eb7a8146105ae578063f2fde38b146105c857600080fd5b8063cb7f3a0914610514578063d6eccdf014610527578063e53c0b551461053a57600080fd5b8063b34b3216116100bd578063b34b3216146104c0578063b59589d1146104d3578063bdf9fca9146104fa57600080fd5b80638da5cb5b146103e0578063a588f059146103f1578063b02c43d01461040b57600080fd5b80635c0b481211610145578063715018a61161011f578063715018a61461039157806376cdb03b1461039957806383a43428146103c057600080fd5b80635c0b48121461032c57806360d712fc1461033f57806361d027b31461035257600080fd5b80631fff4e70116101765780631fff4e70146102d95780632bb818c2146102f057806359a9d90a1461031757600080fd5b806303d952f71461019d578063079bf52c146102485780630b6ba19d1461027a575b600080fd5b6101fc6101ab366004613dc2565b600660205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b60005461026290600160a01b90046001600160401b031681565b6040516001600160401b03909116815260200161023f565b6101fc610288366004613dc2565b600760205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b6102e260025481565b60405190815260200161023f565b6102e27f000000000000000000000000000000000000000000000000000000000000000081565b61032a610325366004613e05565b6105db565b005b61032a61033a366004613e70565b610b99565b61032a61034d366004613ee6565b611235565b6103797f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161023f565b61032a6112ee565b6103797f000000000000000000000000000000000000000000000000000000000000000081565b6102e26103ce366004613f3a565b60056020526000908152604090205481565b6000546001600160a01b0316610379565b60015461026290600160c01b90046001600160401b031681565b610470610419366004613dc2565b600460205260009081526040902080546001909101546001600160a01b03808316926001600160401b03600160a01b80830482169463ffffffff600160e01b94859004811695821694928204909316929190041686565b604080516001600160a01b0397881681526001600160401b03968716602082015263ffffffff958616918101919091529590921660608601529290921660808401521660a082015260c00161023f565b61032a6104ce366004613f55565b611354565b6103797f000000000000000000000000000000000000000000000000000000000000000081565b60015461026290600160401b90046001600160401b031681565b600154610262906001600160401b031681565b61032a610535366004613ff1565b611811565b61055d610548366004614096565b60036020526000908152604090205460ff1681565b604051901515815260200161023f565b6105a061057b366004613f3a565b60086020526000908152604090205460ff81169061010090046001600160401b031682565b60405161023f9291906140c7565b60015461026290600160801b90046001600160401b031681565b61032a6105d6366004614096565b611fb7565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348585610601612099565b6040518463ffffffff1660e01b815260040161061f93929190614187565b60206040518083038186803b15801561063757600080fd5b505af415801561064b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066f9190614282565b90506000806106be610684604088018861429b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061221692505050565b60408051606081018252600080825260208083018290528284018290526001600160601b0319861682526005905291909120549294509092509080156107d8578086356107116040890160208a016142f5565b61072160608a0160408b01614310565b60405160200161075e9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146107c65760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b6107d536879003870187614341565b91505b60006108266107ea60208b018b61429b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612349915050565b9050600080806108498460000151886001600160401b03168660400151516128c4565b60015491935091506001600160401b031661086482846143c9565b11156108b25760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064016107bd565b60005b8460400151518110156109a057600060018660400151516108d691906143e1565b82146108e257836108ec565b6108ec83856143c9565b90508086606001518381518110610905576109056143f8565b602002602001015187604001518481518110610923576109236143f8565b602002602001015161093591906143e1565b61093f91906143e1565b86604001518381518110610955576109556143f8565b60200260200101818152505085606001518281518110610977576109776143f8565b60200260200101518561098a91906143c9565b94505080806109989061440e565b9150506108b5565b5060408051602081018b90526000918101919091526001600160c01b031960c089901b166044820152604c0160408051808303601f1901815282825280516020918201206001600160601b03198c1660008181526005845284902091909155835282018b90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a1602084015160408086015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263266a123a92610a9e92600401614429565b600060405180830381600087803b158015610ab857600080fd5b505af1158015610acc573d6000803e3d6000fd5b50506040517f5b86f5990000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169250635b86f5999150604401600060405180830381600087803b158015610b7357600080fd5b505af1158015610b87573d6000803e3d6000fd5b50505050505050505050505050505050565b6000610bab60e0830160c08401614096565b6001600160a01b03161480610bed575060036000610bcf60e0840160c08501614096565b6001600160a01b0316815260208101919091526040016000205460ff165b610c395760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f74207472757374656400000000000000000000000060448201526064016107bd565b6000610c4b6040830160208401614096565b610c5b60608401604085016144ad565b610c6b6080850160608601613f3a565b610c7b60a0860160808701613f3a565b610c8b60c0870160a088016144d7565b604051602001610c9f9594939291906144f2565b60408051601f1981840301815291905290506000610d13610cc360208501856142f5565b63ffffffff16610cd6604087018761429b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506129009050565b90506000610d2082612acb565b9050805160141415610da657610d3583612d71565b6001600160601b031916610d4a826000612d98565b6001600160601b03191614610da15760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d627974652073637269707420686173680000000000000060448201526064016107bd565b610e9e565b805160201415610e5657600283604051610dc091906147a2565b602060405180830381855afa158015610ddd573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e009190614282565b610e0982612dae565b14610da15760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d627974652073637269707420686173680000000000000060448201526064016107bd565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e677468000000000000000060448201526064016107bd565b6000610f03610eb060208801886144d7565b610ebd602089018961429b565b610eca60408b018b61429b565b610eda60808d0160608e016144d7565b604051602001610eef969594939291906147ae565b604051602081830303815290604052612dca565b9050600060048183610f1860208a018a6142f5565b604051602001610f3f92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610fc35760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c6564000000000000000060448201526064016107bd565b6000610fce85612df1565b82547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b0383160217835590506110176040880160208901614096565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff160217825561106660e0880160c08901614096565b60018301805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055600054600160a01b90046001600160401b03166110b35760006110d0565b6000546110d090600160a01b90046001600160401b031682614806565b6001830180546001600160401b0392909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef058361114160208a018a6142f5565b61115160408b0160208c01614096565b8461116260608d0160408e016144ad565b61117260808e0160608f01613f3a565b8d60800160208101906111859190613f3a565b8e60a001602081019061119891906144d7565b8f60c00160208101906111ab9190614096565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b0316331461128f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bd565b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b031633146113485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bd565b6113526000612e67565b565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae134868661137a612099565b6040518463ffffffff1660e01b815260040161139893929190614187565b60206040518083038186803b1580156113b057600080fd5b505af41580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e89190614282565b90506114386113fa602087018761429b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150612ec49050565b6001600160601b0319821660009081526008602052604090205460ff166001816004811115611469576114696140b1565b148061148657506002816004811115611484576114846140b1565b145b6114f85760405162461bcd60e51b815260206004820152602c60248201527f57616c6c6574206d75737420626520696e20416374697665206f72204d6f766960448201527f6e6746756473207374617465000000000000000000000000000000000000000060648201526084016107bd565b600061154661150a604089018961429b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892506130c9915050565b60608101519091506001600160401b0316156115d95782816040015182606001516040516020016115a49392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f1981840301815291815281516020928301206001600160601b03198716600090815260059093529120556115f4565b6001600160601b031984166000908152600560205260408120555b80516001600160601b031985166000908152600860205260409020805460019061162d90849061010090046001600160401b031661482c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe84846040516116979291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b15801561172557600080fd5b505af1158015611739573d6000803e3d6000fd5b5050505060208101516040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b1580156117f057600080fd5b505af1158015611804573d6000803e3d6000fd5b5050505050505050505050565b60016001600160601b0319861660009081526008602052604090205460ff166004811115611841576118416140b1565b1461188e5760405162461bcd60e51b815260206004820152601e60248201527f57616c6c6574206d75737420626520696e20416374697665207374617465000060448201526064016107bd565b6001600160601b031985166000908152600560205260409020548061191b5760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c6560448201527f740000000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b80853561192e60408801602089016142f5565b61193e6060890160408a01614310565b60405160200161197b9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146119de5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016107bd565b6000611a10600060c01b86866040516020016119fc93929190614854565b604051602081830303815290604052612acb565b90506000815111611a895760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016107bd565b808051906020012087604051602001611ab291906001600160601b031991909116815260140190565b604051602081830303815290604052805190602001201415611b3c5760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016107bd565b6001546001600160401b03600160401b90910481169084161015611ba25760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016107bd565b6000878686604051602001611bb993929190614878565b60408051808303601f19018152918152815160209283012060008181526006909352912060010154909150600160801b900463ffffffff1615611c8a5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016107bd565b600154600090600160801b90046001600160401b0316611cab576000611cc8565b600154611cc890600160801b90046001600160401b031686614806565b600154909150600160c01b90046001600160401b0316611ce8828761482c565b6001600160601b03198b1660009081526008602052604090208054600190611d1f90849061010090046001600160401b031661489c565b82546001600160401b0391821661010093840a90810290830219909116179092556001600160601b03198d166000908152600860205260409081902054919091049091169150611d759060608c01908c01614310565b6001600160401b03161015611dcc5760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016107bd565b6040805160a081018252338082526001600160401b03808a1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526006909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff928516600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d9591611efc918d918c918c91908c90899089906148c7565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03871660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b158015611f9357600080fd5b505af1158015611fa7573d6000803e3d6000fd5b5050505050505050505050505050565b6000546001600160a01b031633146120115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bd565b6001600160a01b03811661208d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107bd565b61209681612e67565b50565b6120bd60405180606001604052806000815260200160008152602001600081525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b15801561211657600080fd5b505afa15801561212a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214e9190614282565b8160000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b1580156121b057600080fd5b505afa1580156121c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e89190614282565b60208201527f0000000000000000000000000000000000000000000000000000000000000000604082015290565b6000806000612224846136de565b9150508060011461229d5760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016107bd565b60006122a98582612900565b90506122b481612df1565b925060006122c182612acb565b9050805160141461233a5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016107bd565b60208101519450505050915091565b6123746040518060800160405280600081526020016060815260200160608152602001606081525090565b8151151560008080612385876136de565b909250905060006123978360016143c9565b905084156123af576123aa6001836143e1565b6123b1565b815b6001600160401b038111156123c8576123c861432b565b6040519080825280602002602001820160405280156123f1578160200160208202803683370190505b5060208701819052516001600160401b038111156124115761241161432b565b60405190808252806020026020018201604052801561243a578160200160208202803683370190505b5060408701526020860151516001600160401b0381111561245d5761245d61432b565b604051908082528060200260200182016040528015612486578160200160208202803683370190505b5060608701526000805b838110156127c75760008060006124a78d876136f5565b92509250925060006004600085856040516020016124dc92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615612718576001810154600160e01b900463ffffffff16156125775760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016107bd565b8b60200151518614156125f25760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016107bd565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b03909216918890811061264b5761264b6143f8565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b9092046001600160401b0316918890811061268f5761268f6143f8565b6020026020010181815250508b6040015186815181106126b1576126b16143f8565b60200260200101518c6000018181516126ca91906143c9565b905250600181015460608d01518051600160a01b9092046001600160401b031691889081106126fb576126fb6143f8565b6020908102919091010152856127108161440e565b9650506127a4565b8915158b15151415801561272c57508c5184145b1561275c578c604001516001600160401b03168c60000181815161275091906143c9565b905250600199506127a4565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016107bd565b6127ae82886143c9565b96505050505080806127bf9061440e565b915050612490565b506000811161283e5760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016107bd565b841515861515146128b75760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016107bd565b5050505050505b92915050565b600080806128d285876143e1565b90506128de848261492a565b9150836128eb83836143e1565b6128f5919061493e565b925050935093915050565b606060008061290e856136de565b90925090506000198214156129705760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016107bd565b8084106129bf5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016107bd565b6000806129cd8460016143c9565b905060005b86811015612a56576129e4888361374d565b9250600019831415612a385760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016107bd565b612a4283836143c9565b915080612a4e8161440e565b9150506129d2565b50612a61878261374d565b9150600019821415612ab55760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016107bd565b612ac08782846137bc565b979650505050505050565b6060600082600881518110612ae257612ae26143f8565b0160200151835160f89190911c9150612afc826009614952565b60ff1614612b1a575050604080516020810190915260008152919050565b82600981518110612b2d57612b2d6143f8565b016020015160f81c612bd35760028160ff161015612b5b575050604080516020810190915260008152919050565b600083600a81518110612b7057612b706143f8565b016020015160f81c9050612b85600283614977565b60ff1681141580612ba3575080602014158015612ba3575080601414155b15612bbf57505060408051602081019091526000815292915050565b612bcb84600b836137bc565b949350505050565b6000612be0846008612d98565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415612cbd5783600b81518110612c3f57612c3f6143f8565b60209101015160f81c6014141580612c945750612c6a60028551612c6391906143e1565b8590612d98565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b15612cb057505060408051602081019091526000815292915050565b612bcb84600c60146137bc565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415612d5a578360018551612d1691906143e1565b81518110612d2657612d266143f8565b60209101015160f81c608714612d4d57505060408051602081019091526000815292915050565b612bcb84600b60146137bc565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000612da78383016020015190565b9392505050565b6000815160001415612dc257506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080612dfd83613886565b60c01c90506000612bcb8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160601b0319811660009081526005602052604090205480612f2b5760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016107bd565b808335612f3e60408601602087016142f5565b612f4e6060870160408801614310565b604051602001612f8b9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014612fee5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016107bd565b600080612ffa86613892565b9092509050843582148015613029575063ffffffff811661302160408701602088016142f5565b63ffffffff16145b6130c15760405162461bcd60e51b815260206004820152604160248201527f526564656d7074696f6e207472616e73616374696f6e20696e707574206d757360448201527f7420706f696e7420746f207468652077616c6c65742773206d61696e2055545860648201527f4f00000000000000000000000000000000000000000000000000000000000000608482015260a4016107bd565b505050505050565b604080516080810182526000808252602082018190529181018290526060810182905290806130f7856136de565b909250905060006131098360016143c9565b604080517f1976a914000000000000000000000000000000000000000000000000000000006020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301207f1600140000000000000000000000000000000000000000000000000000000000605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b858110156136675760006131cb8b8761374d565b905060006131da8c88846137bc565b905060006131e782612df1565b9050600061320560088085516131fd91906143e1565b8591906137bc565b90508b606001516001600160401b0316600014801561323857508051602082012088148061323857508051602082012087145b801561324d57506000826001600160401b0316115b156132725763ffffffff851660408d01526001600160401b03821660608d0152613644565b60008d8260405160200161328792919061499a565b60408051808303601f19018152918152815160209283012060008181526006909352912060010154909150600160801b900463ffffffff1615613491576000818152600660205260408120600181015481549192916132f9916001600160401b0390811691600160a01b90041661482c565b60018301549091506001600160401b038087169161332091600160401b909104168361482c565b6001600160401b0316111580156133495750806001600160401b0316856001600160401b031611155b6133e15760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016107bd565b808f6000018181516133f3919061489c565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f602001818151613437919061489c565b6001600160401b0316905250600083815260066020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff19169055886134878161440e565b9950505050613642565b60008181526007602052604090206001810154600160801b900463ffffffff166135225760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016107bd565b6001810154815460009161354a916001600160401b0391821691600160a01b9091041661482c565b60018301549091506001600160401b038087169161357191600160401b909104168361482c565b6001600160401b03161115801561359a5750806001600160401b0316856001600160401b031611155b6136325760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016107bd565b8861363c8161440e565b99505050505b505b61364e848a6143c9565b985050505050808061365f9061440e565b9150506131b7565b50600081116128b75760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016107bd565b6000806136ec836000613947565b91509150915091565b600080806137038585612d98565b92506137386137128686613ac3565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b91506137448585613ada565b90509250925092565b600061375a8260096143c9565b8351101561376b57506000196128be565b6000806137828561377d8660086143c9565b613947565b909250905060001982141561379d57600019925050506128be565b806137a98360096143c9565b6137b391906143c9565b95945050505050565b6060816137d85750604080516020810190915260008152612da7565b60006137e483856143c9565b905083811180156137f6575080855110155b6138425760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016107bd565b604051915082604083010160405282825283850182038460208701018481015b8082101561387b57815183830152602082019150613862565b505050509392505050565b60006128be8282612d98565b60008060006138a0846136de565b915050806001146139195760405162461bcd60e51b815260206004820152602f60248201527f526564656d7074696f6e207472616e73616374696f6e206d757374206861766560448201527f20612073696e676c6520696e707574000000000000000000000000000000000060648201526084016107bd565b60006139258582613b25565b905061393081613cda565b935061393e61371282613ce7565b92505050915091565b60008060006139568585613cf4565b905060ff8116613988576000858581518110613974576139746143f8565b016020015190935060f81c9150613abc9050565b83613994826001614952565b60ff166139a191906143c9565b855110156139b85760001960009250925050613abc565b60008160ff16600214156139fd576139f26139de6139d78760016143c9565b8890612d98565b62ffff0060e882901c1660f89190911c1790565b61ffff169050613ab2565b8160ff1660041415613a2757613a1a6137126139d78760016143c9565b63ffffffff169050613ab2565b8160ff1660081415613ab257613aa6613a446139d78760016143c9565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b6000612da7613ad38360206143c9565b8490612d98565b6000806000613ae98585613d80565b9092509050600019821415613b0457600019925050506128be565b80613b108360256143c9565b613b1a91906143c9565b6137b39060046143c9565b6060600080613b33856136de565b9092509050600019821415613b955760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016107bd565b808410613be45760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016107bd565b600080613bf28460016143c9565b905060005b86811015613c7b57613c098883613ada565b9250600019831415613c5d5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016107bd565b613c6783836143c9565b915080613c738161440e565b915050613bf7565b50613c868782613ada565b9150600019821415612ab55760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016107bd565b60208101516000906128be565b60006128be826020612d98565b6000828281518110613d0857613d086143f8565b60209101015160f81c60ff1415613d21575060086128be565b828281518110613d3357613d336143f8565b60209101015160f81c60fe1415613d4c575060046128be565b828281518110613d5e57613d5e6143f8565b60209101015160f81c60fd1415613d77575060026128be565b50600092915050565b600080613d8e8360256143c9565b84511015613da3575060001990506000613abc565b600080613db58661377d8760246143c9565b9097909650945050505050565b600060208284031215613dd457600080fd5b5035919050565b600060808284031215613ded57600080fd5b50919050565b600060608284031215613ded57600080fd5b600080600060a08486031215613e1a57600080fd5b83356001600160401b0380821115613e3157600080fd5b613e3d87838801613ddb565b94506020860135915080821115613e5357600080fd5b50613e6086828701613df3565b9250506137448560408601613df3565b600080828403610100811215613e8557600080fd5b83356001600160401b03811115613e9b57600080fd5b613ea786828701613ddb565b93505060e0601f1982011215613ebc57600080fd5b506020830190509250929050565b80356001600160a01b0381168114613ee157600080fd5b919050565b60008060408385031215613ef957600080fd5b613f0283613eca565b915060208301358015158114613f1757600080fd5b809150509250929050565b80356001600160601b031981168114613ee157600080fd5b600060208284031215613f4c57600080fd5b612da782613f22565b60008060008060c08587031215613f6b57600080fd5b84356001600160401b0380821115613f8257600080fd5b613f8e88838901613ddb565b95506020870135915080821115613fa457600080fd5b50613fb187828801613df3565b935050613fc18660408701613df3565b9150613fcf60a08601613f22565b905092959194509250565b80356001600160401b0381168114613ee157600080fd5b600080600080600060c0868803121561400957600080fd5b61401286613f22565b94506140218760208801613df3565b935060808601356001600160401b038082111561403d57600080fd5b818801915088601f83011261405157600080fd5b81358181111561406057600080fd5b89602082850101111561407257600080fd5b60208301955080945050505061408a60a08701613fda565b90509295509295909350565b6000602082840312156140a857600080fd5b612da782613eca565b634e487b7160e01b600052602160045260246000fd5b60408101600584106140e957634e487b7160e01b600052602160045260246000fd5b9281526001600160401b039190911660209091015290565b80356001600160e01b031981168114613ee157600080fd5b6000808335601e1984360301811261413057600080fd5b83016020810192503590506001600160401b0381111561414f57600080fd5b803603831315613abc57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a0815260006001600160e01b0319806141a087614101565b1660a08401526141b36020870187614119565b608060c08601526141c96101208601828461415e565b9150506141d96040880188614119565b858303609f190160e08701526141f083828461415e565b925050508161420160608901614101565b16610100850152838103602085015261421a8687614119565b92506060825261422e60608301848361415e565b925050602086013560208201526142486040870187614119565b828403604084015261425b84828461415e565b945050505050612bcb60408301848051825260208082015190830152604090810151910152565b60006020828403121561429457600080fd5b5051919050565b6000808335601e198436030181126142b257600080fd5b8301803591506001600160401b038211156142cc57600080fd5b602001915036819003821315613abc57600080fd5b803563ffffffff81168114613ee157600080fd5b60006020828403121561430757600080fd5b612da7826142e1565b60006020828403121561432257600080fd5b612da782613fda565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561435357600080fd5b604051606081018181106001600160401b038211171561438357634e487b7160e01b600052604160045260246000fd5b60405282358152614396602084016142e1565b60208201526143a760408401613fda565b60408201529392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156143dc576143dc6143b3565b500190565b6000828210156143f3576143f36143b3565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415614422576144226143b3565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561446b5781516001600160a01b031684529284019290840190600101614446565b5050508381038285015284518082528583019183019060005b818110156144a057835183529284019291840191600101614484565b5090979650505050505050565b6000602082840312156144bf57600080fd5b81356001600160c01b031981168114612da757600080fd5b6000602082840312156144e957600080fd5b612da782614101565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006145c66145b9614590602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526146856145b961459061456761465c601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061475b61473260068301614633565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b81811015614788576020818501810151868301520161476e565b81811115614797576000828601525b509290920192915050565b6000612da78284614767565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680614820576148206147f0565b92169190910492915050565b60006001600160401b038381169083168181101561484c5761484c6143b3565b039392505050565b6001600160c01b031984168152818360088301376000910160080190815292915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b038083168185168083038211156148be576148be6143b3565b01949350505050565b6bffffffffffffffffffffffff198816815260c0602082015260006148f060c08301888a61415e565b6001600160a01b03969096166040830152506001600160401b039384166060820152918316608083015290911660a0909101529392505050565b600082614939576149396147f0565b500690565b60008261494d5761494d6147f0565b500490565b600060ff821660ff84168060ff0382111561496f5761496f6143b3565b019392505050565b600060ff821660ff841680821015614991576149916143b3565b90039392505050565b6001600160601b0319831681526000612bcb601483018461476756fea264697066735822122004d089b6d7ee7df533a75e96055f0d9c61bafe7e0707287b2a83e34f7a81bbd664736f6c63430008090033",
864
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101985760003560e01c80638da5cb5b116100e3578063cb7f3a091161008c578063e65e19d511610066578063e65e19d51461056d578063e95eb7a8146105ae578063f2fde38b146105c857600080fd5b8063cb7f3a0914610514578063d6eccdf014610527578063e53c0b551461053a57600080fd5b8063b34b3216116100bd578063b34b3216146104c0578063b59589d1146104d3578063bdf9fca9146104fa57600080fd5b80638da5cb5b146103e0578063a588f059146103f1578063b02c43d01461040b57600080fd5b80635c0b481211610145578063715018a61161011f578063715018a61461039157806376cdb03b1461039957806383a43428146103c057600080fd5b80635c0b48121461032c57806360d712fc1461033f57806361d027b31461035257600080fd5b80631fff4e70116101765780631fff4e70146102d95780632bb818c2146102f057806359a9d90a1461031757600080fd5b806303d952f71461019d578063079bf52c146102485780630b6ba19d1461027a575b600080fd5b6101fc6101ab366004613dc2565b600660205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b60005461026290600160a01b90046001600160401b031681565b6040516001600160401b03909116815260200161023f565b6101fc610288366004613dc2565b600760205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b6102e260025481565b60405190815260200161023f565b6102e27f000000000000000000000000000000000000000000000000000000000000000081565b61032a610325366004613e05565b6105db565b005b61032a61033a366004613e70565b610b99565b61032a61034d366004613ee6565b611235565b6103797f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161023f565b61032a6112ee565b6103797f000000000000000000000000000000000000000000000000000000000000000081565b6102e26103ce366004613f3a565b60056020526000908152604090205481565b6000546001600160a01b0316610379565b60015461026290600160c01b90046001600160401b031681565b610470610419366004613dc2565b600460205260009081526040902080546001909101546001600160a01b03808316926001600160401b03600160a01b80830482169463ffffffff600160e01b94859004811695821694928204909316929190041686565b604080516001600160a01b0397881681526001600160401b03968716602082015263ffffffff958616918101919091529590921660608601529290921660808401521660a082015260c00161023f565b61032a6104ce366004613f55565b611354565b6103797f000000000000000000000000000000000000000000000000000000000000000081565b60015461026290600160401b90046001600160401b031681565b600154610262906001600160401b031681565b61032a610535366004613ff1565b611811565b61055d610548366004614096565b60036020526000908152604090205460ff1681565b604051901515815260200161023f565b6105a061057b366004613f3a565b60086020526000908152604090205460ff81169061010090046001600160401b031682565b60405161023f9291906140c7565b60015461026290600160801b90046001600160401b031681565b61032a6105d6366004614096565b611fb7565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348585610601612099565b6040518463ffffffff1660e01b815260040161061f93929190614187565b60206040518083038186803b15801561063757600080fd5b505af415801561064b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066f9190614282565b90506000806106be610684604088018861429b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061221692505050565b60408051606081018252600080825260208083018290528284018290526001600160601b0319861682526005905291909120549294509092509080156107d8578086356107116040890160208a016142f5565b61072160608a0160408b01614310565b60405160200161075e9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146107c65760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064015b60405180910390fd5b6107d536879003870187614341565b91505b60006108266107ea60208b018b61429b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250612349915050565b9050600080806108498460000151886001600160401b03168660400151516128c4565b60015491935091506001600160401b031661086482846143c9565b11156108b25760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064016107bd565b60005b8460400151518110156109a057600060018660400151516108d691906143e1565b82146108e257836108ec565b6108ec83856143c9565b90508086606001518381518110610905576109056143f8565b602002602001015187604001518481518110610923576109236143f8565b602002602001015161093591906143e1565b61093f91906143e1565b86604001518381518110610955576109556143f8565b60200260200101818152505085606001518281518110610977576109776143f8565b60200260200101518561098a91906143c9565b94505080806109989061440e565b9150506108b5565b5060408051602081018b90526000918101919091526001600160c01b031960c089901b166044820152604c0160408051808303601f1901815282825280516020918201206001600160601b03198c1660008181526005845284902091909155835282018b90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a1602084015160408086015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263266a123a92610a9e92600401614429565b600060405180830381600087803b158015610ab857600080fd5b505af1158015610acc573d6000803e3d6000fd5b50506040517f5b86f5990000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169250635b86f5999150604401600060405180830381600087803b158015610b7357600080fd5b505af1158015610b87573d6000803e3d6000fd5b50505050505050505050505050505050565b6000610bab60e0830160c08401614096565b6001600160a01b03161480610bed575060036000610bcf60e0840160c08501614096565b6001600160a01b0316815260208101919091526040016000205460ff165b610c395760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f74207472757374656400000000000000000000000060448201526064016107bd565b6000610c4b6040830160208401614096565b610c5b60608401604085016144ad565b610c6b6080850160608601613f3a565b610c7b60a0860160808701613f3a565b610c8b60c0870160a088016144d7565b604051602001610c9f9594939291906144f2565b60408051601f1981840301815291905290506000610d13610cc360208501856142f5565b63ffffffff16610cd6604087018761429b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506129009050565b90506000610d2082612acb565b9050805160141415610da657610d3583612d71565b6001600160601b031916610d4a826000612d98565b6001600160601b03191614610da15760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d627974652073637269707420686173680000000000000060448201526064016107bd565b610e9e565b805160201415610e5657600283604051610dc091906147a2565b602060405180830381855afa158015610ddd573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e009190614282565b610e0982612dae565b14610da15760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d627974652073637269707420686173680000000000000060448201526064016107bd565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e677468000000000000000060448201526064016107bd565b6000610f03610eb060208801886144d7565b610ebd602089018961429b565b610eca60408b018b61429b565b610eda60808d0160608e016144d7565b604051602001610eef969594939291906147ae565b604051602081830303815290604052612dca565b9050600060048183610f1860208a018a6142f5565b604051602001610f3f92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615610fc35760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c6564000000000000000060448201526064016107bd565b6000610fce85612df1565b82547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b0383160217835590506110176040880160208901614096565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff160217825561106660e0880160c08901614096565b60018301805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055600054600160a01b90046001600160401b03166110b35760006110d0565b6000546110d090600160a01b90046001600160401b031682614806565b6001830180546001600160401b0392909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef058361114160208a018a6142f5565b61115160408b0160208c01614096565b8461116260608d0160408e016144ad565b61117260808e0160608f01613f3a565b8d60800160208101906111859190613f3a565b8e60a001602081019061119891906144d7565b8f60c00160208101906111ab9190614096565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b0316331461128f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bd565b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000546001600160a01b031633146113485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bd565b6113526000612e67565b565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae134868661137a612099565b6040518463ffffffff1660e01b815260040161139893929190614187565b60206040518083038186803b1580156113b057600080fd5b505af41580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e89190614282565b90506114386113fa602087018761429b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150612ec49050565b6001600160601b0319821660009081526008602052604090205460ff166001816004811115611469576114696140b1565b148061148657506002816004811115611484576114846140b1565b145b6114f85760405162461bcd60e51b815260206004820152602c60248201527f57616c6c6574206d75737420626520696e20416374697665206f72204d6f766960448201527f6e6746756473207374617465000000000000000000000000000000000000000060648201526084016107bd565b600061154661150a604089018961429b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892506130c9915050565b60608101519091506001600160401b0316156115d95782816040015182606001516040516020016115a49392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f1981840301815291815281516020928301206001600160601b03198716600090815260059093529120556115f4565b6001600160601b031984166000908152600560205260408120555b80516001600160601b031985166000908152600860205260409020805460019061162d90849061010090046001600160401b031661482c565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe84846040516116979291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b15801561172557600080fd5b505af1158015611739573d6000803e3d6000fd5b5050505060208101516040517f56a6d9ef0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b1580156117f057600080fd5b505af1158015611804573d6000803e3d6000fd5b5050505050505050505050565b60016001600160601b0319861660009081526008602052604090205460ff166004811115611841576118416140b1565b1461188e5760405162461bcd60e51b815260206004820152601e60248201527f57616c6c6574206d75737420626520696e20416374697665207374617465000060448201526064016107bd565b6001600160601b031985166000908152600560205260409020548061191b5760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c6560448201527f740000000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b80853561192e60408801602089016142f5565b61193e6060890160408a01614310565b60405160200161197b9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146119de5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016107bd565b6000611a10600060c01b86866040516020016119fc93929190614854565b604051602081830303815290604052612acb565b90506000815111611a895760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016107bd565b808051906020012087604051602001611ab291906001600160601b031991909116815260140190565b604051602081830303815290604052805190602001201415611b3c5760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016107bd565b6001546001600160401b03600160401b90910481169084161015611ba25760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016107bd565b6000878686604051602001611bb993929190614878565b60408051808303601f19018152918152815160209283012060008181526006909352912060010154909150600160801b900463ffffffff1615611c8a5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016107bd565b600154600090600160801b90046001600160401b0316611cab576000611cc8565b600154611cc890600160801b90046001600160401b031686614806565b600154909150600160c01b90046001600160401b0316611ce8828761482c565b6001600160601b03198b1660009081526008602052604090208054600190611d1f90849061010090046001600160401b031661489c565b82546001600160401b0391821661010093840a90810290830219909116179092556001600160601b03198d166000908152600860205260409081902054919091049091169150611d759060608c01908c01614310565b6001600160401b03161015611dcc5760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016107bd565b6040805160a081018252338082526001600160401b03808a1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526006909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff928516600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d9591611efc918d918c918c91908c90899089906148c7565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03871660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b158015611f9357600080fd5b505af1158015611fa7573d6000803e3d6000fd5b5050505050505050505050505050565b6000546001600160a01b031633146120115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bd565b6001600160a01b03811661208d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107bd565b61209681612e67565b50565b6120bd60405180606001604052806000815260200160008152602001600081525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b15801561211657600080fd5b505afa15801561212a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214e9190614282565b8160000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b1580156121b057600080fd5b505afa1580156121c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e89190614282565b60208201527f0000000000000000000000000000000000000000000000000000000000000000604082015290565b6000806000612224846136de565b9150508060011461229d5760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f757470757400000000000000000000000000000000000000000060648201526084016107bd565b60006122a98582612900565b90506122b481612df1565b925060006122c182612acb565b9050805160141461233a5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f766520323020627974657300000000000000000000000000000000000000000060648201526084016107bd565b60208101519450505050915091565b6123746040518060800160405280600081526020016060815260200160608152602001606081525090565b8151151560008080612385876136de565b909250905060006123978360016143c9565b905084156123af576123aa6001836143e1565b6123b1565b815b6001600160401b038111156123c8576123c861432b565b6040519080825280602002602001820160405280156123f1578160200160208202803683370190505b5060208701819052516001600160401b038111156124115761241161432b565b60405190808252806020026020018201604052801561243a578160200160208202803683370190505b5060408701526020860151516001600160401b0381111561245d5761245d61432b565b604051908082528060200260200182016040528015612486578160200160208202803683370190505b5060608701526000805b838110156127c75760008060006124a78d876136f5565b92509250925060006004600085856040516020016124dc92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615612718576001810154600160e01b900463ffffffff16156125775760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c7265616479207377657074000000000000000000000060448201526064016107bd565b8b60200151518614156125f25760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016107bd565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b03909216918890811061264b5761264b6143f8565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b9092046001600160401b0316918890811061268f5761268f6143f8565b6020026020010181815250508b6040015186815181106126b1576126b16143f8565b60200260200101518c6000018181516126ca91906143c9565b905250600181015460608d01518051600160a01b9092046001600160401b031691889081106126fb576126fb6143f8565b6020908102919091010152856127108161440e565b9650506127a4565b8915158b15151415801561272c57508c5184145b1561275c578c604001516001600160401b03168c60000181815161275091906143c9565b905250600199506127a4565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e7075742074797065000000000000000000000000000060448201526064016107bd565b6127ae82886143c9565b96505050505080806127bf9061440e565b915050612490565b506000811161283e5760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f7369740000000000000000000000000060648201526084016107bd565b841515861515146128b75760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e7075747300000000000060648201526084016107bd565b5050505050505b92915050565b600080806128d285876143e1565b90506128de848261492a565b9150836128eb83836143e1565b6128f5919061493e565b925050935093915050565b606060008061290e856136de565b90925090506000198214156129705760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016107bd565b8084106129bf5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e00000000000000000000000000000060448201526064016107bd565b6000806129cd8460016143c9565b905060005b86811015612a56576129e4888361374d565b9250600019831415612a385760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016107bd565b612a4283836143c9565b915080612a4e8161440e565b9150506129d2565b50612a61878261374d565b9150600019821415612ab55760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b657900000000000060448201526064016107bd565b612ac08782846137bc565b979650505050505050565b6060600082600881518110612ae257612ae26143f8565b0160200151835160f89190911c9150612afc826009614952565b60ff1614612b1a575050604080516020810190915260008152919050565b82600981518110612b2d57612b2d6143f8565b016020015160f81c612bd35760028160ff161015612b5b575050604080516020810190915260008152919050565b600083600a81518110612b7057612b706143f8565b016020015160f81c9050612b85600283614977565b60ff1681141580612ba3575080602014158015612ba3575080601414155b15612bbf57505060408051602081019091526000815292915050565b612bcb84600b836137bc565b949350505050565b6000612be0846008612d98565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415612cbd5783600b81518110612c3f57612c3f6143f8565b60209101015160f81c6014141580612c945750612c6a60028551612c6391906143e1565b8590612d98565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b15612cb057505060408051602081019091526000815292915050565b612bcb84600c60146137bc565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415612d5a578360018551612d1691906143e1565b81518110612d2657612d266143f8565b60209101015160f81c608714612d4d57505060408051602081019091526000815292915050565b612bcb84600b60146137bc565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000612da78383016020015190565b9392505050565b6000815160001415612dc257506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080612dfd83613886565b60c01c90506000612bcb8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160601b0319811660009081526005602052604090205480612f2b5760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016107bd565b808335612f3e60408601602087016142f5565b612f4e6060870160408801614310565b604051602001612f8b9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014612fee5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016107bd565b600080612ffa86613892565b9092509050843582148015613029575063ffffffff811661302160408701602088016142f5565b63ffffffff16145b6130c15760405162461bcd60e51b815260206004820152604160248201527f526564656d7074696f6e207472616e73616374696f6e20696e707574206d757360448201527f7420706f696e7420746f207468652077616c6c65742773206d61696e2055545860648201527f4f00000000000000000000000000000000000000000000000000000000000000608482015260a4016107bd565b505050505050565b604080516080810182526000808252602082018190529181018290526060810182905290806130f7856136de565b909250905060006131098360016143c9565b604080517f1976a914000000000000000000000000000000000000000000000000000000006020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301207f1600140000000000000000000000000000000000000000000000000000000000605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b858110156136675760006131cb8b8761374d565b905060006131da8c88846137bc565b905060006131e782612df1565b9050600061320560088085516131fd91906143e1565b8591906137bc565b90508b606001516001600160401b0316600014801561323857508051602082012088148061323857508051602082012087145b801561324d57506000826001600160401b0316115b156132725763ffffffff851660408d01526001600160401b03821660608d0152613644565b60008d8260405160200161328792919061499a565b60408051808303601f19018152918152815160209283012060008181526006909352912060010154909150600160801b900463ffffffff1615613491576000818152600660205260408120600181015481549192916132f9916001600160401b0390811691600160a01b90041661482c565b60018301549091506001600160401b038087169161332091600160401b909104168361482c565b6001600160401b0316111580156133495750806001600160401b0316856001600160401b031611155b6133e15760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016107bd565b808f6000018181516133f3919061489c565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f602001818151613437919061489c565b6001600160401b0316905250600083815260066020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff19169055886134878161440e565b9950505050613642565b60008181526007602052604090206001810154600160801b900463ffffffff166135225760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016107bd565b6001810154815460009161354a916001600160401b0391821691600160a01b9091041661482c565b60018301549091506001600160401b038087169161357191600160401b909104168361482c565b6001600160401b03161115801561359a5750806001600160401b0316856001600160401b031611155b6136325760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016107bd565b8861363c8161440e565b99505050505b505b61364e848a6143c9565b985050505050808061365f9061440e565b9150506131b7565b50600081116128b75760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016107bd565b6000806136ec836000613947565b91509150915091565b600080806137038585612d98565b92506137386137128686613ac3565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b91506137448585613ada565b90509250925092565b600061375a8260096143c9565b8351101561376b57506000196128be565b6000806137828561377d8660086143c9565b613947565b909250905060001982141561379d57600019925050506128be565b806137a98360096143c9565b6137b391906143c9565b95945050505050565b6060816137d85750604080516020810190915260008152612da7565b60006137e483856143c9565b905083811180156137f6575080855110155b6138425760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016107bd565b604051915082604083010160405282825283850182038460208701018481015b8082101561387b57815183830152602082019150613862565b505050509392505050565b60006128be8282612d98565b60008060006138a0846136de565b915050806001146139195760405162461bcd60e51b815260206004820152602f60248201527f526564656d7074696f6e207472616e73616374696f6e206d757374206861766560448201527f20612073696e676c6520696e707574000000000000000000000000000000000060648201526084016107bd565b60006139258582613b25565b905061393081613cda565b935061393e61371282613ce7565b92505050915091565b60008060006139568585613cf4565b905060ff8116613988576000858581518110613974576139746143f8565b016020015190935060f81c9150613abc9050565b83613994826001614952565b60ff166139a191906143c9565b855110156139b85760001960009250925050613abc565b60008160ff16600214156139fd576139f26139de6139d78760016143c9565b8890612d98565b62ffff0060e882901c1660f89190911c1790565b61ffff169050613ab2565b8160ff1660041415613a2757613a1a6137126139d78760016143c9565b63ffffffff169050613ab2565b8160ff1660081415613ab257613aa6613a446139d78760016143c9565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b6000612da7613ad38360206143c9565b8490612d98565b6000806000613ae98585613d80565b9092509050600019821415613b0457600019925050506128be565b80613b108360256143c9565b613b1a91906143c9565b6137b39060046143c9565b6060600080613b33856136de565b9092509050600019821415613b955760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b60648201526084016107bd565b808410613be45760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016107bd565b600080613bf28460016143c9565b905060005b86811015613c7b57613c098883613ada565b9250600019831415613c5d5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016107bd565b613c6783836143c9565b915080613c738161440e565b915050613bf7565b50613c868782613ada565b9150600019821415612ab55760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016107bd565b60208101516000906128be565b60006128be826020612d98565b6000828281518110613d0857613d086143f8565b60209101015160f81c60ff1415613d21575060086128be565b828281518110613d3357613d336143f8565b60209101015160f81c60fe1415613d4c575060046128be565b828281518110613d5e57613d5e6143f8565b60209101015160f81c60fd1415613d77575060026128be565b50600092915050565b600080613d8e8360256143c9565b84511015613da3575060001990506000613abc565b600080613db58661377d8760246143c9565b9097909650945050505050565b600060208284031215613dd457600080fd5b5035919050565b600060808284031215613ded57600080fd5b50919050565b600060608284031215613ded57600080fd5b600080600060a08486031215613e1a57600080fd5b83356001600160401b0380821115613e3157600080fd5b613e3d87838801613ddb565b94506020860135915080821115613e5357600080fd5b50613e6086828701613df3565b9250506137448560408601613df3565b600080828403610100811215613e8557600080fd5b83356001600160401b03811115613e9b57600080fd5b613ea786828701613ddb565b93505060e0601f1982011215613ebc57600080fd5b506020830190509250929050565b80356001600160a01b0381168114613ee157600080fd5b919050565b60008060408385031215613ef957600080fd5b613f0283613eca565b915060208301358015158114613f1757600080fd5b809150509250929050565b80356001600160601b031981168114613ee157600080fd5b600060208284031215613f4c57600080fd5b612da782613f22565b60008060008060c08587031215613f6b57600080fd5b84356001600160401b0380821115613f8257600080fd5b613f8e88838901613ddb565b95506020870135915080821115613fa457600080fd5b50613fb187828801613df3565b935050613fc18660408701613df3565b9150613fcf60a08601613f22565b905092959194509250565b80356001600160401b0381168114613ee157600080fd5b600080600080600060c0868803121561400957600080fd5b61401286613f22565b94506140218760208801613df3565b935060808601356001600160401b038082111561403d57600080fd5b818801915088601f83011261405157600080fd5b81358181111561406057600080fd5b89602082850101111561407257600080fd5b60208301955080945050505061408a60a08701613fda565b90509295509295909350565b6000602082840312156140a857600080fd5b612da782613eca565b634e487b7160e01b600052602160045260246000fd5b60408101600584106140e957634e487b7160e01b600052602160045260246000fd5b9281526001600160401b039190911660209091015290565b80356001600160e01b031981168114613ee157600080fd5b6000808335601e1984360301811261413057600080fd5b83016020810192503590506001600160401b0381111561414f57600080fd5b803603831315613abc57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a0815260006001600160e01b0319806141a087614101565b1660a08401526141b36020870187614119565b608060c08601526141c96101208601828461415e565b9150506141d96040880188614119565b858303609f190160e08701526141f083828461415e565b925050508161420160608901614101565b16610100850152838103602085015261421a8687614119565b92506060825261422e60608301848361415e565b925050602086013560208201526142486040870187614119565b828403604084015261425b84828461415e565b945050505050612bcb60408301848051825260208082015190830152604090810151910152565b60006020828403121561429457600080fd5b5051919050565b6000808335601e198436030181126142b257600080fd5b8301803591506001600160401b038211156142cc57600080fd5b602001915036819003821315613abc57600080fd5b803563ffffffff81168114613ee157600080fd5b60006020828403121561430757600080fd5b612da7826142e1565b60006020828403121561432257600080fd5b612da782613fda565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561435357600080fd5b604051606081018181106001600160401b038211171561438357634e487b7160e01b600052604160045260246000fd5b60405282358152614396602084016142e1565b60208201526143a760408401613fda565b60408201529392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156143dc576143dc6143b3565b500190565b6000828210156143f3576143f36143b3565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415614422576144226143b3565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561446b5781516001600160a01b031684529284019290840190600101614446565b5050508381038285015284518082528583019183019060005b818110156144a057835183529284019291840191600101614484565b5090979650505050505050565b6000602082840312156144bf57600080fd5b81356001600160c01b031981168114612da757600080fd5b6000602082840312156144e957600080fd5b612da782614101565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006145c66145b9614590602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f630000000000000000000000000000000000000000000000000000000000000060158201526146856145b961459061456761465c601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b6005820152905061475b61473260068301614633565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b81811015614788576020818501810151868301520161476e565b81811115614797576000828601525b509290920192915050565b6000612da78284614767565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680614820576148206147f0565b92169190910492915050565b60006001600160401b038381169083168181101561484c5761484c6143b3565b039392505050565b6001600160c01b031984168152818360088301376000910160080190815292915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b038083168185168083038211156148be576148be6143b3565b01949350505050565b6bffffffffffffffffffffffff198816815260c0602082015260006148f060c08301888a61415e565b6001600160a01b03969096166040830152506001600160401b039384166060820152918316608083015290911660a0909101529392505050565b600082614939576149396147f0565b500690565b60008261494d5761494d6147f0565b500490565b600060ff821660ff84168060ff0382111561496f5761496f6143b3565b019392505050565b600060ff821660ff841680821015614991576149916143b3565b90039392505050565b6001600160601b0319831681526000612bcb601483018461476756fea264697066735822122004d089b6d7ee7df533a75e96055f0d9c61bafe7e0707287b2a83e34f7a81bbd664736f6c63430008090033",
865
+ "linkReferences": {
866
+ "contracts/bridge/BitcoinTx.sol": {
867
+ "BitcoinTx": [
868
+ {
869
+ "length": 20,
870
+ "start": 2254
871
+ },
872
+ {
873
+ "length": 20,
874
+ "start": 5703
875
+ }
876
+ ]
877
+ }
878
+ },
879
+ "deployedLinkReferences": {
880
+ "contracts/bridge/BitcoinTx.sol": {
881
+ "BitcoinTx": [
882
+ {
883
+ "length": 20,
884
+ "start": 1503
885
+ },
886
+ {
887
+ "length": 20,
888
+ "start": 4952
889
+ }
890
+ ]
891
+ }
892
+ }
176
893
  }