-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
1520 lines (1520 loc) · 136 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
module.exports = {
"UniV2ExcessIn": {
"address": "0x883b3504Ae91AE16f53Ee35cE48DB37b5a95463c",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "ethToToken",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "ethAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
}
],
"name": "ethToTokenExcess",
"outputs": [
{
"internalType": "address[]",
"name": "excessTokens",
"type": "address[]"
},
{
"internalType": "int256[]",
"name": "excessAmounts",
"type": "int256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"name": "ethToTokenInputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "ethInAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "ethInAmount",
"type": "uint256"
}
],
"name": "ethToTokenOutputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IWETH",
"name": "_weth",
"type": "address"
},
{
"internalType": "address",
"name": "_factory",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "initialized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "ethAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "tokenToEth",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "ethAmount",
"type": "uint256"
}
],
"name": "tokenToEthExcess",
"outputs": [
{
"internalType": "address[]",
"name": "excessTokens",
"type": "address[]"
},
{
"internalType": "int256[]",
"name": "excessAmounts",
"type": "int256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "ethOutAmount",
"type": "uint256"
}
],
"name": "tokenToEthInputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
}
],
"name": "tokenToEthOutputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "ethOutAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "tokenToToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"name": "tokenToTokenExcess",
"outputs": [
{
"internalType": "address[]",
"name": "excessTokens",
"type": "address[]"
},
{
"internalType": "int256[]",
"name": "excessAmounts",
"type": "int256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"name": "tokenToTokenInputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
}
],
"name": "tokenToTokenOutputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "weth",
"outputs": [
{
"internalType": "contract IWETH",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address payable",
"name": "to",
"type": "address"
}
],
"name": "withdrawEth",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "withdrawToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b5060006200001e6200007c565b600080546001600160a01b0319166001600160a01b038316908117825560405192935091600080516020620021ed833981519152908290a350620000767371795b2d53ffbe5b1805fe725538e4f8fbd29e2662000080565b6200017e565b3390565b6200008a6200007c565b6000546001600160a01b03908116911614620000ed576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116620001345760405162461bcd60e51b8152600401808060200182810382526026815260200180620021c76026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020620021ed83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b612039806200018e6000396000f3fe60806040526004361061016e5760003560e01c80635686472f116100cb5780637b9096c31161007f578063c3551e9211610059578063c3551e9214610628578063c45a015514610661578063f2fde38b1461067657610175565b80637b9096c3146105a15780638da5cb5b146105da578063a158657c146105ef57610175565b8063673c5697116100b0578063673c569714610500578063695fd99614610543578063715018a61461058c57610175565b80635686472f1461048057806360b84fba146104c757610175565b80633ccdbb28116101225780633fc8cef3116101075780633fc8cef3146103c35780634098c377146103f4578063485cc9551461044557610175565b80633ccdbb28146103415780633f934c5a1461038457610175565b80631ac8a87e116101535780631ac8a87e146101f85780631e1a7a0b14610230578063349e27971461030857610175565b80630cf5b7531461017a578063158ef93e146101cf57610175565b3661017557005b600080fd5b34801561018657600080fd5b506101bd6004803603606081101561019d57600080fd5b506001600160a01b038135811691602081013590911690604001356106a9565b60408051918252519081900360200190f35b3480156101db57600080fd5b506101e46106be565b604080519115158252519081900360200190f35b61022e6004803603606081101561020e57600080fd5b506001600160a01b038135811691602081013591604090910135166106ce565b005b34801561023c57600080fd5b5061026f6004803603606081101561025357600080fd5b506001600160a01b0381351690602081013590604001356107b2565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156102b357818101518382015260200161029b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156102f25781810151838201526020016102da565b5050505090500194505050505060405180910390f35b34801561031457600080fd5b506101bd6004803603604081101561032b57600080fd5b506001600160a01b038135169060200135610856565b34801561034d57600080fd5b5061022e6004803603606081101561036457600080fd5b506001600160a01b03813581169160208101359160409091013516610878565b34801561039057600080fd5b5061026f600480360360608110156103a757600080fd5b506001600160a01b0381351690602081013590604001356108f2565b3480156103cf57600080fd5b506103d8610974565b604080516001600160a01b039092168252519081900360200190f35b34801561040057600080fd5b5061022e600480360360a081101561041757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160809091013516610983565b34801561045157600080fd5b5061022e6004803603604081101561046857600080fd5b506001600160a01b03813581169160200135166109e9565b34801561048c57600080fd5b5061022e600480360360808110156104a357600080fd5b506001600160a01b0381358116916020810135916040820135916060013516610b19565b3480156104d357600080fd5b506101bd600480360360408110156104ea57600080fd5b506001600160a01b038135169060200135610c05565b34801561050c57600080fd5b506101bd6004803603606081101561052357600080fd5b506001600160a01b03813581169160208101359091169060400135610c20565b34801561054f57600080fd5b5061026f6004803603608081101561056657600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610c2d565b34801561059857600080fd5b5061022e610cc5565b3480156105ad57600080fd5b506101bd600480360360408110156105c457600080fd5b506001600160a01b038135169060200135610d86565b3480156105e657600080fd5b506103d8610da0565b3480156105fb57600080fd5b5061022e6004803603604081101561061257600080fd5b50803590602001356001600160a01b0316610daf565b34801561063457600080fd5b506101bd6004803603604081101561064b57600080fd5b506001600160a01b038135169060200135610ea9565b34801561066d57600080fd5b506103d8610ec3565b34801561068257600080fd5b5061022e6004803603602081101561069957600080fd5b50356001600160a01b0316610ed2565b60006106b6848484610fe9565b949350505050565b600254600160a01b900460ff1681565b6001546001600160a01b03168360006106e8838387610fe9565b9050803410156107295760405162461bcd60e51b8152600401808060200182810382526033815260200180611e856033913960400191505060405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561077957600080fd5b505af115801561078d573d6000803e3d6000fd5b505050505061079d83838361102e565b6107aa8383838888611051565b505050505050565b6040805160018082528183019092526060918291906020808301908036833701905050915084826000815181106107e557fe5b6001600160a01b03929092166020928302919091018201526040805160018082528183019092529182810190803683375050600154919250610833918791506001600160a01b031685610fe9565b84038160008151811061084257fe5b602002602001018181525050935093915050565b6001546000906108719084906001600160a01b031684610fe9565b9392505050565b610880611075565b6000546001600160a01b039081169116146108e2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6108ed838284611079565b505050565b6040805160018082528183019092526060918291906020808301908036833701905050915060008260008151811061092657fe5b6001600160a01b039290921660209283029190910182015260408051600180825281830190925291828101908036833701905050600154909150610833906001600160a01b03168685610fe9565b6001546001600160a01b031681565b6000610990868685610fe9565b9050808410156109d15760405162461bcd60e51b8152600401808060200182810382526035815260200180611f096035913960400191505060405180910390fd5b6109dc86868361102e565b6107aa8686838686611051565b6109f1611075565b6000546001600160a01b03908116911614610a53576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600254600160a01b900460ff1615610ab2576040805162461bcd60e51b815260206004820152600b60248201527f494e495449414c495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b600280546001805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b0396871617909155600160a01b7fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091171691909216179055565b60015484906001600160a01b03166000610b34838387610fe9565b905080861015610b755760405162461bcd60e51b8152600401808060200182810382526033815260200180611faa6033913960400191505060405180910390fd5b610b8083838361102e565b610b8d8383838830611051565b60015460408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610bda57600080fd5b505af1158015610bee573d6000803e3d6000fd5b50505050610bfc84866111f0565b50505050505050565b6001546000906108719084906001600160a01b0316846112e3565b60006106b68484846112e3565b604080516001808252818301909252606091829190602080830190803683370190505091508582600081518110610c6057fe5b6001600160a01b0392909216602092830291909101820152604080516001808252818301909252918281019080368337019050509050610ca1868685610fe9565b840381600081518110610cb057fe5b60200260200101818152505094509492505050565b610ccd611075565b6000546001600160a01b03908116911614610d2f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600154600090610871906001600160a01b031684846112e3565b6000546001600160a01b031690565b610db7611075565b6000546001600160a01b03908116911614610e19576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6040516000906001600160a01b0383169084908381818185875af1925050503d8060008114610e64576040519150601f19603f3d011682016040523d82523d6000602084013e610e69565b606091505b50509050806108ed5760405162461bcd60e51b81526004018080602001828103825260258152602001806120086025913960400191505060405180910390fd5b600154600090610871906001600160a01b03168484610fe9565b6002546001600160a01b031681565b610eda611075565b6000546001600160a01b03908116911614610f3c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610f815760405162461bcd60e51b8152600401808060200182810382526026815260200180611e5f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080610ff68585611316565b600254909150611010906001600160a01b03168483611398565b60008151811061101c57fe5b60200260200101519150509392505050565b6002546108ed90849061104b906001600160a01b031682866114e5565b83611079565b61106e61105e84846115bd565b6110688787611316565b83611617565b5050505050565b3390565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b6020831061110a5780518252601f1990920191602091820191016110eb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461116c576040519150601f19603f3d011682016040523d82523d6000602084013e611171565b606091505b509150915081801561119f57508051158061119f575080806020019051602081101561119c57600080fd5b50515b61106e576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b6020831061123c5780518252601f19909201916020918201910161121d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461129e576040519150601f19603f3d011682016040523d82523d6000602084013e6112a3565b606091505b50509050806108ed5760405162461bcd60e51b8152600401808060200182810382526023815260200180611f876023913960400191505060405180910390fd5b6000806112f08585611316565b60025490915061130a906001600160a01b03168483611836565b60018151811061101c57fe5b6040805160028082526060808301845292602083019080368337019050509050828160008151811061134457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818160018151811061137257fe5b60200260200101906001600160a01b031690816001600160a01b03168152505092915050565b60606002825110156113f1576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561140957600080fd5b50604051908082528060200260200182016040528015611433578160200160208202803683370190505b509050828160018351038151811061144757fe5b60209081029190910101528151600019015b80156114dd576000806114968786600186038151811061147557fe5b602002602001015187868151811061148957fe5b602002602001015161196d565b915091506114b88484815181106114a957fe5b60200260200101518383611a3b565b8460018503815181106114c757fe5b6020908102919091010152505060001901611459565b509392505050565b60008060006114f48585611b13565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516002808252606080830184529260208301908036833701905050905082816000815181106115eb57fe5b602002602001018181525050818160018151811061160557fe5b60200260200101818152505092915050565b60005b60018351038110156118305760008084838151811061163557fe5b602002602001015185846001018151811061164c57fe5b60200260200101519150915060006116648383611b13565b509050600087856001018151811061167857fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146116a6578260006116aa565b6000835b91509150600060028a510388106116c157886116f7565b6116f7600260009054906101000a90046001600160a01b0316878c8b600201815181106116ea57fe5b60200260200101516114e5565b600254909150611711906001600160a01b031688886114e5565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561174e576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117b657818101518382015260200161179e565b50505050905090810190601f1680156117e35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561180557600080fd5b505af1158015611819573d6000803e3d6000fd5b50506001909901985061161a975050505050505050565b50505050565b606060028251101561188f576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff811180156118a757600080fd5b506040519080825280602002602001820160405280156118d1578160200160208202803683370190505b50905082816000815181106118e257fe5b60200260200101818152505060005b60018351038110156114dd576000806119278786858151811061191057fe5b602002602001015187866001018151811061148957fe5b9150915061194984848151811061193a57fe5b60200260200101518383611bf1565b84846001018151811061195857fe5b602090810291909101015250506001016118f1565b600080600061197c8585611b13565b50905060008061198d8888886114e5565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156119c557600080fd5b505afa1580156119d9573d6000803e3d6000fd5b505050506040513d60608110156119ef57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614611a29578082611a2c565b81815b90999098509650505050505050565b6000808411611a7b5760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b600083118015611a8b5750600082115b611ac65760405162461bcd60e51b8152600401808060200182810382526028815260200180611f3e6028913960400191505060405180910390fd5b6000611ade6103e8611ad88688611cc9565b90611cc9565b90506000611af26103e5611ad88689611d2b565b9050611b096001828481611b0257fe5b0490611d6d565b9695505050505050565b600080826001600160a01b0316846001600160a01b03161415611b675760405162461bcd60e51b8152600401808060200182810382526025815260200180611ee46025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610611b87578284611b8a565b83835b90925090506001600160a01b038216611bea576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000808411611c315760405162461bcd60e51b815260040180806020018281038252602b815260200180611fdd602b913960400191505060405180910390fd5b600083118015611c415750600082115b611c7c5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f3e6028913960400191505060405180910390fd5b6000611c8a856103e5611cc9565b90506000611c988285611cc9565b90506000611cb283611cac886103e8611cc9565b90611d6d565b9050808281611cbd57fe5b04979650505050505050565b600082611cd857506000611d25565b82820282848281611ce557fe5b0414611d225760405162461bcd60e51b8152600401808060200182810382526021815260200180611f666021913960400191505060405180910390fd5b90505b92915050565b600061087183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dc7565b600082820183811015611d22576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115611e565760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e1b578181015183820152602001611e03565b50505050905090810190601f168015611e485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373556e695632457863657373496e3a20657468546f546f6b656e20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e695632457863657373496e3a20746f6b656e546f546f6b656e20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e695632457863657373496e3a20746f6b656e546f45746820494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54576974686472617761626c653a2077697468647261774574682063616c6c206661696c6564a164736f6c6343000706000a4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
"deployedBytecode": "0x60806040526004361061016e5760003560e01c80635686472f116100cb5780637b9096c31161007f578063c3551e9211610059578063c3551e9214610628578063c45a015514610661578063f2fde38b1461067657610175565b80637b9096c3146105a15780638da5cb5b146105da578063a158657c146105ef57610175565b8063673c5697116100b0578063673c569714610500578063695fd99614610543578063715018a61461058c57610175565b80635686472f1461048057806360b84fba146104c757610175565b80633ccdbb28116101225780633fc8cef3116101075780633fc8cef3146103c35780634098c377146103f4578063485cc9551461044557610175565b80633ccdbb28146103415780633f934c5a1461038457610175565b80631ac8a87e116101535780631ac8a87e146101f85780631e1a7a0b14610230578063349e27971461030857610175565b80630cf5b7531461017a578063158ef93e146101cf57610175565b3661017557005b600080fd5b34801561018657600080fd5b506101bd6004803603606081101561019d57600080fd5b506001600160a01b038135811691602081013590911690604001356106a9565b60408051918252519081900360200190f35b3480156101db57600080fd5b506101e46106be565b604080519115158252519081900360200190f35b61022e6004803603606081101561020e57600080fd5b506001600160a01b038135811691602081013591604090910135166106ce565b005b34801561023c57600080fd5b5061026f6004803603606081101561025357600080fd5b506001600160a01b0381351690602081013590604001356107b2565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156102b357818101518382015260200161029b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156102f25781810151838201526020016102da565b5050505090500194505050505060405180910390f35b34801561031457600080fd5b506101bd6004803603604081101561032b57600080fd5b506001600160a01b038135169060200135610856565b34801561034d57600080fd5b5061022e6004803603606081101561036457600080fd5b506001600160a01b03813581169160208101359160409091013516610878565b34801561039057600080fd5b5061026f600480360360608110156103a757600080fd5b506001600160a01b0381351690602081013590604001356108f2565b3480156103cf57600080fd5b506103d8610974565b604080516001600160a01b039092168252519081900360200190f35b34801561040057600080fd5b5061022e600480360360a081101561041757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160809091013516610983565b34801561045157600080fd5b5061022e6004803603604081101561046857600080fd5b506001600160a01b03813581169160200135166109e9565b34801561048c57600080fd5b5061022e600480360360808110156104a357600080fd5b506001600160a01b0381358116916020810135916040820135916060013516610b19565b3480156104d357600080fd5b506101bd600480360360408110156104ea57600080fd5b506001600160a01b038135169060200135610c05565b34801561050c57600080fd5b506101bd6004803603606081101561052357600080fd5b506001600160a01b03813581169160208101359091169060400135610c20565b34801561054f57600080fd5b5061026f6004803603608081101561056657600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610c2d565b34801561059857600080fd5b5061022e610cc5565b3480156105ad57600080fd5b506101bd600480360360408110156105c457600080fd5b506001600160a01b038135169060200135610d86565b3480156105e657600080fd5b506103d8610da0565b3480156105fb57600080fd5b5061022e6004803603604081101561061257600080fd5b50803590602001356001600160a01b0316610daf565b34801561063457600080fd5b506101bd6004803603604081101561064b57600080fd5b506001600160a01b038135169060200135610ea9565b34801561066d57600080fd5b506103d8610ec3565b34801561068257600080fd5b5061022e6004803603602081101561069957600080fd5b50356001600160a01b0316610ed2565b60006106b6848484610fe9565b949350505050565b600254600160a01b900460ff1681565b6001546001600160a01b03168360006106e8838387610fe9565b9050803410156107295760405162461bcd60e51b8152600401808060200182810382526033815260200180611e856033913960400191505060405180910390fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561077957600080fd5b505af115801561078d573d6000803e3d6000fd5b505050505061079d83838361102e565b6107aa8383838888611051565b505050505050565b6040805160018082528183019092526060918291906020808301908036833701905050915084826000815181106107e557fe5b6001600160a01b03929092166020928302919091018201526040805160018082528183019092529182810190803683375050600154919250610833918791506001600160a01b031685610fe9565b84038160008151811061084257fe5b602002602001018181525050935093915050565b6001546000906108719084906001600160a01b031684610fe9565b9392505050565b610880611075565b6000546001600160a01b039081169116146108e2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6108ed838284611079565b505050565b6040805160018082528183019092526060918291906020808301908036833701905050915060008260008151811061092657fe5b6001600160a01b039290921660209283029190910182015260408051600180825281830190925291828101908036833701905050600154909150610833906001600160a01b03168685610fe9565b6001546001600160a01b031681565b6000610990868685610fe9565b9050808410156109d15760405162461bcd60e51b8152600401808060200182810382526035815260200180611f096035913960400191505060405180910390fd5b6109dc86868361102e565b6107aa8686838686611051565b6109f1611075565b6000546001600160a01b03908116911614610a53576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600254600160a01b900460ff1615610ab2576040805162461bcd60e51b815260206004820152600b60248201527f494e495449414c495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b600280546001805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b0396871617909155600160a01b7fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091171691909216179055565b60015484906001600160a01b03166000610b34838387610fe9565b905080861015610b755760405162461bcd60e51b8152600401808060200182810382526033815260200180611faa6033913960400191505060405180910390fd5b610b8083838361102e565b610b8d8383838830611051565b60015460408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610bda57600080fd5b505af1158015610bee573d6000803e3d6000fd5b50505050610bfc84866111f0565b50505050505050565b6001546000906108719084906001600160a01b0316846112e3565b60006106b68484846112e3565b604080516001808252818301909252606091829190602080830190803683370190505091508582600081518110610c6057fe5b6001600160a01b0392909216602092830291909101820152604080516001808252818301909252918281019080368337019050509050610ca1868685610fe9565b840381600081518110610cb057fe5b60200260200101818152505094509492505050565b610ccd611075565b6000546001600160a01b03908116911614610d2f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600154600090610871906001600160a01b031684846112e3565b6000546001600160a01b031690565b610db7611075565b6000546001600160a01b03908116911614610e19576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6040516000906001600160a01b0383169084908381818185875af1925050503d8060008114610e64576040519150601f19603f3d011682016040523d82523d6000602084013e610e69565b606091505b50509050806108ed5760405162461bcd60e51b81526004018080602001828103825260258152602001806120086025913960400191505060405180910390fd5b600154600090610871906001600160a01b03168484610fe9565b6002546001600160a01b031681565b610eda611075565b6000546001600160a01b03908116911614610f3c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610f815760405162461bcd60e51b8152600401808060200182810382526026815260200180611e5f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080610ff68585611316565b600254909150611010906001600160a01b03168483611398565b60008151811061101c57fe5b60200260200101519150509392505050565b6002546108ed90849061104b906001600160a01b031682866114e5565b83611079565b61106e61105e84846115bd565b6110688787611316565b83611617565b5050505050565b3390565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b6020831061110a5780518252601f1990920191602091820191016110eb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461116c576040519150601f19603f3d011682016040523d82523d6000602084013e611171565b606091505b509150915081801561119f57508051158061119f575080806020019051602081101561119c57600080fd5b50515b61106e576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b6020831061123c5780518252601f19909201916020918201910161121d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461129e576040519150601f19603f3d011682016040523d82523d6000602084013e6112a3565b606091505b50509050806108ed5760405162461bcd60e51b8152600401808060200182810382526023815260200180611f876023913960400191505060405180910390fd5b6000806112f08585611316565b60025490915061130a906001600160a01b03168483611836565b60018151811061101c57fe5b6040805160028082526060808301845292602083019080368337019050509050828160008151811061134457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818160018151811061137257fe5b60200260200101906001600160a01b031690816001600160a01b03168152505092915050565b60606002825110156113f1576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561140957600080fd5b50604051908082528060200260200182016040528015611433578160200160208202803683370190505b509050828160018351038151811061144757fe5b60209081029190910101528151600019015b80156114dd576000806114968786600186038151811061147557fe5b602002602001015187868151811061148957fe5b602002602001015161196d565b915091506114b88484815181106114a957fe5b60200260200101518383611a3b565b8460018503815181106114c757fe5b6020908102919091010152505060001901611459565b509392505050565b60008060006114f48585611b13565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516002808252606080830184529260208301908036833701905050905082816000815181106115eb57fe5b602002602001018181525050818160018151811061160557fe5b60200260200101818152505092915050565b60005b60018351038110156118305760008084838151811061163557fe5b602002602001015185846001018151811061164c57fe5b60200260200101519150915060006116648383611b13565b509050600087856001018151811061167857fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146116a6578260006116aa565b6000835b91509150600060028a510388106116c157886116f7565b6116f7600260009054906101000a90046001600160a01b0316878c8b600201815181106116ea57fe5b60200260200101516114e5565b600254909150611711906001600160a01b031688886114e5565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561174e576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117b657818101518382015260200161179e565b50505050905090810190601f1680156117e35780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561180557600080fd5b505af1158015611819573d6000803e3d6000fd5b50506001909901985061161a975050505050505050565b50505050565b606060028251101561188f576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff811180156118a757600080fd5b506040519080825280602002602001820160405280156118d1578160200160208202803683370190505b50905082816000815181106118e257fe5b60200260200101818152505060005b60018351038110156114dd576000806119278786858151811061191057fe5b602002602001015187866001018151811061148957fe5b9150915061194984848151811061193a57fe5b60200260200101518383611bf1565b84846001018151811061195857fe5b602090810291909101015250506001016118f1565b600080600061197c8585611b13565b50905060008061198d8888886114e5565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156119c557600080fd5b505afa1580156119d9573d6000803e3d6000fd5b505050506040513d60608110156119ef57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614611a29578082611a2c565b81815b90999098509650505050505050565b6000808411611a7b5760405162461bcd60e51b815260040180806020018281038252602c815260200180611eb8602c913960400191505060405180910390fd5b600083118015611a8b5750600082115b611ac65760405162461bcd60e51b8152600401808060200182810382526028815260200180611f3e6028913960400191505060405180910390fd5b6000611ade6103e8611ad88688611cc9565b90611cc9565b90506000611af26103e5611ad88689611d2b565b9050611b096001828481611b0257fe5b0490611d6d565b9695505050505050565b600080826001600160a01b0316846001600160a01b03161415611b675760405162461bcd60e51b8152600401808060200182810382526025815260200180611ee46025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610611b87578284611b8a565b83835b90925090506001600160a01b038216611bea576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000808411611c315760405162461bcd60e51b815260040180806020018281038252602b815260200180611fdd602b913960400191505060405180910390fd5b600083118015611c415750600082115b611c7c5760405162461bcd60e51b8152600401808060200182810382526028815260200180611f3e6028913960400191505060405180910390fd5b6000611c8a856103e5611cc9565b90506000611c988285611cc9565b90506000611cb283611cac886103e8611cc9565b90611d6d565b9050808281611cbd57fe5b04979650505050505050565b600082611cd857506000611d25565b82820282848281611ce557fe5b0414611d225760405162461bcd60e51b8152600401808060200182810382526021815260200180611f666021913960400191505060405180910390fd5b90505b92915050565b600061087183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dc7565b600082820183811015611d22576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115611e565760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e1b578181015183820152602001611e03565b50505050905090810190601f168015611e485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373556e695632457863657373496e3a20657468546f546f6b656e20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e695632457863657373496e3a20746f6b656e546f546f6b656e20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e695632457863657373496e3a20746f6b656e546f45746820494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54576974686472617761626c653a2077697468647261774574682063616c6c206661696c6564a164736f6c6343000706000a"
},
"UniV2ExcessOut": {
"address": "0x6CE102f028dCDC42139d61B5A7a4456F85c819eE",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "ethToToken",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "ethAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
}
],
"name": "ethToTokenExcess",
"outputs": [
{
"internalType": "address[]",
"name": "excessTokens",
"type": "address[]"
},
{
"internalType": "int256[]",
"name": "excessAmounts",
"type": "int256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"name": "ethToTokenInputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "ethInAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "ethInAmount",
"type": "uint256"
}
],
"name": "ethToTokenOutputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IWETH",
"name": "_weth",
"type": "address"
},
{
"internalType": "address",
"name": "_factory",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "initialized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "ethAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "tokenToEth",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "ethAmount",
"type": "uint256"
}
],
"name": "tokenToEthExcess",
"outputs": [
{
"internalType": "address[]",
"name": "excessTokens",
"type": "address[]"
},
{
"internalType": "int256[]",
"name": "excessAmounts",
"type": "int256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "ethOutAmount",
"type": "uint256"
}
],
"name": "tokenToEthInputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
}
],
"name": "tokenToEthOutputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "ethOutAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "tokenToToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"name": "tokenToTokenExcess",
"outputs": [
{
"internalType": "address[]",
"name": "excessTokens",
"type": "address[]"
},
{
"internalType": "int256[]",
"name": "excessAmounts",
"type": "int256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"name": "tokenToTokenInputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "tokenIn",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "tokenOut",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenInAmount",
"type": "uint256"
}
],
"name": "tokenToTokenOutputAmount",
"outputs": [
{
"internalType": "uint256",
"name": "tokenOutAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "weth",
"outputs": [
{
"internalType": "contract IWETH",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address payable",
"name": "to",
"type": "address"
}
],
"name": "withdrawEth",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],