@hyperlane-xyz/multicollateral 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/LICENSE.md +193 -0
  2. package/contracts/MultiCollateral.sol +349 -0
  3. package/contracts/MultiCollateralRoutingFee.sol +129 -0
  4. package/contracts/interfaces/IMultiCollateralFee.sol +13 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/typechain/MultiCollateral.d.ts +1195 -0
  10. package/dist/typechain/MultiCollateral.d.ts.map +1 -0
  11. package/dist/typechain/MultiCollateral.js +2 -0
  12. package/dist/typechain/MultiCollateral.js.map +1 -0
  13. package/dist/typechain/MultiCollateralRoutingFee.d.ts +179 -0
  14. package/dist/typechain/MultiCollateralRoutingFee.d.ts.map +1 -0
  15. package/dist/typechain/MultiCollateralRoutingFee.js +2 -0
  16. package/dist/typechain/MultiCollateralRoutingFee.js.map +1 -0
  17. package/dist/typechain/common.d.ts +22 -0
  18. package/dist/typechain/common.d.ts.map +1 -0
  19. package/dist/typechain/common.js +2 -0
  20. package/dist/typechain/common.js.map +1 -0
  21. package/dist/typechain/factories/MultiCollateralRoutingFee__factory.d.ts +216 -0
  22. package/dist/typechain/factories/MultiCollateralRoutingFee__factory.d.ts.map +1 -0
  23. package/dist/typechain/factories/MultiCollateralRoutingFee__factory.js +292 -0
  24. package/dist/typechain/factories/MultiCollateralRoutingFee__factory.js.map +1 -0
  25. package/dist/typechain/factories/MultiCollateral__factory.d.ts +1413 -0
  26. package/dist/typechain/factories/MultiCollateral__factory.d.ts.map +1 -0
  27. package/dist/typechain/factories/MultiCollateral__factory.js +1855 -0
  28. package/dist/typechain/factories/MultiCollateral__factory.js.map +1 -0
  29. package/dist/typechain/factories/index.d.ts +3 -0
  30. package/dist/typechain/factories/index.d.ts.map +1 -0
  31. package/dist/typechain/factories/index.js +6 -0
  32. package/dist/typechain/factories/index.js.map +1 -0
  33. package/dist/typechain/index.d.ts +6 -0
  34. package/dist/typechain/index.d.ts.map +1 -0
  35. package/dist/typechain/index.js +4 -0
  36. package/dist/typechain/index.js.map +1 -0
  37. package/package.json +51 -0
@@ -0,0 +1,1855 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import { utils, Contract, ContractFactory, } from "ethers";
5
+ const _abi = [
6
+ {
7
+ type: "constructor",
8
+ inputs: [
9
+ {
10
+ name: "erc20",
11
+ type: "address",
12
+ internalType: "address",
13
+ },
14
+ {
15
+ name: "_scaleNumerator",
16
+ type: "uint256",
17
+ internalType: "uint256",
18
+ },
19
+ {
20
+ name: "_scaleDenominator",
21
+ type: "uint256",
22
+ internalType: "uint256",
23
+ },
24
+ {
25
+ name: "_mailbox",
26
+ type: "address",
27
+ internalType: "address",
28
+ },
29
+ ],
30
+ stateMutability: "nonpayable",
31
+ },
32
+ {
33
+ type: "function",
34
+ name: "PACKAGE_VERSION",
35
+ inputs: [],
36
+ outputs: [
37
+ {
38
+ name: "",
39
+ type: "string",
40
+ internalType: "string",
41
+ },
42
+ ],
43
+ stateMutability: "view",
44
+ },
45
+ {
46
+ type: "function",
47
+ name: "addBridge",
48
+ inputs: [
49
+ {
50
+ name: "domain",
51
+ type: "uint32",
52
+ internalType: "uint32",
53
+ },
54
+ {
55
+ name: "bridge",
56
+ type: "address",
57
+ internalType: "contract ITokenBridge",
58
+ },
59
+ ],
60
+ outputs: [],
61
+ stateMutability: "nonpayable",
62
+ },
63
+ {
64
+ type: "function",
65
+ name: "addRebalancer",
66
+ inputs: [
67
+ {
68
+ name: "rebalancer",
69
+ type: "address",
70
+ internalType: "address",
71
+ },
72
+ ],
73
+ outputs: [],
74
+ stateMutability: "nonpayable",
75
+ },
76
+ {
77
+ type: "function",
78
+ name: "allowance",
79
+ inputs: [
80
+ {
81
+ name: "owner",
82
+ type: "address",
83
+ internalType: "address",
84
+ },
85
+ {
86
+ name: "spender",
87
+ type: "address",
88
+ internalType: "address",
89
+ },
90
+ ],
91
+ outputs: [
92
+ {
93
+ name: "",
94
+ type: "uint256",
95
+ internalType: "uint256",
96
+ },
97
+ ],
98
+ stateMutability: "view",
99
+ },
100
+ {
101
+ type: "function",
102
+ name: "allowedBridges",
103
+ inputs: [
104
+ {
105
+ name: "domain",
106
+ type: "uint32",
107
+ internalType: "uint32",
108
+ },
109
+ ],
110
+ outputs: [
111
+ {
112
+ name: "",
113
+ type: "address[]",
114
+ internalType: "address[]",
115
+ },
116
+ ],
117
+ stateMutability: "view",
118
+ },
119
+ {
120
+ type: "function",
121
+ name: "allowedRebalancers",
122
+ inputs: [],
123
+ outputs: [
124
+ {
125
+ name: "",
126
+ type: "address[]",
127
+ internalType: "address[]",
128
+ },
129
+ ],
130
+ stateMutability: "view",
131
+ },
132
+ {
133
+ type: "function",
134
+ name: "allowedRecipient",
135
+ inputs: [
136
+ {
137
+ name: "domain",
138
+ type: "uint32",
139
+ internalType: "uint32",
140
+ },
141
+ ],
142
+ outputs: [
143
+ {
144
+ name: "",
145
+ type: "bytes32",
146
+ internalType: "bytes32",
147
+ },
148
+ ],
149
+ stateMutability: "view",
150
+ },
151
+ {
152
+ type: "function",
153
+ name: "approve",
154
+ inputs: [
155
+ {
156
+ name: "spender",
157
+ type: "address",
158
+ internalType: "address",
159
+ },
160
+ {
161
+ name: "amount",
162
+ type: "uint256",
163
+ internalType: "uint256",
164
+ },
165
+ ],
166
+ outputs: [
167
+ {
168
+ name: "",
169
+ type: "bool",
170
+ internalType: "bool",
171
+ },
172
+ ],
173
+ stateMutability: "nonpayable",
174
+ },
175
+ {
176
+ type: "function",
177
+ name: "approveTokenForBridge",
178
+ inputs: [
179
+ {
180
+ name: "token",
181
+ type: "address",
182
+ internalType: "contract IERC20",
183
+ },
184
+ {
185
+ name: "bridge",
186
+ type: "address",
187
+ internalType: "contract ITokenBridge",
188
+ },
189
+ ],
190
+ outputs: [],
191
+ stateMutability: "nonpayable",
192
+ },
193
+ {
194
+ type: "function",
195
+ name: "asset",
196
+ inputs: [],
197
+ outputs: [
198
+ {
199
+ name: "",
200
+ type: "address",
201
+ internalType: "address",
202
+ },
203
+ ],
204
+ stateMutability: "view",
205
+ },
206
+ {
207
+ type: "function",
208
+ name: "balanceOf",
209
+ inputs: [
210
+ {
211
+ name: "account",
212
+ type: "address",
213
+ internalType: "address",
214
+ },
215
+ ],
216
+ outputs: [
217
+ {
218
+ name: "",
219
+ type: "uint256",
220
+ internalType: "uint256",
221
+ },
222
+ ],
223
+ stateMutability: "view",
224
+ },
225
+ {
226
+ type: "function",
227
+ name: "convertToAssets",
228
+ inputs: [
229
+ {
230
+ name: "shares",
231
+ type: "uint256",
232
+ internalType: "uint256",
233
+ },
234
+ ],
235
+ outputs: [
236
+ {
237
+ name: "",
238
+ type: "uint256",
239
+ internalType: "uint256",
240
+ },
241
+ ],
242
+ stateMutability: "view",
243
+ },
244
+ {
245
+ type: "function",
246
+ name: "convertToShares",
247
+ inputs: [
248
+ {
249
+ name: "assets",
250
+ type: "uint256",
251
+ internalType: "uint256",
252
+ },
253
+ ],
254
+ outputs: [
255
+ {
256
+ name: "",
257
+ type: "uint256",
258
+ internalType: "uint256",
259
+ },
260
+ ],
261
+ stateMutability: "view",
262
+ },
263
+ {
264
+ type: "function",
265
+ name: "decimals",
266
+ inputs: [],
267
+ outputs: [
268
+ {
269
+ name: "",
270
+ type: "uint8",
271
+ internalType: "uint8",
272
+ },
273
+ ],
274
+ stateMutability: "view",
275
+ },
276
+ {
277
+ type: "function",
278
+ name: "decreaseAllowance",
279
+ inputs: [
280
+ {
281
+ name: "spender",
282
+ type: "address",
283
+ internalType: "address",
284
+ },
285
+ {
286
+ name: "subtractedValue",
287
+ type: "uint256",
288
+ internalType: "uint256",
289
+ },
290
+ ],
291
+ outputs: [
292
+ {
293
+ name: "",
294
+ type: "bool",
295
+ internalType: "bool",
296
+ },
297
+ ],
298
+ stateMutability: "nonpayable",
299
+ },
300
+ {
301
+ type: "function",
302
+ name: "deposit",
303
+ inputs: [
304
+ {
305
+ name: "assets",
306
+ type: "uint256",
307
+ internalType: "uint256",
308
+ },
309
+ {
310
+ name: "receiver",
311
+ type: "address",
312
+ internalType: "address",
313
+ },
314
+ ],
315
+ outputs: [
316
+ {
317
+ name: "",
318
+ type: "uint256",
319
+ internalType: "uint256",
320
+ },
321
+ ],
322
+ stateMutability: "nonpayable",
323
+ },
324
+ {
325
+ type: "function",
326
+ name: "destinationGas",
327
+ inputs: [
328
+ {
329
+ name: "destinationDomain",
330
+ type: "uint32",
331
+ internalType: "uint32",
332
+ },
333
+ ],
334
+ outputs: [
335
+ {
336
+ name: "gasLimit",
337
+ type: "uint256",
338
+ internalType: "uint256",
339
+ },
340
+ ],
341
+ stateMutability: "view",
342
+ },
343
+ {
344
+ type: "function",
345
+ name: "domains",
346
+ inputs: [],
347
+ outputs: [
348
+ {
349
+ name: "",
350
+ type: "uint32[]",
351
+ internalType: "uint32[]",
352
+ },
353
+ ],
354
+ stateMutability: "view",
355
+ },
356
+ {
357
+ type: "function",
358
+ name: "donate",
359
+ inputs: [
360
+ {
361
+ name: "amount",
362
+ type: "uint256",
363
+ internalType: "uint256",
364
+ },
365
+ ],
366
+ outputs: [],
367
+ stateMutability: "payable",
368
+ },
369
+ {
370
+ type: "function",
371
+ name: "enrollRemoteRouter",
372
+ inputs: [
373
+ {
374
+ name: "_domain",
375
+ type: "uint32",
376
+ internalType: "uint32",
377
+ },
378
+ {
379
+ name: "_router",
380
+ type: "bytes32",
381
+ internalType: "bytes32",
382
+ },
383
+ ],
384
+ outputs: [],
385
+ stateMutability: "nonpayable",
386
+ },
387
+ {
388
+ type: "function",
389
+ name: "enrollRemoteRouters",
390
+ inputs: [
391
+ {
392
+ name: "_domains",
393
+ type: "uint32[]",
394
+ internalType: "uint32[]",
395
+ },
396
+ {
397
+ name: "_addresses",
398
+ type: "bytes32[]",
399
+ internalType: "bytes32[]",
400
+ },
401
+ ],
402
+ outputs: [],
403
+ stateMutability: "nonpayable",
404
+ },
405
+ {
406
+ type: "function",
407
+ name: "enrollRouters",
408
+ inputs: [
409
+ {
410
+ name: "_domains",
411
+ type: "uint32[]",
412
+ internalType: "uint32[]",
413
+ },
414
+ {
415
+ name: "_routers",
416
+ type: "bytes32[]",
417
+ internalType: "bytes32[]",
418
+ },
419
+ ],
420
+ outputs: [],
421
+ stateMutability: "nonpayable",
422
+ },
423
+ {
424
+ type: "function",
425
+ name: "enrolledRouters",
426
+ inputs: [
427
+ {
428
+ name: "_domain",
429
+ type: "uint32",
430
+ internalType: "uint32",
431
+ },
432
+ {
433
+ name: "_router",
434
+ type: "bytes32",
435
+ internalType: "bytes32",
436
+ },
437
+ ],
438
+ outputs: [
439
+ {
440
+ name: "",
441
+ type: "bool",
442
+ internalType: "bool",
443
+ },
444
+ ],
445
+ stateMutability: "view",
446
+ },
447
+ {
448
+ type: "function",
449
+ name: "feeHook",
450
+ inputs: [],
451
+ outputs: [
452
+ {
453
+ name: "",
454
+ type: "address",
455
+ internalType: "address",
456
+ },
457
+ ],
458
+ stateMutability: "view",
459
+ },
460
+ {
461
+ type: "function",
462
+ name: "feeRecipient",
463
+ inputs: [],
464
+ outputs: [
465
+ {
466
+ name: "",
467
+ type: "address",
468
+ internalType: "address",
469
+ },
470
+ ],
471
+ stateMutability: "view",
472
+ },
473
+ {
474
+ type: "function",
475
+ name: "feeToken",
476
+ inputs: [],
477
+ outputs: [
478
+ {
479
+ name: "",
480
+ type: "address",
481
+ internalType: "address",
482
+ },
483
+ ],
484
+ stateMutability: "view",
485
+ },
486
+ {
487
+ type: "function",
488
+ name: "getEnrolledRouters",
489
+ inputs: [
490
+ {
491
+ name: "_domain",
492
+ type: "uint32",
493
+ internalType: "uint32",
494
+ },
495
+ ],
496
+ outputs: [
497
+ {
498
+ name: "",
499
+ type: "bytes32[]",
500
+ internalType: "bytes32[]",
501
+ },
502
+ ],
503
+ stateMutability: "view",
504
+ },
505
+ {
506
+ type: "function",
507
+ name: "handle",
508
+ inputs: [
509
+ {
510
+ name: "_origin",
511
+ type: "uint32",
512
+ internalType: "uint32",
513
+ },
514
+ {
515
+ name: "_sender",
516
+ type: "bytes32",
517
+ internalType: "bytes32",
518
+ },
519
+ {
520
+ name: "_message",
521
+ type: "bytes",
522
+ internalType: "bytes",
523
+ },
524
+ ],
525
+ outputs: [],
526
+ stateMutability: "payable",
527
+ },
528
+ {
529
+ type: "function",
530
+ name: "hook",
531
+ inputs: [],
532
+ outputs: [
533
+ {
534
+ name: "",
535
+ type: "address",
536
+ internalType: "contract IPostDispatchHook",
537
+ },
538
+ ],
539
+ stateMutability: "view",
540
+ },
541
+ {
542
+ type: "function",
543
+ name: "increaseAllowance",
544
+ inputs: [
545
+ {
546
+ name: "spender",
547
+ type: "address",
548
+ internalType: "address",
549
+ },
550
+ {
551
+ name: "addedValue",
552
+ type: "uint256",
553
+ internalType: "uint256",
554
+ },
555
+ ],
556
+ outputs: [
557
+ {
558
+ name: "",
559
+ type: "bool",
560
+ internalType: "bool",
561
+ },
562
+ ],
563
+ stateMutability: "nonpayable",
564
+ },
565
+ {
566
+ type: "function",
567
+ name: "initialize",
568
+ inputs: [
569
+ {
570
+ name: "_hook",
571
+ type: "address",
572
+ internalType: "address",
573
+ },
574
+ {
575
+ name: "_interchainSecurityModule",
576
+ type: "address",
577
+ internalType: "address",
578
+ },
579
+ {
580
+ name: "_owner",
581
+ type: "address",
582
+ internalType: "address",
583
+ },
584
+ ],
585
+ outputs: [],
586
+ stateMutability: "nonpayable",
587
+ },
588
+ {
589
+ type: "function",
590
+ name: "interchainSecurityModule",
591
+ inputs: [],
592
+ outputs: [
593
+ {
594
+ name: "",
595
+ type: "address",
596
+ internalType: "contract IInterchainSecurityModule",
597
+ },
598
+ ],
599
+ stateMutability: "view",
600
+ },
601
+ {
602
+ type: "function",
603
+ name: "localDomain",
604
+ inputs: [],
605
+ outputs: [
606
+ {
607
+ name: "",
608
+ type: "uint32",
609
+ internalType: "uint32",
610
+ },
611
+ ],
612
+ stateMutability: "view",
613
+ },
614
+ {
615
+ type: "function",
616
+ name: "mailbox",
617
+ inputs: [],
618
+ outputs: [
619
+ {
620
+ name: "",
621
+ type: "address",
622
+ internalType: "contract IMailbox",
623
+ },
624
+ ],
625
+ stateMutability: "view",
626
+ },
627
+ {
628
+ type: "function",
629
+ name: "maxDeposit",
630
+ inputs: [
631
+ {
632
+ name: "",
633
+ type: "address",
634
+ internalType: "address",
635
+ },
636
+ ],
637
+ outputs: [
638
+ {
639
+ name: "",
640
+ type: "uint256",
641
+ internalType: "uint256",
642
+ },
643
+ ],
644
+ stateMutability: "view",
645
+ },
646
+ {
647
+ type: "function",
648
+ name: "maxMint",
649
+ inputs: [
650
+ {
651
+ name: "",
652
+ type: "address",
653
+ internalType: "address",
654
+ },
655
+ ],
656
+ outputs: [
657
+ {
658
+ name: "",
659
+ type: "uint256",
660
+ internalType: "uint256",
661
+ },
662
+ ],
663
+ stateMutability: "view",
664
+ },
665
+ {
666
+ type: "function",
667
+ name: "maxRedeem",
668
+ inputs: [
669
+ {
670
+ name: "owner",
671
+ type: "address",
672
+ internalType: "address",
673
+ },
674
+ ],
675
+ outputs: [
676
+ {
677
+ name: "",
678
+ type: "uint256",
679
+ internalType: "uint256",
680
+ },
681
+ ],
682
+ stateMutability: "view",
683
+ },
684
+ {
685
+ type: "function",
686
+ name: "maxWithdraw",
687
+ inputs: [
688
+ {
689
+ name: "owner",
690
+ type: "address",
691
+ internalType: "address",
692
+ },
693
+ ],
694
+ outputs: [
695
+ {
696
+ name: "",
697
+ type: "uint256",
698
+ internalType: "uint256",
699
+ },
700
+ ],
701
+ stateMutability: "view",
702
+ },
703
+ {
704
+ type: "function",
705
+ name: "mint",
706
+ inputs: [
707
+ {
708
+ name: "shares",
709
+ type: "uint256",
710
+ internalType: "uint256",
711
+ },
712
+ {
713
+ name: "receiver",
714
+ type: "address",
715
+ internalType: "address",
716
+ },
717
+ ],
718
+ outputs: [
719
+ {
720
+ name: "",
721
+ type: "uint256",
722
+ internalType: "uint256",
723
+ },
724
+ ],
725
+ stateMutability: "nonpayable",
726
+ },
727
+ {
728
+ type: "function",
729
+ name: "name",
730
+ inputs: [],
731
+ outputs: [
732
+ {
733
+ name: "",
734
+ type: "string",
735
+ internalType: "string",
736
+ },
737
+ ],
738
+ stateMutability: "view",
739
+ },
740
+ {
741
+ type: "function",
742
+ name: "owner",
743
+ inputs: [],
744
+ outputs: [
745
+ {
746
+ name: "",
747
+ type: "address",
748
+ internalType: "address",
749
+ },
750
+ ],
751
+ stateMutability: "view",
752
+ },
753
+ {
754
+ type: "function",
755
+ name: "previewDeposit",
756
+ inputs: [
757
+ {
758
+ name: "assets",
759
+ type: "uint256",
760
+ internalType: "uint256",
761
+ },
762
+ ],
763
+ outputs: [
764
+ {
765
+ name: "",
766
+ type: "uint256",
767
+ internalType: "uint256",
768
+ },
769
+ ],
770
+ stateMutability: "view",
771
+ },
772
+ {
773
+ type: "function",
774
+ name: "previewMint",
775
+ inputs: [
776
+ {
777
+ name: "shares",
778
+ type: "uint256",
779
+ internalType: "uint256",
780
+ },
781
+ ],
782
+ outputs: [
783
+ {
784
+ name: "",
785
+ type: "uint256",
786
+ internalType: "uint256",
787
+ },
788
+ ],
789
+ stateMutability: "view",
790
+ },
791
+ {
792
+ type: "function",
793
+ name: "previewRedeem",
794
+ inputs: [
795
+ {
796
+ name: "shares",
797
+ type: "uint256",
798
+ internalType: "uint256",
799
+ },
800
+ ],
801
+ outputs: [
802
+ {
803
+ name: "",
804
+ type: "uint256",
805
+ internalType: "uint256",
806
+ },
807
+ ],
808
+ stateMutability: "view",
809
+ },
810
+ {
811
+ type: "function",
812
+ name: "previewWithdraw",
813
+ inputs: [
814
+ {
815
+ name: "assets",
816
+ type: "uint256",
817
+ internalType: "uint256",
818
+ },
819
+ ],
820
+ outputs: [
821
+ {
822
+ name: "",
823
+ type: "uint256",
824
+ internalType: "uint256",
825
+ },
826
+ ],
827
+ stateMutability: "view",
828
+ },
829
+ {
830
+ type: "function",
831
+ name: "quoteGasPayment",
832
+ inputs: [
833
+ {
834
+ name: "_destinationDomain",
835
+ type: "uint32",
836
+ internalType: "uint32",
837
+ },
838
+ ],
839
+ outputs: [
840
+ {
841
+ name: "",
842
+ type: "uint256",
843
+ internalType: "uint256",
844
+ },
845
+ ],
846
+ stateMutability: "view",
847
+ },
848
+ {
849
+ type: "function",
850
+ name: "quoteTransferRemote",
851
+ inputs: [
852
+ {
853
+ name: "_destination",
854
+ type: "uint32",
855
+ internalType: "uint32",
856
+ },
857
+ {
858
+ name: "_recipient",
859
+ type: "bytes32",
860
+ internalType: "bytes32",
861
+ },
862
+ {
863
+ name: "_amount",
864
+ type: "uint256",
865
+ internalType: "uint256",
866
+ },
867
+ ],
868
+ outputs: [
869
+ {
870
+ name: "quotes",
871
+ type: "tuple[]",
872
+ internalType: "struct Quote[]",
873
+ components: [
874
+ {
875
+ name: "token",
876
+ type: "address",
877
+ internalType: "address",
878
+ },
879
+ {
880
+ name: "amount",
881
+ type: "uint256",
882
+ internalType: "uint256",
883
+ },
884
+ ],
885
+ },
886
+ ],
887
+ stateMutability: "view",
888
+ },
889
+ {
890
+ type: "function",
891
+ name: "quoteTransferRemoteTo",
892
+ inputs: [
893
+ {
894
+ name: "_destination",
895
+ type: "uint32",
896
+ internalType: "uint32",
897
+ },
898
+ {
899
+ name: "_recipient",
900
+ type: "bytes32",
901
+ internalType: "bytes32",
902
+ },
903
+ {
904
+ name: "_amount",
905
+ type: "uint256",
906
+ internalType: "uint256",
907
+ },
908
+ {
909
+ name: "_targetRouter",
910
+ type: "bytes32",
911
+ internalType: "bytes32",
912
+ },
913
+ ],
914
+ outputs: [
915
+ {
916
+ name: "quotes",
917
+ type: "tuple[]",
918
+ internalType: "struct Quote[]",
919
+ components: [
920
+ {
921
+ name: "token",
922
+ type: "address",
923
+ internalType: "address",
924
+ },
925
+ {
926
+ name: "amount",
927
+ type: "uint256",
928
+ internalType: "uint256",
929
+ },
930
+ ],
931
+ },
932
+ ],
933
+ stateMutability: "view",
934
+ },
935
+ {
936
+ type: "function",
937
+ name: "rebalance",
938
+ inputs: [
939
+ {
940
+ name: "domain",
941
+ type: "uint32",
942
+ internalType: "uint32",
943
+ },
944
+ {
945
+ name: "collateralAmount",
946
+ type: "uint256",
947
+ internalType: "uint256",
948
+ },
949
+ {
950
+ name: "bridge",
951
+ type: "address",
952
+ internalType: "contract ITokenBridge",
953
+ },
954
+ ],
955
+ outputs: [],
956
+ stateMutability: "payable",
957
+ },
958
+ {
959
+ type: "function",
960
+ name: "redeem",
961
+ inputs: [
962
+ {
963
+ name: "shares",
964
+ type: "uint256",
965
+ internalType: "uint256",
966
+ },
967
+ {
968
+ name: "receiver",
969
+ type: "address",
970
+ internalType: "address",
971
+ },
972
+ {
973
+ name: "owner",
974
+ type: "address",
975
+ internalType: "address",
976
+ },
977
+ ],
978
+ outputs: [
979
+ {
980
+ name: "",
981
+ type: "uint256",
982
+ internalType: "uint256",
983
+ },
984
+ ],
985
+ stateMutability: "nonpayable",
986
+ },
987
+ {
988
+ type: "function",
989
+ name: "removeBridge",
990
+ inputs: [
991
+ {
992
+ name: "domain",
993
+ type: "uint32",
994
+ internalType: "uint32",
995
+ },
996
+ {
997
+ name: "bridge",
998
+ type: "address",
999
+ internalType: "contract ITokenBridge",
1000
+ },
1001
+ ],
1002
+ outputs: [],
1003
+ stateMutability: "nonpayable",
1004
+ },
1005
+ {
1006
+ type: "function",
1007
+ name: "removeRebalancer",
1008
+ inputs: [
1009
+ {
1010
+ name: "rebalancer",
1011
+ type: "address",
1012
+ internalType: "address",
1013
+ },
1014
+ ],
1015
+ outputs: [],
1016
+ stateMutability: "nonpayable",
1017
+ },
1018
+ {
1019
+ type: "function",
1020
+ name: "removeRecipient",
1021
+ inputs: [
1022
+ {
1023
+ name: "domain",
1024
+ type: "uint32",
1025
+ internalType: "uint32",
1026
+ },
1027
+ ],
1028
+ outputs: [],
1029
+ stateMutability: "nonpayable",
1030
+ },
1031
+ {
1032
+ type: "function",
1033
+ name: "renounceOwnership",
1034
+ inputs: [],
1035
+ outputs: [],
1036
+ stateMutability: "nonpayable",
1037
+ },
1038
+ {
1039
+ type: "function",
1040
+ name: "routers",
1041
+ inputs: [
1042
+ {
1043
+ name: "_domain",
1044
+ type: "uint32",
1045
+ internalType: "uint32",
1046
+ },
1047
+ ],
1048
+ outputs: [
1049
+ {
1050
+ name: "",
1051
+ type: "bytes32",
1052
+ internalType: "bytes32",
1053
+ },
1054
+ ],
1055
+ stateMutability: "view",
1056
+ },
1057
+ {
1058
+ type: "function",
1059
+ name: "scaleDenominator",
1060
+ inputs: [],
1061
+ outputs: [
1062
+ {
1063
+ name: "",
1064
+ type: "uint256",
1065
+ internalType: "uint256",
1066
+ },
1067
+ ],
1068
+ stateMutability: "view",
1069
+ },
1070
+ {
1071
+ type: "function",
1072
+ name: "scaleNumerator",
1073
+ inputs: [],
1074
+ outputs: [
1075
+ {
1076
+ name: "",
1077
+ type: "uint256",
1078
+ internalType: "uint256",
1079
+ },
1080
+ ],
1081
+ stateMutability: "view",
1082
+ },
1083
+ {
1084
+ type: "function",
1085
+ name: "setDestinationGas",
1086
+ inputs: [
1087
+ {
1088
+ name: "domain",
1089
+ type: "uint32",
1090
+ internalType: "uint32",
1091
+ },
1092
+ {
1093
+ name: "gas",
1094
+ type: "uint256",
1095
+ internalType: "uint256",
1096
+ },
1097
+ ],
1098
+ outputs: [],
1099
+ stateMutability: "nonpayable",
1100
+ },
1101
+ {
1102
+ type: "function",
1103
+ name: "setDestinationGas",
1104
+ inputs: [
1105
+ {
1106
+ name: "gasConfigs",
1107
+ type: "tuple[]",
1108
+ internalType: "struct GasRouter.GasRouterConfig[]",
1109
+ components: [
1110
+ {
1111
+ name: "domain",
1112
+ type: "uint32",
1113
+ internalType: "uint32",
1114
+ },
1115
+ {
1116
+ name: "gas",
1117
+ type: "uint256",
1118
+ internalType: "uint256",
1119
+ },
1120
+ ],
1121
+ },
1122
+ ],
1123
+ outputs: [],
1124
+ stateMutability: "nonpayable",
1125
+ },
1126
+ {
1127
+ type: "function",
1128
+ name: "setFeeHook",
1129
+ inputs: [
1130
+ {
1131
+ name: "_feeHook",
1132
+ type: "address",
1133
+ internalType: "address",
1134
+ },
1135
+ ],
1136
+ outputs: [],
1137
+ stateMutability: "nonpayable",
1138
+ },
1139
+ {
1140
+ type: "function",
1141
+ name: "setFeeRecipient",
1142
+ inputs: [
1143
+ {
1144
+ name: "recipient",
1145
+ type: "address",
1146
+ internalType: "address",
1147
+ },
1148
+ ],
1149
+ outputs: [],
1150
+ stateMutability: "nonpayable",
1151
+ },
1152
+ {
1153
+ type: "function",
1154
+ name: "setHook",
1155
+ inputs: [
1156
+ {
1157
+ name: "_hook",
1158
+ type: "address",
1159
+ internalType: "address",
1160
+ },
1161
+ ],
1162
+ outputs: [],
1163
+ stateMutability: "nonpayable",
1164
+ },
1165
+ {
1166
+ type: "function",
1167
+ name: "setInterchainSecurityModule",
1168
+ inputs: [
1169
+ {
1170
+ name: "_module",
1171
+ type: "address",
1172
+ internalType: "address",
1173
+ },
1174
+ ],
1175
+ outputs: [],
1176
+ stateMutability: "nonpayable",
1177
+ },
1178
+ {
1179
+ type: "function",
1180
+ name: "setRecipient",
1181
+ inputs: [
1182
+ {
1183
+ name: "domain",
1184
+ type: "uint32",
1185
+ internalType: "uint32",
1186
+ },
1187
+ {
1188
+ name: "recipient",
1189
+ type: "bytes32",
1190
+ internalType: "bytes32",
1191
+ },
1192
+ ],
1193
+ outputs: [],
1194
+ stateMutability: "nonpayable",
1195
+ },
1196
+ {
1197
+ type: "function",
1198
+ name: "symbol",
1199
+ inputs: [],
1200
+ outputs: [
1201
+ {
1202
+ name: "",
1203
+ type: "string",
1204
+ internalType: "string",
1205
+ },
1206
+ ],
1207
+ stateMutability: "view",
1208
+ },
1209
+ {
1210
+ type: "function",
1211
+ name: "token",
1212
+ inputs: [],
1213
+ outputs: [
1214
+ {
1215
+ name: "",
1216
+ type: "address",
1217
+ internalType: "address",
1218
+ },
1219
+ ],
1220
+ stateMutability: "view",
1221
+ },
1222
+ {
1223
+ type: "function",
1224
+ name: "totalAssets",
1225
+ inputs: [],
1226
+ outputs: [
1227
+ {
1228
+ name: "",
1229
+ type: "uint256",
1230
+ internalType: "uint256",
1231
+ },
1232
+ ],
1233
+ stateMutability: "view",
1234
+ },
1235
+ {
1236
+ type: "function",
1237
+ name: "totalSupply",
1238
+ inputs: [],
1239
+ outputs: [
1240
+ {
1241
+ name: "",
1242
+ type: "uint256",
1243
+ internalType: "uint256",
1244
+ },
1245
+ ],
1246
+ stateMutability: "view",
1247
+ },
1248
+ {
1249
+ type: "function",
1250
+ name: "transfer",
1251
+ inputs: [
1252
+ {
1253
+ name: "to",
1254
+ type: "address",
1255
+ internalType: "address",
1256
+ },
1257
+ {
1258
+ name: "amount",
1259
+ type: "uint256",
1260
+ internalType: "uint256",
1261
+ },
1262
+ ],
1263
+ outputs: [
1264
+ {
1265
+ name: "",
1266
+ type: "bool",
1267
+ internalType: "bool",
1268
+ },
1269
+ ],
1270
+ stateMutability: "nonpayable",
1271
+ },
1272
+ {
1273
+ type: "function",
1274
+ name: "transferFrom",
1275
+ inputs: [
1276
+ {
1277
+ name: "from",
1278
+ type: "address",
1279
+ internalType: "address",
1280
+ },
1281
+ {
1282
+ name: "to",
1283
+ type: "address",
1284
+ internalType: "address",
1285
+ },
1286
+ {
1287
+ name: "amount",
1288
+ type: "uint256",
1289
+ internalType: "uint256",
1290
+ },
1291
+ ],
1292
+ outputs: [
1293
+ {
1294
+ name: "",
1295
+ type: "bool",
1296
+ internalType: "bool",
1297
+ },
1298
+ ],
1299
+ stateMutability: "nonpayable",
1300
+ },
1301
+ {
1302
+ type: "function",
1303
+ name: "transferOwnership",
1304
+ inputs: [
1305
+ {
1306
+ name: "newOwner",
1307
+ type: "address",
1308
+ internalType: "address",
1309
+ },
1310
+ ],
1311
+ outputs: [],
1312
+ stateMutability: "nonpayable",
1313
+ },
1314
+ {
1315
+ type: "function",
1316
+ name: "transferRemote",
1317
+ inputs: [
1318
+ {
1319
+ name: "_destination",
1320
+ type: "uint32",
1321
+ internalType: "uint32",
1322
+ },
1323
+ {
1324
+ name: "_recipient",
1325
+ type: "bytes32",
1326
+ internalType: "bytes32",
1327
+ },
1328
+ {
1329
+ name: "_amount",
1330
+ type: "uint256",
1331
+ internalType: "uint256",
1332
+ },
1333
+ ],
1334
+ outputs: [
1335
+ {
1336
+ name: "messageId",
1337
+ type: "bytes32",
1338
+ internalType: "bytes32",
1339
+ },
1340
+ ],
1341
+ stateMutability: "payable",
1342
+ },
1343
+ {
1344
+ type: "function",
1345
+ name: "transferRemoteTo",
1346
+ inputs: [
1347
+ {
1348
+ name: "_destination",
1349
+ type: "uint32",
1350
+ internalType: "uint32",
1351
+ },
1352
+ {
1353
+ name: "_recipient",
1354
+ type: "bytes32",
1355
+ internalType: "bytes32",
1356
+ },
1357
+ {
1358
+ name: "_amount",
1359
+ type: "uint256",
1360
+ internalType: "uint256",
1361
+ },
1362
+ {
1363
+ name: "_targetRouter",
1364
+ type: "bytes32",
1365
+ internalType: "bytes32",
1366
+ },
1367
+ ],
1368
+ outputs: [
1369
+ {
1370
+ name: "messageId",
1371
+ type: "bytes32",
1372
+ internalType: "bytes32",
1373
+ },
1374
+ ],
1375
+ stateMutability: "payable",
1376
+ },
1377
+ {
1378
+ type: "function",
1379
+ name: "unenrollRemoteRouter",
1380
+ inputs: [
1381
+ {
1382
+ name: "_domain",
1383
+ type: "uint32",
1384
+ internalType: "uint32",
1385
+ },
1386
+ ],
1387
+ outputs: [],
1388
+ stateMutability: "nonpayable",
1389
+ },
1390
+ {
1391
+ type: "function",
1392
+ name: "unenrollRemoteRouters",
1393
+ inputs: [
1394
+ {
1395
+ name: "_domains",
1396
+ type: "uint32[]",
1397
+ internalType: "uint32[]",
1398
+ },
1399
+ ],
1400
+ outputs: [],
1401
+ stateMutability: "nonpayable",
1402
+ },
1403
+ {
1404
+ type: "function",
1405
+ name: "unenrollRouters",
1406
+ inputs: [
1407
+ {
1408
+ name: "_domains",
1409
+ type: "uint32[]",
1410
+ internalType: "uint32[]",
1411
+ },
1412
+ {
1413
+ name: "_routers",
1414
+ type: "bytes32[]",
1415
+ internalType: "bytes32[]",
1416
+ },
1417
+ ],
1418
+ outputs: [],
1419
+ stateMutability: "nonpayable",
1420
+ },
1421
+ {
1422
+ type: "function",
1423
+ name: "withdraw",
1424
+ inputs: [
1425
+ {
1426
+ name: "assets",
1427
+ type: "uint256",
1428
+ internalType: "uint256",
1429
+ },
1430
+ {
1431
+ name: "receiver",
1432
+ type: "address",
1433
+ internalType: "address",
1434
+ },
1435
+ {
1436
+ name: "owner",
1437
+ type: "address",
1438
+ internalType: "address",
1439
+ },
1440
+ ],
1441
+ outputs: [
1442
+ {
1443
+ name: "",
1444
+ type: "uint256",
1445
+ internalType: "uint256",
1446
+ },
1447
+ ],
1448
+ stateMutability: "nonpayable",
1449
+ },
1450
+ {
1451
+ type: "function",
1452
+ name: "wrappedToken",
1453
+ inputs: [],
1454
+ outputs: [
1455
+ {
1456
+ name: "",
1457
+ type: "address",
1458
+ internalType: "contract IERC20",
1459
+ },
1460
+ ],
1461
+ stateMutability: "view",
1462
+ },
1463
+ {
1464
+ type: "event",
1465
+ name: "Approval",
1466
+ inputs: [
1467
+ {
1468
+ name: "owner",
1469
+ type: "address",
1470
+ indexed: true,
1471
+ internalType: "address",
1472
+ },
1473
+ {
1474
+ name: "spender",
1475
+ type: "address",
1476
+ indexed: true,
1477
+ internalType: "address",
1478
+ },
1479
+ {
1480
+ name: "value",
1481
+ type: "uint256",
1482
+ indexed: false,
1483
+ internalType: "uint256",
1484
+ },
1485
+ ],
1486
+ anonymous: false,
1487
+ },
1488
+ {
1489
+ type: "event",
1490
+ name: "CollateralMoved",
1491
+ inputs: [
1492
+ {
1493
+ name: "domain",
1494
+ type: "uint32",
1495
+ indexed: true,
1496
+ internalType: "uint32",
1497
+ },
1498
+ {
1499
+ name: "recipient",
1500
+ type: "bytes32",
1501
+ indexed: false,
1502
+ internalType: "bytes32",
1503
+ },
1504
+ {
1505
+ name: "amount",
1506
+ type: "uint256",
1507
+ indexed: false,
1508
+ internalType: "uint256",
1509
+ },
1510
+ {
1511
+ name: "rebalancer",
1512
+ type: "address",
1513
+ indexed: true,
1514
+ internalType: "address",
1515
+ },
1516
+ ],
1517
+ anonymous: false,
1518
+ },
1519
+ {
1520
+ type: "event",
1521
+ name: "Deposit",
1522
+ inputs: [
1523
+ {
1524
+ name: "sender",
1525
+ type: "address",
1526
+ indexed: true,
1527
+ internalType: "address",
1528
+ },
1529
+ {
1530
+ name: "owner",
1531
+ type: "address",
1532
+ indexed: true,
1533
+ internalType: "address",
1534
+ },
1535
+ {
1536
+ name: "assets",
1537
+ type: "uint256",
1538
+ indexed: false,
1539
+ internalType: "uint256",
1540
+ },
1541
+ {
1542
+ name: "shares",
1543
+ type: "uint256",
1544
+ indexed: false,
1545
+ internalType: "uint256",
1546
+ },
1547
+ ],
1548
+ anonymous: false,
1549
+ },
1550
+ {
1551
+ type: "event",
1552
+ name: "Donation",
1553
+ inputs: [
1554
+ {
1555
+ name: "sender",
1556
+ type: "address",
1557
+ indexed: false,
1558
+ internalType: "address",
1559
+ },
1560
+ {
1561
+ name: "amount",
1562
+ type: "uint256",
1563
+ indexed: false,
1564
+ internalType: "uint256",
1565
+ },
1566
+ ],
1567
+ anonymous: false,
1568
+ },
1569
+ {
1570
+ type: "event",
1571
+ name: "FeeHookSet",
1572
+ inputs: [
1573
+ {
1574
+ name: "feeHook",
1575
+ type: "address",
1576
+ indexed: false,
1577
+ internalType: "address",
1578
+ },
1579
+ ],
1580
+ anonymous: false,
1581
+ },
1582
+ {
1583
+ type: "event",
1584
+ name: "FeeRecipientSet",
1585
+ inputs: [
1586
+ {
1587
+ name: "feeRecipient",
1588
+ type: "address",
1589
+ indexed: false,
1590
+ internalType: "address",
1591
+ },
1592
+ ],
1593
+ anonymous: false,
1594
+ },
1595
+ {
1596
+ type: "event",
1597
+ name: "GasSet",
1598
+ inputs: [
1599
+ {
1600
+ name: "domain",
1601
+ type: "uint32",
1602
+ indexed: false,
1603
+ internalType: "uint32",
1604
+ },
1605
+ {
1606
+ name: "gas",
1607
+ type: "uint256",
1608
+ indexed: false,
1609
+ internalType: "uint256",
1610
+ },
1611
+ ],
1612
+ anonymous: false,
1613
+ },
1614
+ {
1615
+ type: "event",
1616
+ name: "HookSet",
1617
+ inputs: [
1618
+ {
1619
+ name: "_hook",
1620
+ type: "address",
1621
+ indexed: false,
1622
+ internalType: "address",
1623
+ },
1624
+ ],
1625
+ anonymous: false,
1626
+ },
1627
+ {
1628
+ type: "event",
1629
+ name: "Initialized",
1630
+ inputs: [
1631
+ {
1632
+ name: "version",
1633
+ type: "uint8",
1634
+ indexed: false,
1635
+ internalType: "uint8",
1636
+ },
1637
+ ],
1638
+ anonymous: false,
1639
+ },
1640
+ {
1641
+ type: "event",
1642
+ name: "IsmSet",
1643
+ inputs: [
1644
+ {
1645
+ name: "_ism",
1646
+ type: "address",
1647
+ indexed: false,
1648
+ internalType: "address",
1649
+ },
1650
+ ],
1651
+ anonymous: false,
1652
+ },
1653
+ {
1654
+ type: "event",
1655
+ name: "OwnershipTransferred",
1656
+ inputs: [
1657
+ {
1658
+ name: "previousOwner",
1659
+ type: "address",
1660
+ indexed: true,
1661
+ internalType: "address",
1662
+ },
1663
+ {
1664
+ name: "newOwner",
1665
+ type: "address",
1666
+ indexed: true,
1667
+ internalType: "address",
1668
+ },
1669
+ ],
1670
+ anonymous: false,
1671
+ },
1672
+ {
1673
+ type: "event",
1674
+ name: "ReceivedTransferRemote",
1675
+ inputs: [
1676
+ {
1677
+ name: "origin",
1678
+ type: "uint32",
1679
+ indexed: true,
1680
+ internalType: "uint32",
1681
+ },
1682
+ {
1683
+ name: "recipient",
1684
+ type: "bytes32",
1685
+ indexed: true,
1686
+ internalType: "bytes32",
1687
+ },
1688
+ {
1689
+ name: "amountOrId",
1690
+ type: "uint256",
1691
+ indexed: false,
1692
+ internalType: "uint256",
1693
+ },
1694
+ ],
1695
+ anonymous: false,
1696
+ },
1697
+ {
1698
+ type: "event",
1699
+ name: "RouterEnrolled",
1700
+ inputs: [
1701
+ {
1702
+ name: "domain",
1703
+ type: "uint32",
1704
+ indexed: true,
1705
+ internalType: "uint32",
1706
+ },
1707
+ {
1708
+ name: "router",
1709
+ type: "bytes32",
1710
+ indexed: true,
1711
+ internalType: "bytes32",
1712
+ },
1713
+ ],
1714
+ anonymous: false,
1715
+ },
1716
+ {
1717
+ type: "event",
1718
+ name: "RouterUnenrolled",
1719
+ inputs: [
1720
+ {
1721
+ name: "domain",
1722
+ type: "uint32",
1723
+ indexed: true,
1724
+ internalType: "uint32",
1725
+ },
1726
+ {
1727
+ name: "router",
1728
+ type: "bytes32",
1729
+ indexed: true,
1730
+ internalType: "bytes32",
1731
+ },
1732
+ ],
1733
+ anonymous: false,
1734
+ },
1735
+ {
1736
+ type: "event",
1737
+ name: "SentTransferRemote",
1738
+ inputs: [
1739
+ {
1740
+ name: "destination",
1741
+ type: "uint32",
1742
+ indexed: true,
1743
+ internalType: "uint32",
1744
+ },
1745
+ {
1746
+ name: "recipient",
1747
+ type: "bytes32",
1748
+ indexed: true,
1749
+ internalType: "bytes32",
1750
+ },
1751
+ {
1752
+ name: "amountOrId",
1753
+ type: "uint256",
1754
+ indexed: false,
1755
+ internalType: "uint256",
1756
+ },
1757
+ ],
1758
+ anonymous: false,
1759
+ },
1760
+ {
1761
+ type: "event",
1762
+ name: "Transfer",
1763
+ inputs: [
1764
+ {
1765
+ name: "from",
1766
+ type: "address",
1767
+ indexed: true,
1768
+ internalType: "address",
1769
+ },
1770
+ {
1771
+ name: "to",
1772
+ type: "address",
1773
+ indexed: true,
1774
+ internalType: "address",
1775
+ },
1776
+ {
1777
+ name: "value",
1778
+ type: "uint256",
1779
+ indexed: false,
1780
+ internalType: "uint256",
1781
+ },
1782
+ ],
1783
+ anonymous: false,
1784
+ },
1785
+ {
1786
+ type: "event",
1787
+ name: "Withdraw",
1788
+ inputs: [
1789
+ {
1790
+ name: "sender",
1791
+ type: "address",
1792
+ indexed: true,
1793
+ internalType: "address",
1794
+ },
1795
+ {
1796
+ name: "receiver",
1797
+ type: "address",
1798
+ indexed: true,
1799
+ internalType: "address",
1800
+ },
1801
+ {
1802
+ name: "owner",
1803
+ type: "address",
1804
+ indexed: true,
1805
+ internalType: "address",
1806
+ },
1807
+ {
1808
+ name: "assets",
1809
+ type: "uint256",
1810
+ indexed: false,
1811
+ internalType: "uint256",
1812
+ },
1813
+ {
1814
+ name: "shares",
1815
+ type: "uint256",
1816
+ indexed: false,
1817
+ internalType: "uint256",
1818
+ },
1819
+ ],
1820
+ anonymous: false,
1821
+ },
1822
+ ];
1823
+ const _bytecode = "0x6101206040523480156200001257600080fd5b5060405162005a1a38038062005a1a83398101604081905262000035916200027f565b83838383828282808080806000816001600160a01b03163b11620000a05760405162461bcd60e51b815260206004820152601e60248201527f4d61696c626f78436c69656e743a20696e76616c6964206d61696c626f78000060448201526064015b60405180910390fd5b6001600160a01b03821660808190526040805163234d8e3d60e21b81529051638d3638f4916004808201926020929091908290030181865afa158015620000eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001119190620002ca565b63ffffffff1660a052620001253362000210565b505050506000831180156200013a5750600082115b620001885760405162461bcd60e51b815260206004820152601e60248201527f546f6b656e526f757465723a207363616c652063616e6e6f7420626520300000604482015260640162000097565b5060c09190915260e0526001600160a01b0384163b620001f55760405162461bcd60e51b815260206004820152602160248201527f4879704552433230436f6c6c61746572616c3a20696e76616c696420746f6b656044820152603760f91b606482015260840162000097565b5050506001600160a01b03166101005250620002f992505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146200027a57600080fd5b919050565b600080600080608085870312156200029657600080fd5b620002a18562000262565b93506020850151925060408501519150620002bf6060860162000262565b905092959194509250565b600060208284031215620002dd57600080fd5b815163ffffffff81168114620002f257600080fd5b9392505050565b60805160a05160c05160e05161010051615611620004096000396000818161068701528181610a7e01528181610e52015281816115100152818161157b015281816115fb0152818161177b01528181611a4f01528181611aba01528181612d6801528181612f860152818161312601528181613323015281816135bc01528181613622015281816139f20152613e65015260008181610ab201528181612e5c0152613e120152600081816105af01528181612e3b0152613e33015260008181610970015281816113b50152818161146b015281816120970152818161215a015281816122160152613656015260008181610c5b01528181611330015281816122bd015261380b01526156116000f3fe60806040526004361061045d5760003560e01c80638da5cb5b1161023f578063c6e6f59211610139578063e9198bf9116100b6578063f2ed8c531161007a578063f2ed8c5314610dc3578063f2fde38b14610de3578063fa57f15714610e03578063fbaca44c14610e23578063fc0c546a14610e4357600080fd5b8063e9198bf914610d5b578063ef8b30f714610c09578063efae508a14610d7b578063f11f446114610d9b578063f14faf6f14610db057600080fd5b8063dd62ed3e116100fd578063dd62ed3e14610cb0578063de523cf314610cd0578063e62e284714610cee578063e74b981b14610d0e578063e83b530014610d2e57600080fd5b8063c6e6f59214610c09578063ce96cb7714610c29578063d5438eae14610c49578063d905777e14610c7d578063d9755d0f14610c9d57600080fd5b8063a9059cbb116101c7578063ba0876521161018b578063ba08765214610b94578063c0c53b8b14610bb4578063c382711514610bd4578063c63d75b6146106ff578063c69c8ce214610bf457600080fd5b8063a9059cbb14610af4578063b1bd643614610b14578063b3d7f6b914610b34578063b460af9414610b54578063b49c53a714610b7457600080fd5b806394bf804d1161020e57806394bf804d14610a3757806395d89b4114610a57578063996c6cc314610a6c5780639f0b765914610aa0578063a457c2d714610ad457600080fd5b80638da5cb5b146109a75780638f16bd4d146109c557806392c18454146109e557806393c4484714610a0557600080fd5b806343bc4b9a1161035b5780636e553f65116102d857806377e2dc7a1161029c57806377e2dc7a146108d85780637f5a7c7b1461090b57806381b4e8b41461092b5780638bd90b821461093e5780638d3638f41461095e57600080fd5b80636e553f651461082057806370a0823114610840578063715018a61461087657806371a15b381461088b578063775313a1146108ab57600080fd5b80634e38a81d1161031f5780634e38a81d1461079857806356d5d475146107b857806360ed438c146107cb578063647846a5146107f85780636a99c3331461080d57600080fd5b806343bc4b9a14610721578063440df4f414610741578063469048401461076357806349d462ef146107785780634cdad506146104a957600080fd5b80631c2eaac0116103e9578063313ce567116103ad578063313ce5671461065157806338d52e0f1461067857806339509351146106bf5780633dfd3873146106df578063402d267d146106ff57600080fd5b80631c2eaac01461059d57806323b872dd146105d15780632a53a6d5146105f15780632c2d8089146106115780632ead72f61461063157600080fd5b80630a28a477116104305780630a28a477146104f95780630c979919146105195780630e72cc061461053b57806318160ddd1461055b5780631ba831491461057057600080fd5b806301e1d1141461046257806306fdde031461048757806307a2d13a146104a9578063095ea7b3146104c9575b600080fd5b34801561046e57600080fd5b50610133545b6040519081526020015b60405180910390f35b34801561049357600080fd5b5061049c610e76565b60405161047e9190614aa6565b3480156104b557600080fd5b506104746104c4366004614ab9565b610f08565b3480156104d557600080fd5b506104e96104e4366004614ae7565b610f1b565b604051901515815260200161047e565b34801561050557600080fd5b50610474610514366004614ab9565b610f33565b34801561052557600080fd5b50610539610534366004614b13565b610f40565b005b34801561054757600080fd5b50610539610556366004614b13565b610f57565b34801561056757600080fd5b5060d154610474565b34801561057c57600080fd5b5061059061058b366004614b44565b610ffb565b60405161047e9190614b5f565b3480156105a957600080fd5b506104747f000000000000000000000000000000000000000000000000000000000000000081565b3480156105dd57600080fd5b506104e96105ec366004614bac565b61101c565b3480156105fd57600080fd5b5061053961060c366004614c32565b611042565b34801561061d57600080fd5b5061053961062c366004614c9e565b611191565b34801561063d57600080fd5b5061047461064c366004614b44565b6111bc565b34801561065d57600080fd5b506106666111db565b60405160ff909116815260200161047e565b34801561068457600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161047e565b3480156106cb57600080fd5b506104e96106da366004614ae7565b6111fb565b3480156106eb57600080fd5b506105396106fa366004614b13565b61121d565b34801561070b57600080fd5b5061047461071a366004614b13565b5060001990565b34801561072d57600080fd5b5061053961073c366004614b13565b6112b0565b34801561074d57600080fd5b506107566112c3565b60405161047e9190614cba565b34801561076f57600080fd5b506106a76112cf565b34801561078457600080fd5b50610539610793366004614c9e565b611302565b3480156107a457600080fd5b506105396107b3366004614cf8565b611314565b6105396107c6366004614d2f565b611326565b3480156107d757600080fd5b506107eb6107e6366004614db6565b61141b565b60405161047e9190614def565b34801561080457600080fd5b506106a76115d9565b61053961081b366004614e47565b61161d565b34801561082c57600080fd5b5061047461083b366004614e87565b6118f5565b34801561084c57600080fd5b5061047461085b366004614b13565b6001600160a01b0316600090815260cf602052604090205490565b34801561088257600080fd5b5061053961190f565b34801561089757600080fd5b506105396108a6366004614eac565b611923565b3480156108b757600080fd5b506104746108c6366004614b44565b60ca6020526000908152604090205481565b3480156108e457600080fd5b506104746108f3366004614b44565b63ffffffff16600090815260cb602052604090205490565b34801561091757600080fd5b506065546106a7906001600160a01b031681565b610474610939366004614eee565b611978565b34801561094a57600080fd5b506107eb610959366004614eee565b61199b565b34801561096a57600080fd5b506109927f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161047e565b3480156109b357600080fd5b506033546001600160a01b03166106a7565b3480156109d157600080fd5b506105396109e0366004614c32565b611b16565b3480156109f157600080fd5b50610539610a00366004614b13565b611c5e565b348015610a1157600080fd5b5061049c6040518060400160405280600681526020016531312e302e3160d01b81525081565b348015610a4357600080fd5b50610474610a52366004614e87565b611c72565b348015610a6357600080fd5b5061049c611c8c565b348015610a7857600080fd5b506106a77f000000000000000000000000000000000000000000000000000000000000000081565b348015610aac57600080fd5b506104747f000000000000000000000000000000000000000000000000000000000000000081565b348015610ae057600080fd5b506104e9610aef366004614ae7565b611c9b565b348015610b0057600080fd5b506104e9610b0f366004614ae7565b611d21565b348015610b2057600080fd5b50610539610b2f366004614f21565b611d2f565b348015610b4057600080fd5b50610474610b4f366004614ab9565b611da5565b348015610b6057600080fd5b50610474610b6f366004614f96565b611db2565b348015610b8057600080fd5b50610539610b8f366004614c9e565b611e26565b348015610ba057600080fd5b50610474610baf366004614f96565b611e38565b348015610bc057600080fd5b50610539610bcf366004614fcd565b611eac565b348015610be057600080fd5b50610539610bef366004614b44565b611fca565b348015610c0057600080fd5b50610590611fe9565b348015610c1557600080fd5b50610474610c24366004614ab9565b611ff5565b348015610c3557600080fd5b50610474610c44366004614b13565b612002565b348015610c5557600080fd5b506106a77f000000000000000000000000000000000000000000000000000000000000000081565b348015610c8957600080fd5b50610474610c98366004614b13565b612026565b610474610cab366004614db6565b612044565b348015610cbc57600080fd5b50610474610ccb366004614ffd565b612381565b348015610cdc57600080fd5b506066546001600160a01b03166106a7565b348015610cfa57600080fd5b506104e9610d09366004614c9e565b6123ac565b348015610d1a57600080fd5b50610539610d29366004614b13565b6123d2565b348015610d3a57600080fd5b50610d4e610d49366004614b44565b6124a7565b60405161047e919061501b565b348015610d6757600080fd5b50610539610d76366004614c32565b6124c9565b348015610d8757600080fd5b50610539610d96366004614b44565b612578565b348015610da757600080fd5b506106a7612589565b610539610dbe366004614ab9565b6125b1565b348015610dcf57600080fd5b50610474610dde366004614b44565b612608565b348015610def57600080fd5b50610539610dfe366004614b13565b612638565b348015610e0f57600080fd5b50610539610e1e366004614ffd565b6126ae565b348015610e2f57600080fd5b50610539610e3e366004614cf8565b6126cc565b348015610e4f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006106a7565b606060d28054610e8590615053565b80601f0160208091040260200160405190810160405280929190818152602001828054610eb190615053565b8015610efe5780601f10610ed357610100808354040283529160200191610efe565b820191906000526020600020905b815481529060010190602001808311610ee157829003601f168201915b5050505050905090565b6000610f158260006126e8565b92915050565b600033610f29818585612724565b5060019392505050565b6000610f15826001612848565b610f48612874565b610f5360cd826128ce565b5050565b806000816001600160a01b03163b1180610f7857506001600160a01b038116155b610f9d5760405162461bcd60e51b8152600401610f949061508d565b60405180910390fd5b610fa5612874565b606680546001600160a01b0319166001600160a01b0384169081179091556040519081527fc47cbcc588c67679e52261c45cc315e56562f8d0ccaba16facb9093ff9498799906020015b60405180910390a15050565b63ffffffff8116600090815260cc60205260409020606090610f15906128e3565b60003361102a8582856128f0565b611035858585612964565b60019150505b9392505050565b61104a612874565b82811461108f5760405162461bcd60e51b815260206004820152601360248201527209a867440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606401610f94565b60005b8381101561118a5761110a8383838181106110af576110af6150d4565b9050602002013561013460008888868181106110cd576110cd6150d4565b90506020020160208101906110e29190614b44565b63ffffffff1663ffffffff168152602001908152602001600020612b0f90919063ffffffff16565b1561118257828282818110611121576111216150d4565b9050602002013585858381811061113a5761113a6150d4565b905060200201602081019061114f9190614b44565b63ffffffff167f50f2ff5d2aecb68a5747b2c222d14e5f8d49a1e00bc6df7ef943af8e3643926560405160405180910390a35b600101611092565b5050505050565b611199612874565b6111a282612b1b565b5063ffffffff909116600090815260cb6020526040902055565b6000806111d3609763ffffffff80861690612b6616565b949350505050565b600080610101546111f69190600160a01b900460ff16615100565b905090565b600033610f2981858561120e8383612381565b6112189190615119565b612724565b806000816001600160a01b03163b118061123e57506001600160a01b038116155b61125a5760405162461bcd60e51b8152600401610f949061508d565b611262612874565b606580546001600160a01b0319166001600160a01b0384169081179091556040519081527f4eab7b127c764308788622363ad3e9532de3dfba7845bd4f84c125a22544255a90602001610fef565b6112b8612874565b610f5360cd82612b7f565b60606111f66097612b94565b60007f721d42344eebce0a76684e8fddd9c81a84afda39f3019e5a078a53853f098d115b546001600160a01b0316919050565b61130a612874565b610f538282612c45565b61131c612874565b610f538282612ccf565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036113aa576113608484612d90565b80611389575063ffffffff808516600090815261013460205260409020611389918590612da416565b6113a55760405162461bcd60e51b8152600401610f949061512c565b611409565b6113ed3363ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152610134602052604090209190612da416565b6114095760405162461bcd60e51b8152600401610f949061512c565b61141584848484612dbc565b50505050565b60408051600380825260808201909252606091816020015b60408051808201909152600080825260208201528152602001906001900390816114335790505090506000806114676115d9565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff168763ffffffff16146114b3576114b087876114aa88612e33565b84612e81565b91505b6040518060400160405280826001600160a01b0316815260200183815250836000815181106114e4576114e46150d4565b602002602001018190525060006114fd88888888612eb6565b91505060405180604001604052806115327f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0316815260200161154a8389615119565b81525084600181518110611560576115606150d4565b6020026020010181905250604051806040016040528061159d7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031681526020016000815250846002815181106115c3576115c36150d4565b6020026020010181905250505050949350505050565b6000806115e4612589565b6001600160a01b0316036115f85750600090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61162860cd33613050565b61166b5760405162461bcd60e51b815260206004820152601460248201527326a1a91d1027b7363c902932b130b630b731b2b960611b6044820152606401610f94565b63ffffffff808416600090815260cc602052604090208491839190611694908290849061305016565b6116e05760405162461bcd60e51b815260206004820152601760248201527f4d43523a204e6f7420616c6c6f776564206272696467650000000000000000006044820152606401610f94565b60006116eb87613072565b6040516345ec85c160e11b815263ffffffff8916600482015260248101829052604481018890529091506000906001600160a01b03871690638bd90b8290606401600060405180830381865afa158015611749573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261177191908101906151d3565b9050600061179f827f000000000000000000000000000000000000000000000000000000000000000061309b565b9050878111156117bb576117bb6117b6898361529e565b613119565b60006117c7838261309b565b9050478111156118255760405162461bcd60e51b8152602060048201526024808201527f526562616c616e6365206e61746976652066656520657863656564732062616c604482015263616e636560e01b6064820152608401610f94565b60405163206d3a2d60e21b815263ffffffff8b16600482015260248101859052604481018a90526001600160a01b038916906381b4e8b490839060640160206040518083038185885af1158015611880573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118a591906152b1565b5060408051858152602081018b9052339163ffffffff8d16917fb1e1b117ddf429b1b8a359fe0e978f0ae191c0f70e0babfea7acaad1b0ee8a2d910160405180910390a350505050505050505050565b60008061190184611ff5565b905061103b3384868461314c565b611917612874565b61192160006131d4565b565b61192b612874565b8060005b818110156114155761196684848381811061194c5761194c6150d4565b90506020020160208101906119619190614b44565b613226565b611971600182615119565b905061192f565b60008061198485612b1b565b905061199285858584612044565b95945050505050565b606060006119a76115d9565b60408051600380825260808201909252919250816020015b60408051808201909152600080825260208201528152602001906001900390816119bf5790505091506040518060400160405280826001600160a01b03168152602001611a0e87878786612e81565b81525082600081518110611a2457611a246150d4565b60200260200101819052506000611a3c86868661325a565b9150506040518060400160405280611a717f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03168152602001611a898387615119565b81525083600181518110611a9f57611a9f6150d4565b60200260200101819052506040518060400160405280611adc7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03168152602001600081525083600281518110611b0257611b026150d4565b602002602001018190525050509392505050565b611b1e612874565b828114611b635760405162461bcd60e51b815260206004820152601360248201527209a867440d8cadccee8d040dad2e6dac2e8c6d606b1b6044820152606401610f94565b60005b8381101561118a57611bde838383818110611b8357611b836150d4565b905060200201356101346000888886818110611ba157611ba16150d4565b9050602002016020810190611bb69190614b44565b63ffffffff1663ffffffff1681526020019081526020016000206133fe90919063ffffffff16565b15611c5657828282818110611bf557611bf56150d4565b90506020020135858583818110611c0e57611c0e6150d4565b9050602002016020810190611c239190614b44565b63ffffffff167fd68ae398d7c894590fe1cc029a8141af08d20bf2d2b7888841d8c8d5dba2b3dd60405160405180910390a35b600101611b66565b611c66612874565b611c6f8161340a565b50565b600080611c7e84611da5565b905061103b3384838761314c565b606060d38054610e8590615053565b60003381611ca98286612381565b905083811015611d095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610f94565b611d168286868403612724565b506001949350505050565b600033610f29818585612964565b611d37612874565b60005b81811015611da057611d8e838383818110611d5757611d576150d4565b611d6d9260206040909202019081019150614b44565b848484818110611d7f57611d7f6150d4565b90506040020160200135612c45565b611d99600182615119565b9050611d3a565b505050565b6000610f158260016126e8565b6000611dbd82612002565b841115611e0c5760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d6178006044820152606401610f94565b6000611e1785610f33565b90506111d33385858885613478565b611e2e612874565b610f538282613530565b6000611e4382612026565b841115611e925760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d61780000006044820152606401610f94565b6000611e9d85610f08565b90506111d33385858489613478565b600054610100900460ff1615808015611ecc5750600054600160ff909116105b80611ee65750303b158015611ee6575060005460ff166001145b611f495760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610f94565b6000805460ff191660011790558015611f6c576000805461ff0019166101001790555b611f77848484613546565b611f7f613590565b8015611415576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b611fd2612874565b63ffffffff16600090815260cb6020526040812055565b60606111f660cd6128e3565b6000610f15826000612848565b6001600160a01b038116600090815260cf6020526040812054610f159060006126e8565b6001600160a01b038116600090815260cf6020526040812054610f15565b60006120508583612d90565b80612079575063ffffffff808616600090815261013460205260409020612079918490612da416565b6120955760405162461bcd60e51b8152600401610f949061512c565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168563ffffffff16036121165734156121165760405162461bcd60e51b815260206004820152601f60248201527f4d433a206c6f63616c207472616e73666572206e6f206d73672e76616c7565006044820152606401610f94565b600061212586868634876135e0565b915050600061213385612e33565b604080516020810189905280820183905281518082038301815260609091019091529091507f000000000000000000000000000000000000000000000000000000000000000063ffffffff168863ffffffff160361227a57600061219686613735565b90506000816001600160a01b03163b116121f25760405162461bcd60e51b815260206004820152601e60248201527f4d433a2074617267657420726f75746572206e6f7420636f6e747261637400006044820152606401610f94565b6040516356d5d47560e01b81526001600160a01b038216906356d5d47590612242907f000000000000000000000000000000000000000000000000000000000000000090309087906004016152ca565b600060405180830381600087803b15801561225c57600080fd5b505af1158015612270573d6000803e3d6000fd5b5050505050612376565b868863ffffffff167fd229aacb94204188fe8042965fa6b269c62dc5818b21238779ab64bdd17efeec846040516122b391815260200190565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166310b83dc0848a88856122ff8e6122fa6115d9565b61379e565b6065546040516001600160e01b031960e089901b16815261233095949392916001600160a01b0316906004016152ef565b60206040518083038185885af115801561234e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061237391906152b1565b93505b505050949350505050565b6001600160a01b03918216600090815260d06020908152604080832093909416825291909152205490565b63ffffffff808316600090815261013460205260408120909161103b91908490612da416565b6123da612874565b306001600160a01b038216036124325760405162461bcd60e51b815260206004820152601c60248201527f46656520726563697069656e742063616e6e6f742062652073656c66000000006044820152606401610f94565b807f721d42344eebce0a76684e8fddd9c81a84afda39f3019e5a078a53853f098d1180546001600160a01b0319166001600160a01b0392831617905560405190821681527fbf9a9534339a9d6b81696e05dcfb614b7dc518a31d48be3cfb757988381fb323906020015b60405180910390a150565b63ffffffff8116600090815261013460205260409020606090610f15906128e3565b6124d1612874565b82811461250a5760405162461bcd60e51b8152602060048201526007602482015266042d8cadccee8d60cb1b6044820152606401610f94565b8260005b818110156125705761255e86868381811061252b5761252b6150d4565b90506020020160208101906125409190614b44565b858584818110612552576125526150d4565b90506020020135613530565b612569600182615119565b905061250e565b505050505050565b612580612874565b611c6f81613226565b60007fe797cab0ddd50f45c2a522220a721ebb6d0f53785d8595512b6122e7164a201f6112f3565b6125ba81613119565b8061013360008282546125cd9190615119565b909155505060408051338152602081018390527f5d8bc849764969eb1bcc6d0a2f55999d0167c1ccec240a4f39cf664ca9c4148e910161249c565b6000610f158260405180602001604052806000815250612627856137c3565b6065546001600160a01b03166137e5565b612640612874565b6001600160a01b0381166126a55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610f94565b611c6f816131d4565b6126b6612874565b610f536001600160a01b03831682600019613893565b6126d4612874565b6126dd82612b1b565b50610f5382826139db565b600061103b6126f76101335490565b612702906001615119565b61270e6000600a61541d565b60d15461271b9190615119565b85919085613a1b565b6001600160a01b0383166127865760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610f94565b6001600160a01b0382166127e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610f94565b6001600160a01b03838116600081815260d0602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061103b61285882600a61541d565b60d1546128659190615119565b6101335461271b906001615119565b6033546001600160a01b031633146119215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610f94565b600061103b836001600160a01b038416613a6c565b6060600061103b83613abb565b60006128fc8484612381565b9050600019811461141557818110156129575760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610f94565b6114158484848403612724565b6001600160a01b0383166129c85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610f94565b6001600160a01b038216612a2a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610f94565b6001600160a01b038316600090815260cf602052604090205481811015612aa25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610f94565b6001600160a01b03808516600081815260cf602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612b029086815260200190565b60405180910390a3611415565b600061103b8383613a6c565b60008080612b33609763ffffffff80871690612b6616565b915091508115612b44579392505050565b612b4d84613b17565b60405162461bcd60e51b8152600401610f949190614aa6565b600080612b738484613b4e565b915091505b9250929050565b600061103b836001600160a01b038416613b90565b60606000612ba183613c83565b9050805167ffffffffffffffff811115612bbd57612bbd615163565b604051908082528060200260200182016040528015612be6578160200160208202803683370190505b50915060005b8151811015612c3e57818181518110612c0757612c076150d4565b6020026020010151838281518110612c2157612c216150d4565b63ffffffff90921660209283029190910190910152600101612bec565b5050919050565b612c59609763ffffffff80851690613d1416565b612c6283613b17565b90612c805760405162461bcd60e51b8152600401610f949190614aa6565b5063ffffffff8216600081815260ca6020908152604091829020849055815192835282018390527fc3de732a98b24a2b5c6f67e8a7fb057ffc14046b83968a2c73e4148d2fba978b9101610fef565b612cd98282613d20565b6000612ce56097612b94565b905060005b8151811015612d5a57600060cb6001016000848481518110612d0e57612d0e6150d4565b602002602001015163ffffffff1663ffffffff1681526020019081526020016000209050612d45848261305090919063ffffffff16565b15612d51575050505050565b50600101612cea565b50611da06001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836000613d42565b600081612d9c846111bc565b149392505050565b6000818152600183016020526040812054151561103b565b6000612dc88383613dd1565b90506000612dd68484613dfa565b9050818663ffffffff167fba20947a325f450d232530e5f5fce293e7963499d5309a07cee84a269f2f15a683604051612e1191815260200190565b60405180910390a3612570612e2583613735565b612e2e83613e0a565b613e58565b6000610f15827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084613a1b565b60408051602081018590528082018490528151808203830181526060909101909152600090611992908690612627888661379e565b600080612ec16112cf565b91506001600160a01b038216612ed957506000613047565b60405163183b50e360e21b815263ffffffff871660048201526024810186905260448101859052606481018490526000906001600160a01b038416906360ed438c90608401600060405180830381865afa158015612f3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f6391908101906151d3565b90508051600003612f78575060009050613047565b80516001148015612fd857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681600081518110612fc157612fc16150d4565b6020026020010151600001516001600160a01b0316145b6130245760405162461bcd60e51b815260206004820152601860248201527f4d433a20666565206d757374206d6174636820746f6b656e00000000000000006044820152606401610f94565b80600081518110613037576130376150d4565b6020026020010151602001519150505b94509492505050565b6001600160a01b0381166000908152600183016020526040812054151561103b565b63ffffffff8116600090815260cb60205260409020548061309657610f1582612b1b565b919050565b6000805b835181101561311257826001600160a01b03168482815181106130c4576130c46150d4565b6020026020010151600001516001600160a01b03160361310a578381815181106130f0576130f06150d4565b602002602001015160200151826131079190615119565b91505b60010161309f565b5092915050565b611c6f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682613e8c565b61315582613119565b8161013360008282546131689190615119565b9091555061317890508382613ea1565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516131c6929190918252602082015260400190565b60405180910390a350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b63ffffffff8116600090815260cb6020908152604080832083905560cc909152902061325190613f62565b611c6f81613fba565b6000806132656112cf565b91506001600160a01b03821661327d575060006133f6565b6040516345ec85c160e11b815263ffffffff8616600482015260248101859052604481018490526000906001600160a01b03841690638bd90b8290606401600060405180830381865afa1580156132d8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261330091908101906151d3565b905080516000036133155750600090506133f6565b8051600114801561337557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168160008151811061335e5761335e6150d4565b6020026020010151600001516001600160a01b0316145b6133d35760405162461bcd60e51b815260206004820152602960248201527f46756e6769626c65546f6b656e526f757465723a20666565206d757374206d616044820152683a31b4103a37b5b2b760b91b6064820152608401610f94565b806000815181106133e6576133e66150d4565b6020026020010151602001519150505b935093915050565b600061103b8383613b90565b807fe797cab0ddd50f45c2a522220a721ebb6d0f53785d8595512b6122e7164a201f80546001600160a01b0319166001600160a01b0392831617905560405190821681527fd6e2f80c31feccfd7c896d69ad9963871021131ff84f2a9828b40bad60dd8cb49060200161249c565b826001600160a01b0316856001600160a01b03161461349c5761349c8386836128f0565b6134a68382613ff5565b8161013360008282546134b9919061529e565b909155506134c990508483613e58565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051613521929190918252602082015260400190565b60405180910390a45050505050565b610f53609763ffffffff80851690849061412916565b600054610100900460ff1661356d5760405162461bcd60e51b8152600401610f949061542c565b613575614134565b61357e8361121d565b61358782610f57565b611da0816131d4565b600054610100900460ff166135b75760405162461bcd60e51b8152600401610f949061542c565b6119217f0000000000000000000000000000000000000000000000000000000000000000614163565b6000806000806135f289898988612eb6565b909250905060009350600084613608838a615119565b6136129190615119565b9050600061361e612589565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0382161580159061368557507f000000000000000000000000000000000000000000000000000000000000000063ffffffff168c63ffffffff1614155b156136ec5760006136988d8d8d85612e81565b905080156136ea576001600160a01b03821630146136c1576136ba8185615119565b93506136d6565b6136d66001600160a01b038316333084614193565b6136ea6001600160a01b0383168483613d42565b505b6136f583613119565b83156137055761370585856141cb565b6001600160a01b0381166137225761371d838a61529e565b613724565b885b955050505050509550959350505050565b60006001600160a01b0382111561379a5760405162461bcd60e51b8152602060048201526024808201527f5479706543617374733a2062797465733332546f41646472657373206f766572604482015263666c6f7760e01b6064820152608401610f94565b5090565b63ffffffff8216600090815260ca60205260408120546060916111d3908233866141d5565b63ffffffff8116600090815260ca6020526040902054606090610f1590614232565b6000806137f186612b1b565b6040516381d2ea9560e01b81529091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906381d2ea959061384890899085908a908a908a906004016152ef565b602060405180830381865afa158015613865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388991906152b1565b9695505050505050565b80158061390d5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156138e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390b91906152b1565b155b6139785760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610f94565b6040516001600160a01b038316602482015260448101829052611da090849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614250565b6139e58282614325565b610f536001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682600019613d42565b600080613a29868686614347565b90506001836002811115613a3f57613a3f615477565b148015613a5c575060008480613a5757613a5761548d565b868809115b1561199257613889600182615119565b6000818152600183016020526040812054613ab357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610f15565b506000610f15565b606081600001805480602002602001604051908101604052809291908181526020018280548015613b0b57602002820191906000526020600020905b815481526020019060010190808311613af7575b50505050509050919050565b6060613b288263ffffffff16614431565b604051602001613b3891906154a3565b6040516020818303038152906040529050919050565b6000818152600283016020526040812054819080613b7d57613b7085856144c4565b925060009150612b789050565b600192509050612b78565b509250929050565b60008181526001830160205260408120548015613c79576000613bb460018361529e565b8554909150600090613bc89060019061529e565b9050818114613c2d576000866000018281548110613be857613be86150d4565b9060005260206000200154905080876000018481548110613c0b57613c0b6150d4565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613c3e57613c3e6154e8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610f15565b6000915050610f15565b60606000613c90836144d0565b90508067ffffffffffffffff811115613cab57613cab615163565b604051908082528060200260200182016040528015613cd4578160200160208202803683370190505b50915060005b81811015612c3e57613cec84826144db565b60001c838281518110613d0157613d016150d4565b6020908102919091010152600101613cda565b600061103b83836144c4565b63ffffffff808316600090815260cc60205260409020611da0918390612b7f16565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613d9384826144e7565b611415576040516001600160a01b038416602482015260006044820152613dc790859063095ea7b360e01b906064016139a4565b6114158482614250565b6000828183613de1826020615100565b60ff1692613df1939291906154fe565b61103b91615528565b600082602083613de18280615100565b6000610f15827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084613a1b565b610f536001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838361458a565b610f536001600160a01b038316333084614193565b6001600160a01b038216613ef75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610f94565b8060d16000828254613f099190615119565b90915550506001600160a01b038216600081815260cf60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b805460005b81811015613fb257826001016000846000018381548110613f8a57613f8a6150d4565b9060005260206000200154815260200190815260200160002060009055806001019050613f67565b505060009055565b613fce609763ffffffff8084169061459e16565b613fd782613b17565b90610f535760405162461bcd60e51b8152600401610f949190614aa6565b6001600160a01b0382166140555760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610f94565b6001600160a01b038216600090815260cf6020526040902054818110156140c95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610f94565b6001600160a01b038316600081815260cf60209081526040808320868603905560d180548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6114158383836145aa565b600054610100900460ff1661415b5760405162461bcd60e51b8152600401610f949061542c565b6119216145c7565b600054610100900460ff1661418a5760405162461bcd60e51b8152600401610f949061542c565b611c6f816145f7565b6040516001600160a01b03808516602483015283166044820152606481018290526114159085906323b872dd60e01b906084016139a4565b610f538282613e58565b604051600160f01b60208201526022810185905260428101849052606083811b6bffffffffffffffffffffffff19908116606284015283821b16607683015290608a015b6040516020818303038152906040529050949350505050565b6060610f15600083336040518060200160405280600081525061467d565b60006142a5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166146999092919063ffffffff16565b90508051600014806142c65750808060200190518101906142c69190615546565b611da05760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610f94565b63ffffffff808316600090815260cc60205260409020611da09183906128ce16565b6000808060001985870985870292508281108382030391505080600003614381578382816143775761437761548d565b049250505061103b565b8084116143c85760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610f94565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6060600061443e836146a8565b600101905060008167ffffffffffffffff81111561445e5761445e615163565b6040519080825280601f01601f191660200182016040528015614488576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461449257509392505050565b600061103b8383612da4565b6000610f1582614780565b600061103b838361478a565b6000806000846001600160a01b0316846040516145049190615568565b6000604051808303816000865af19150503d8060008114614541576040519150601f19603f3d011682016040523d82523d6000602084013e614546565b606091505b50915091508180156145705750805115806145705750808060200190518101906145709190615546565b80156119925750505050506001600160a01b03163b151590565b611da06001600160a01b03841683836147b4565b600061103b83836147e4565b600082815260028401602052604081208290556111d38484612b0f565b600054610100900460ff166145ee5760405162461bcd60e51b8152600401610f949061542c565b611921336131d4565b600054610100900460ff1661461e5760405162461bcd60e51b8152600401610f949061542c565b60008061462a83614801565b915091508161463a57601261463c565b805b61010180546001600160a01b039095166001600160a01b031960ff93909316600160a01b02929092166001600160a81b031990951694909417179092555050565b6060600185858585604051602001614219959493929190615584565b60606111d384846000856148dd565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106146e75772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614713576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061473157662386f26fc10000830492506010015b6305f5e1008310614749576305f5e100830492506008015b612710831061475d57612710830492506004015b6064831061476f576064830492506002015b600a8310610f155760010192915050565b6000610f15825490565b60008260000182815481106147a1576147a16150d4565b9060005260206000200154905092915050565b6040516001600160a01b038316602482015260448101829052611da090849063a9059cbb60e01b906064016139a4565b6000818152600283016020526040812081905561103b83836133fe565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b0387169161484891615568565b600060405180830381855afa9150503d8060008114614883576040519150601f19603f3d011682016040523d82523d6000602084013e614888565b606091505b509150915081801561489c57506020815110155b156148d0576000818060200190518101906148b791906152b1565b905060ff81116148ce576001969095509350505050565b505b5060009485945092505050565b60608247101561493e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610f94565b600080866001600160a01b0316858760405161495a9190615568565b60006040518083038185875af1925050503d8060008114614997576040519150601f19603f3d011682016040523d82523d6000602084013e61499c565b606091505b50915091506149ad878383876149b8565b979650505050505050565b60608315614a27578251600003614a20576001600160a01b0385163b614a205760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610f94565b50816111d3565b6111d38383815115614a3c5781518083602001fd5b8060405162461bcd60e51b8152600401610f949190614aa6565b60005b83811015614a71578181015183820152602001614a59565b50506000910152565b60008151808452614a92816020860160208601614a56565b601f01601f19169290920160200192915050565b60208152600061103b6020830184614a7a565b600060208284031215614acb57600080fd5b5035919050565b6001600160a01b0381168114611c6f57600080fd5b60008060408385031215614afa57600080fd5b8235614b0581614ad2565b946020939093013593505050565b600060208284031215614b2557600080fd5b813561103b81614ad2565b803563ffffffff8116811461309657600080fd5b600060208284031215614b5657600080fd5b61103b82614b30565b6020808252825182820181905260009190848201906040850190845b81811015614ba05783516001600160a01b031683529284019291840191600101614b7b565b50909695505050505050565b600080600060608486031215614bc157600080fd5b8335614bcc81614ad2565b92506020840135614bdc81614ad2565b929592945050506040919091013590565b60008083601f840112614bff57600080fd5b50813567ffffffffffffffff811115614c1757600080fd5b6020830191508360208260051b8501011115612b7857600080fd5b60008060008060408587031215614c4857600080fd5b843567ffffffffffffffff80821115614c6057600080fd5b614c6c88838901614bed565b90965094506020870135915080821115614c8557600080fd5b50614c9287828801614bed565b95989497509550505050565b60008060408385031215614cb157600080fd5b614b0583614b30565b6020808252825182820181905260009190848201906040850190845b81811015614ba057835163ffffffff1683529284019291840191600101614cd6565b60008060408385031215614d0b57600080fd5b614d1483614b30565b91506020830135614d2481614ad2565b809150509250929050565b60008060008060608587031215614d4557600080fd5b614d4e85614b30565b935060208501359250604085013567ffffffffffffffff80821115614d7257600080fd5b818701915087601f830112614d8657600080fd5b813581811115614d9557600080fd5b886020828501011115614da757600080fd5b95989497505060200194505050565b60008060008060808587031215614dcc57600080fd5b614dd585614b30565b966020860135965060408601359560600135945092505050565b602080825282518282018190526000919060409081850190868401855b82811015614e3a57815180516001600160a01b03168552860151868501529284019290850190600101614e0c565b5091979650505050505050565b600080600060608486031215614e5c57600080fd5b614e6584614b30565b9250602084013591506040840135614e7c81614ad2565b809150509250925092565b60008060408385031215614e9a57600080fd5b823591506020830135614d2481614ad2565b60008060208385031215614ebf57600080fd5b823567ffffffffffffffff811115614ed657600080fd5b614ee285828601614bed565b90969095509350505050565b600080600060608486031215614f0357600080fd5b614f0c84614b30565b95602085013595506040909401359392505050565b60008060208385031215614f3457600080fd5b823567ffffffffffffffff80821115614f4c57600080fd5b818501915085601f830112614f6057600080fd5b813581811115614f6f57600080fd5b8660208260061b8501011115614f8457600080fd5b60209290920196919550909350505050565b600080600060608486031215614fab57600080fd5b833592506020840135614fbd81614ad2565b91506040840135614e7c81614ad2565b600080600060608486031215614fe257600080fd5b8335614fed81614ad2565b92506020840135614fbd81614ad2565b6000806040838503121561501057600080fd5b8235614d1481614ad2565b6020808252825182820181905260009190848201906040850190845b81811015614ba057835183529284019291840191600101615037565b600181811c9082168061506757607f821691505b60208210810361508757634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526027908201527f4d61696c626f78436c69656e743a20696e76616c696420636f6e74726163742060408201526673657474696e6760c81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610f1557610f156150ea565b80820180821115610f1557610f156150ea565b60208082526017908201527f4d433a20756e617574686f72697a656420726f75746572000000000000000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561519c5761519c615163565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156151cb576151cb615163565b604052919050565b600060208083850312156151e657600080fd5b825167ffffffffffffffff808211156151fe57600080fd5b818501915085601f83011261521257600080fd5b81518181111561522457615224615163565b615232848260051b016151a2565b818152848101925060069190911b83018401908782111561525257600080fd5b928401925b818410156149ad57604084890312156152705760008081fd5b615278615179565b845161528381614ad2565b81528486015186820152835260409093019291840191615257565b81810381811115610f1557610f156150ea565b6000602082840312156152c357600080fd5b5051919050565b63ffffffff841681528260208201526060604082015260006119926060830184614a7a565b63ffffffff8616815284602082015260a06040820152600061531460a0830186614a7a565b82810360608401526153268186614a7a565b91505060018060a01b03831660808301529695505050505050565b600181815b80851115613b88578160001904821115615362576153626150ea565b8085161561536f57918102915b93841c9390800290615346565b60008261538b57506001610f15565b8161539857506000610f15565b81600181146153ae57600281146153b8576153d4565b6001915050610f15565b60ff8411156153c9576153c96150ea565b50506001821b610f15565b5060208310610133831016604e8410600b84101617156153f7575081810a610f15565b6154018383615341565b8060001904821115615415576154156150ea565b029392505050565b600061103b60ff84168361537c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b7f4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a20008152600082516154db81601f850160208701614a56565b91909101601f0192915050565b634e487b7160e01b600052603160045260246000fd5b6000808585111561550e57600080fd5b8386111561551b57600080fd5b5050820193919092039150565b80356020831015610f1557600019602084900360031b1b1692915050565b60006020828403121561555857600080fd5b8151801515811461103b57600080fd5b6000825161557a818460208701614a56565b9190910192915050565b61ffff60f01b8660f01b1681528460028201528360228201526bffffffffffffffffffffffff198360601b166042820152600082516155ca816056850160208701614a56565b91909101605601969550505050505056fea26469706673582212202200cb25dc480bec8bde649865e03f74fc3f23cd22babde20c602f44e8a0f26764736f6c63430008160033";
1824
+ const isSuperArgs = (xs) => xs.length > 1;
1825
+ export class MultiCollateral__factory extends ContractFactory {
1826
+ constructor(...args) {
1827
+ if (isSuperArgs(args)) {
1828
+ super(...args);
1829
+ }
1830
+ else {
1831
+ super(_abi, _bytecode, args[0]);
1832
+ }
1833
+ }
1834
+ deploy(erc20, _scaleNumerator, _scaleDenominator, _mailbox, overrides) {
1835
+ return super.deploy(erc20, _scaleNumerator, _scaleDenominator, _mailbox, overrides || {});
1836
+ }
1837
+ getDeployTransaction(erc20, _scaleNumerator, _scaleDenominator, _mailbox, overrides) {
1838
+ return super.getDeployTransaction(erc20, _scaleNumerator, _scaleDenominator, _mailbox, overrides || {});
1839
+ }
1840
+ attach(address) {
1841
+ return super.attach(address);
1842
+ }
1843
+ connect(signer) {
1844
+ return super.connect(signer);
1845
+ }
1846
+ static createInterface() {
1847
+ return new utils.Interface(_abi);
1848
+ }
1849
+ static connect(address, signerOrProvider) {
1850
+ return new Contract(address, _abi, signerOrProvider);
1851
+ }
1852
+ }
1853
+ MultiCollateral__factory.bytecode = _bytecode;
1854
+ MultiCollateral__factory.abi = _abi;
1855
+ //# sourceMappingURL=MultiCollateral__factory.js.map