ocean-contracts 2.4.0__py3-none-any.whl → 2.4.1__py3-none-any.whl

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.
@@ -0,0 +1,1235 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "FixedRateExchangeEnterprise",
4
+ "sourceName": "contracts/pools/fixedRate/FixedRateExchangeEnterprise.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_router",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_enterpriseFeeCollector",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "anonymous": false,
24
+ "inputs": [
25
+ {
26
+ "indexed": true,
27
+ "internalType": "bytes32",
28
+ "name": "exchangeId",
29
+ "type": "bytes32"
30
+ },
31
+ {
32
+ "indexed": false,
33
+ "internalType": "address",
34
+ "name": "to",
35
+ "type": "address"
36
+ },
37
+ {
38
+ "indexed": false,
39
+ "internalType": "address",
40
+ "name": "token",
41
+ "type": "address"
42
+ },
43
+ {
44
+ "indexed": false,
45
+ "internalType": "uint256",
46
+ "name": "amount",
47
+ "type": "uint256"
48
+ }
49
+ ],
50
+ "name": "ConsumeMarketFee",
51
+ "type": "event"
52
+ },
53
+ {
54
+ "anonymous": false,
55
+ "inputs": [
56
+ {
57
+ "indexed": true,
58
+ "internalType": "bytes32",
59
+ "name": "exchangeId",
60
+ "type": "bytes32"
61
+ },
62
+ {
63
+ "indexed": true,
64
+ "internalType": "address",
65
+ "name": "exchangeOwner",
66
+ "type": "address"
67
+ }
68
+ ],
69
+ "name": "ExchangeActivated",
70
+ "type": "event"
71
+ },
72
+ {
73
+ "anonymous": false,
74
+ "inputs": [
75
+ {
76
+ "indexed": true,
77
+ "internalType": "bytes32",
78
+ "name": "exchangeId",
79
+ "type": "bytes32"
80
+ },
81
+ {
82
+ "indexed": true,
83
+ "internalType": "address",
84
+ "name": "allowedSwapper",
85
+ "type": "address"
86
+ }
87
+ ],
88
+ "name": "ExchangeAllowedSwapperChanged",
89
+ "type": "event"
90
+ },
91
+ {
92
+ "anonymous": false,
93
+ "inputs": [
94
+ {
95
+ "indexed": true,
96
+ "internalType": "bytes32",
97
+ "name": "exchangeId",
98
+ "type": "bytes32"
99
+ },
100
+ {
101
+ "indexed": true,
102
+ "internalType": "address",
103
+ "name": "baseToken",
104
+ "type": "address"
105
+ },
106
+ {
107
+ "indexed": true,
108
+ "internalType": "address",
109
+ "name": "datatoken",
110
+ "type": "address"
111
+ },
112
+ {
113
+ "indexed": false,
114
+ "internalType": "address",
115
+ "name": "exchangeOwner",
116
+ "type": "address"
117
+ },
118
+ {
119
+ "indexed": false,
120
+ "internalType": "uint256",
121
+ "name": "fixedRate",
122
+ "type": "uint256"
123
+ }
124
+ ],
125
+ "name": "ExchangeCreated",
126
+ "type": "event"
127
+ },
128
+ {
129
+ "anonymous": false,
130
+ "inputs": [
131
+ {
132
+ "indexed": true,
133
+ "internalType": "bytes32",
134
+ "name": "exchangeId",
135
+ "type": "bytes32"
136
+ },
137
+ {
138
+ "indexed": true,
139
+ "internalType": "address",
140
+ "name": "exchangeOwner",
141
+ "type": "address"
142
+ }
143
+ ],
144
+ "name": "ExchangeDeactivated",
145
+ "type": "event"
146
+ },
147
+ {
148
+ "anonymous": false,
149
+ "inputs": [
150
+ {
151
+ "indexed": true,
152
+ "internalType": "bytes32",
153
+ "name": "exchangeId",
154
+ "type": "bytes32"
155
+ },
156
+ {
157
+ "indexed": true,
158
+ "internalType": "address",
159
+ "name": "exchangeOwner",
160
+ "type": "address"
161
+ },
162
+ {
163
+ "indexed": false,
164
+ "internalType": "bool",
165
+ "name": "withMint",
166
+ "type": "bool"
167
+ }
168
+ ],
169
+ "name": "ExchangeMintStateChanged",
170
+ "type": "event"
171
+ },
172
+ {
173
+ "anonymous": false,
174
+ "inputs": [
175
+ {
176
+ "indexed": true,
177
+ "internalType": "bytes32",
178
+ "name": "exchangeId",
179
+ "type": "bytes32"
180
+ },
181
+ {
182
+ "indexed": true,
183
+ "internalType": "address",
184
+ "name": "exchangeOwner",
185
+ "type": "address"
186
+ },
187
+ {
188
+ "indexed": false,
189
+ "internalType": "uint256",
190
+ "name": "newRate",
191
+ "type": "uint256"
192
+ }
193
+ ],
194
+ "name": "ExchangeRateChanged",
195
+ "type": "event"
196
+ },
197
+ {
198
+ "anonymous": false,
199
+ "inputs": [
200
+ {
201
+ "indexed": true,
202
+ "internalType": "bytes32",
203
+ "name": "exchangeId",
204
+ "type": "bytes32"
205
+ },
206
+ {
207
+ "indexed": true,
208
+ "internalType": "address",
209
+ "name": "feeToken",
210
+ "type": "address"
211
+ },
212
+ {
213
+ "indexed": false,
214
+ "internalType": "uint256",
215
+ "name": "feeAmount",
216
+ "type": "uint256"
217
+ }
218
+ ],
219
+ "name": "MarketFeeCollected",
220
+ "type": "event"
221
+ },
222
+ {
223
+ "anonymous": false,
224
+ "inputs": [
225
+ {
226
+ "indexed": true,
227
+ "internalType": "bytes32",
228
+ "name": "exchangeId",
229
+ "type": "bytes32"
230
+ },
231
+ {
232
+ "indexed": true,
233
+ "internalType": "address",
234
+ "name": "feeToken",
235
+ "type": "address"
236
+ },
237
+ {
238
+ "indexed": false,
239
+ "internalType": "uint256",
240
+ "name": "feeAmount",
241
+ "type": "uint256"
242
+ }
243
+ ],
244
+ "name": "OceanFeeCollected",
245
+ "type": "event"
246
+ },
247
+ {
248
+ "anonymous": false,
249
+ "inputs": [
250
+ {
251
+ "indexed": true,
252
+ "internalType": "bytes32",
253
+ "name": "exchangeId",
254
+ "type": "bytes32"
255
+ },
256
+ {
257
+ "indexed": false,
258
+ "internalType": "address",
259
+ "name": "caller",
260
+ "type": "address"
261
+ },
262
+ {
263
+ "indexed": false,
264
+ "internalType": "address",
265
+ "name": "newMarketCollector",
266
+ "type": "address"
267
+ },
268
+ {
269
+ "indexed": false,
270
+ "internalType": "uint256",
271
+ "name": "swapFee",
272
+ "type": "uint256"
273
+ }
274
+ ],
275
+ "name": "PublishMarketFeeChanged",
276
+ "type": "event"
277
+ },
278
+ {
279
+ "anonymous": false,
280
+ "inputs": [
281
+ {
282
+ "indexed": true,
283
+ "internalType": "bytes32",
284
+ "name": "exchangeId",
285
+ "type": "bytes32"
286
+ },
287
+ {
288
+ "indexed": false,
289
+ "internalType": "uint256",
290
+ "name": "oceanFeeAmount",
291
+ "type": "uint256"
292
+ },
293
+ {
294
+ "indexed": false,
295
+ "internalType": "uint256",
296
+ "name": "marketFeeAmount",
297
+ "type": "uint256"
298
+ },
299
+ {
300
+ "indexed": false,
301
+ "internalType": "uint256",
302
+ "name": "consumeMarketFeeAmount",
303
+ "type": "uint256"
304
+ },
305
+ {
306
+ "indexed": false,
307
+ "internalType": "address",
308
+ "name": "tokenFeeAddress",
309
+ "type": "address"
310
+ }
311
+ ],
312
+ "name": "SWAP_FEES",
313
+ "type": "event"
314
+ },
315
+ {
316
+ "anonymous": false,
317
+ "inputs": [
318
+ {
319
+ "indexed": true,
320
+ "internalType": "bytes32",
321
+ "name": "exchangeId",
322
+ "type": "bytes32"
323
+ },
324
+ {
325
+ "indexed": true,
326
+ "internalType": "address",
327
+ "name": "by",
328
+ "type": "address"
329
+ },
330
+ {
331
+ "indexed": false,
332
+ "internalType": "uint256",
333
+ "name": "baseTokenSwappedAmount",
334
+ "type": "uint256"
335
+ },
336
+ {
337
+ "indexed": false,
338
+ "internalType": "uint256",
339
+ "name": "datatokenSwappedAmount",
340
+ "type": "uint256"
341
+ },
342
+ {
343
+ "indexed": false,
344
+ "internalType": "address",
345
+ "name": "tokenOutAddress",
346
+ "type": "address"
347
+ },
348
+ {
349
+ "indexed": false,
350
+ "internalType": "uint256",
351
+ "name": "marketFeeAmount",
352
+ "type": "uint256"
353
+ },
354
+ {
355
+ "indexed": false,
356
+ "internalType": "uint256",
357
+ "name": "oceanFeeAmount",
358
+ "type": "uint256"
359
+ },
360
+ {
361
+ "indexed": false,
362
+ "internalType": "uint256",
363
+ "name": "consumeMarketFeeAmount",
364
+ "type": "uint256"
365
+ }
366
+ ],
367
+ "name": "Swapped",
368
+ "type": "event"
369
+ },
370
+ {
371
+ "anonymous": false,
372
+ "inputs": [
373
+ {
374
+ "indexed": true,
375
+ "internalType": "bytes32",
376
+ "name": "exchangeId",
377
+ "type": "bytes32"
378
+ },
379
+ {
380
+ "indexed": true,
381
+ "internalType": "address",
382
+ "name": "to",
383
+ "type": "address"
384
+ },
385
+ {
386
+ "indexed": true,
387
+ "internalType": "address",
388
+ "name": "token",
389
+ "type": "address"
390
+ },
391
+ {
392
+ "indexed": false,
393
+ "internalType": "uint256",
394
+ "name": "amount",
395
+ "type": "uint256"
396
+ }
397
+ ],
398
+ "name": "TokenCollected",
399
+ "type": "event"
400
+ },
401
+ {
402
+ "inputs": [],
403
+ "name": "MAX_FEE",
404
+ "outputs": [
405
+ {
406
+ "internalType": "uint256",
407
+ "name": "",
408
+ "type": "uint256"
409
+ }
410
+ ],
411
+ "stateMutability": "view",
412
+ "type": "function"
413
+ },
414
+ {
415
+ "inputs": [],
416
+ "name": "MIN_FEE",
417
+ "outputs": [
418
+ {
419
+ "internalType": "uint256",
420
+ "name": "",
421
+ "type": "uint256"
422
+ }
423
+ ],
424
+ "stateMutability": "view",
425
+ "type": "function"
426
+ },
427
+ {
428
+ "inputs": [],
429
+ "name": "MIN_RATE",
430
+ "outputs": [
431
+ {
432
+ "internalType": "uint256",
433
+ "name": "",
434
+ "type": "uint256"
435
+ }
436
+ ],
437
+ "stateMutability": "view",
438
+ "type": "function"
439
+ },
440
+ {
441
+ "inputs": [
442
+ {
443
+ "internalType": "bytes32",
444
+ "name": "exchangeId",
445
+ "type": "bytes32"
446
+ },
447
+ {
448
+ "internalType": "uint256",
449
+ "name": "datatokenAmount",
450
+ "type": "uint256"
451
+ },
452
+ {
453
+ "internalType": "uint256",
454
+ "name": "maxBaseTokenAmount",
455
+ "type": "uint256"
456
+ },
457
+ {
458
+ "internalType": "address",
459
+ "name": "consumeMarketAddress",
460
+ "type": "address"
461
+ },
462
+ {
463
+ "internalType": "uint256",
464
+ "name": "consumeMarketSwapFeeAmount",
465
+ "type": "uint256"
466
+ }
467
+ ],
468
+ "name": "buyDT",
469
+ "outputs": [],
470
+ "stateMutability": "nonpayable",
471
+ "type": "function"
472
+ },
473
+ {
474
+ "inputs": [
475
+ {
476
+ "internalType": "bytes32",
477
+ "name": "exchangeId",
478
+ "type": "bytes32"
479
+ },
480
+ {
481
+ "internalType": "uint256",
482
+ "name": "datatokenAmount",
483
+ "type": "uint256"
484
+ },
485
+ {
486
+ "internalType": "uint256",
487
+ "name": "consumeMarketSwapFeeAmount",
488
+ "type": "uint256"
489
+ }
490
+ ],
491
+ "name": "calcBaseInGivenOutDT",
492
+ "outputs": [
493
+ {
494
+ "components": [
495
+ {
496
+ "internalType": "uint256",
497
+ "name": "baseTokenAmount",
498
+ "type": "uint256"
499
+ },
500
+ {
501
+ "internalType": "uint256",
502
+ "name": "oceanFeeAmount",
503
+ "type": "uint256"
504
+ },
505
+ {
506
+ "internalType": "uint256",
507
+ "name": "publishMarketFeeAmount",
508
+ "type": "uint256"
509
+ },
510
+ {
511
+ "internalType": "uint256",
512
+ "name": "consumeMarketFeeAmount",
513
+ "type": "uint256"
514
+ }
515
+ ],
516
+ "internalType": "struct FixedRateExchangeEnterprise.Fees",
517
+ "name": "",
518
+ "type": "tuple"
519
+ }
520
+ ],
521
+ "stateMutability": "view",
522
+ "type": "function"
523
+ },
524
+ {
525
+ "inputs": [
526
+ {
527
+ "internalType": "bytes32",
528
+ "name": "exchangeId",
529
+ "type": "bytes32"
530
+ },
531
+ {
532
+ "internalType": "uint256",
533
+ "name": "datatokenAmount",
534
+ "type": "uint256"
535
+ },
536
+ {
537
+ "internalType": "uint256",
538
+ "name": "consumeMarketSwapFeeAmount",
539
+ "type": "uint256"
540
+ }
541
+ ],
542
+ "name": "calcBaseOutGivenInDT",
543
+ "outputs": [
544
+ {
545
+ "components": [
546
+ {
547
+ "internalType": "uint256",
548
+ "name": "baseTokenAmount",
549
+ "type": "uint256"
550
+ },
551
+ {
552
+ "internalType": "uint256",
553
+ "name": "oceanFeeAmount",
554
+ "type": "uint256"
555
+ },
556
+ {
557
+ "internalType": "uint256",
558
+ "name": "publishMarketFeeAmount",
559
+ "type": "uint256"
560
+ },
561
+ {
562
+ "internalType": "uint256",
563
+ "name": "consumeMarketFeeAmount",
564
+ "type": "uint256"
565
+ }
566
+ ],
567
+ "internalType": "struct FixedRateExchangeEnterprise.Fees",
568
+ "name": "",
569
+ "type": "tuple"
570
+ }
571
+ ],
572
+ "stateMutability": "view",
573
+ "type": "function"
574
+ },
575
+ {
576
+ "inputs": [
577
+ {
578
+ "internalType": "bytes32",
579
+ "name": "exchangeId",
580
+ "type": "bytes32"
581
+ },
582
+ {
583
+ "internalType": "uint256",
584
+ "name": "amount",
585
+ "type": "uint256"
586
+ }
587
+ ],
588
+ "name": "collectBT",
589
+ "outputs": [],
590
+ "stateMutability": "nonpayable",
591
+ "type": "function"
592
+ },
593
+ {
594
+ "inputs": [
595
+ {
596
+ "internalType": "bytes32",
597
+ "name": "exchangeId",
598
+ "type": "bytes32"
599
+ },
600
+ {
601
+ "internalType": "uint256",
602
+ "name": "amount",
603
+ "type": "uint256"
604
+ }
605
+ ],
606
+ "name": "collectDT",
607
+ "outputs": [],
608
+ "stateMutability": "nonpayable",
609
+ "type": "function"
610
+ },
611
+ {
612
+ "inputs": [
613
+ {
614
+ "internalType": "bytes32",
615
+ "name": "exchangeId",
616
+ "type": "bytes32"
617
+ }
618
+ ],
619
+ "name": "collectMarketFee",
620
+ "outputs": [],
621
+ "stateMutability": "nonpayable",
622
+ "type": "function"
623
+ },
624
+ {
625
+ "inputs": [
626
+ {
627
+ "internalType": "bytes32[]",
628
+ "name": "exchangeId",
629
+ "type": "bytes32[]"
630
+ }
631
+ ],
632
+ "name": "collectMarketFeeBatch",
633
+ "outputs": [],
634
+ "stateMutability": "nonpayable",
635
+ "type": "function"
636
+ },
637
+ {
638
+ "inputs": [
639
+ {
640
+ "internalType": "bytes32",
641
+ "name": "exchangeId",
642
+ "type": "bytes32"
643
+ }
644
+ ],
645
+ "name": "collectOceanFee",
646
+ "outputs": [],
647
+ "stateMutability": "nonpayable",
648
+ "type": "function"
649
+ },
650
+ {
651
+ "inputs": [
652
+ {
653
+ "internalType": "bytes32[]",
654
+ "name": "exchangeId",
655
+ "type": "bytes32[]"
656
+ }
657
+ ],
658
+ "name": "collectOceanFeeBatch",
659
+ "outputs": [],
660
+ "stateMutability": "nonpayable",
661
+ "type": "function"
662
+ },
663
+ {
664
+ "inputs": [
665
+ {
666
+ "internalType": "address",
667
+ "name": "datatoken",
668
+ "type": "address"
669
+ },
670
+ {
671
+ "internalType": "address[]",
672
+ "name": "addresses",
673
+ "type": "address[]"
674
+ },
675
+ {
676
+ "internalType": "uint256[]",
677
+ "name": "uints",
678
+ "type": "uint256[]"
679
+ }
680
+ ],
681
+ "name": "createWithDecimals",
682
+ "outputs": [
683
+ {
684
+ "internalType": "bytes32",
685
+ "name": "exchangeId",
686
+ "type": "bytes32"
687
+ }
688
+ ],
689
+ "stateMutability": "nonpayable",
690
+ "type": "function"
691
+ },
692
+ {
693
+ "inputs": [],
694
+ "name": "enterpriseFeeCollector",
695
+ "outputs": [
696
+ {
697
+ "internalType": "address",
698
+ "name": "",
699
+ "type": "address"
700
+ }
701
+ ],
702
+ "stateMutability": "view",
703
+ "type": "function"
704
+ },
705
+ {
706
+ "inputs": [
707
+ {
708
+ "internalType": "address",
709
+ "name": "baseToken",
710
+ "type": "address"
711
+ },
712
+ {
713
+ "internalType": "address",
714
+ "name": "datatoken",
715
+ "type": "address"
716
+ }
717
+ ],
718
+ "name": "generateExchangeId",
719
+ "outputs": [
720
+ {
721
+ "internalType": "bytes32",
722
+ "name": "",
723
+ "type": "bytes32"
724
+ }
725
+ ],
726
+ "stateMutability": "pure",
727
+ "type": "function"
728
+ },
729
+ {
730
+ "inputs": [
731
+ {
732
+ "internalType": "bytes32",
733
+ "name": "exchangeId",
734
+ "type": "bytes32"
735
+ }
736
+ ],
737
+ "name": "getAllowedSwapper",
738
+ "outputs": [
739
+ {
740
+ "internalType": "address",
741
+ "name": "allowedSwapper",
742
+ "type": "address"
743
+ }
744
+ ],
745
+ "stateMutability": "view",
746
+ "type": "function"
747
+ },
748
+ {
749
+ "inputs": [
750
+ {
751
+ "internalType": "bytes32",
752
+ "name": "exchangeId",
753
+ "type": "bytes32"
754
+ }
755
+ ],
756
+ "name": "getBTSupply",
757
+ "outputs": [
758
+ {
759
+ "internalType": "uint256",
760
+ "name": "supply",
761
+ "type": "uint256"
762
+ }
763
+ ],
764
+ "stateMutability": "view",
765
+ "type": "function"
766
+ },
767
+ {
768
+ "inputs": [
769
+ {
770
+ "internalType": "bytes32",
771
+ "name": "exchangeId",
772
+ "type": "bytes32"
773
+ }
774
+ ],
775
+ "name": "getDTSupply",
776
+ "outputs": [
777
+ {
778
+ "internalType": "uint256",
779
+ "name": "supply",
780
+ "type": "uint256"
781
+ }
782
+ ],
783
+ "stateMutability": "view",
784
+ "type": "function"
785
+ },
786
+ {
787
+ "inputs": [
788
+ {
789
+ "internalType": "bytes32",
790
+ "name": "exchangeId",
791
+ "type": "bytes32"
792
+ }
793
+ ],
794
+ "name": "getExchange",
795
+ "outputs": [
796
+ {
797
+ "internalType": "address",
798
+ "name": "exchangeOwner",
799
+ "type": "address"
800
+ },
801
+ {
802
+ "internalType": "address",
803
+ "name": "datatoken",
804
+ "type": "address"
805
+ },
806
+ {
807
+ "internalType": "uint256",
808
+ "name": "dtDecimals",
809
+ "type": "uint256"
810
+ },
811
+ {
812
+ "internalType": "address",
813
+ "name": "baseToken",
814
+ "type": "address"
815
+ },
816
+ {
817
+ "internalType": "uint256",
818
+ "name": "btDecimals",
819
+ "type": "uint256"
820
+ },
821
+ {
822
+ "internalType": "uint256",
823
+ "name": "fixedRate",
824
+ "type": "uint256"
825
+ },
826
+ {
827
+ "internalType": "bool",
828
+ "name": "active",
829
+ "type": "bool"
830
+ },
831
+ {
832
+ "internalType": "uint256",
833
+ "name": "dtSupply",
834
+ "type": "uint256"
835
+ },
836
+ {
837
+ "internalType": "uint256",
838
+ "name": "btSupply",
839
+ "type": "uint256"
840
+ },
841
+ {
842
+ "internalType": "uint256",
843
+ "name": "dtBalance",
844
+ "type": "uint256"
845
+ },
846
+ {
847
+ "internalType": "uint256",
848
+ "name": "btBalance",
849
+ "type": "uint256"
850
+ },
851
+ {
852
+ "internalType": "bool",
853
+ "name": "withMint",
854
+ "type": "bool"
855
+ }
856
+ ],
857
+ "stateMutability": "view",
858
+ "type": "function"
859
+ },
860
+ {
861
+ "inputs": [],
862
+ "name": "getExchanges",
863
+ "outputs": [
864
+ {
865
+ "internalType": "bytes32[]",
866
+ "name": "",
867
+ "type": "bytes32[]"
868
+ }
869
+ ],
870
+ "stateMutability": "view",
871
+ "type": "function"
872
+ },
873
+ {
874
+ "inputs": [
875
+ {
876
+ "internalType": "uint256",
877
+ "name": "startIndex",
878
+ "type": "uint256"
879
+ },
880
+ {
881
+ "internalType": "uint256",
882
+ "name": "endIndex",
883
+ "type": "uint256"
884
+ }
885
+ ],
886
+ "name": "getExchangesInRange",
887
+ "outputs": [
888
+ {
889
+ "internalType": "bytes32[]",
890
+ "name": "",
891
+ "type": "bytes32[]"
892
+ }
893
+ ],
894
+ "stateMutability": "view",
895
+ "type": "function"
896
+ },
897
+ {
898
+ "inputs": [
899
+ {
900
+ "internalType": "bytes32",
901
+ "name": "exchangeId",
902
+ "type": "bytes32"
903
+ }
904
+ ],
905
+ "name": "getFeesInfo",
906
+ "outputs": [
907
+ {
908
+ "internalType": "uint256",
909
+ "name": "marketFee",
910
+ "type": "uint256"
911
+ },
912
+ {
913
+ "internalType": "address",
914
+ "name": "marketFeeCollector",
915
+ "type": "address"
916
+ },
917
+ {
918
+ "internalType": "uint256",
919
+ "name": "opcFee",
920
+ "type": "uint256"
921
+ },
922
+ {
923
+ "internalType": "uint256",
924
+ "name": "marketFeeAvailable",
925
+ "type": "uint256"
926
+ },
927
+ {
928
+ "internalType": "uint256",
929
+ "name": "oceanFeeAvailable",
930
+ "type": "uint256"
931
+ }
932
+ ],
933
+ "stateMutability": "view",
934
+ "type": "function"
935
+ },
936
+ {
937
+ "inputs": [],
938
+ "name": "getId",
939
+ "outputs": [
940
+ {
941
+ "internalType": "uint8",
942
+ "name": "",
943
+ "type": "uint8"
944
+ }
945
+ ],
946
+ "stateMutability": "pure",
947
+ "type": "function"
948
+ },
949
+ {
950
+ "inputs": [
951
+ {
952
+ "internalType": "bytes32",
953
+ "name": "exchangeId",
954
+ "type": "bytes32"
955
+ }
956
+ ],
957
+ "name": "getMarketFee",
958
+ "outputs": [
959
+ {
960
+ "internalType": "uint256",
961
+ "name": "",
962
+ "type": "uint256"
963
+ }
964
+ ],
965
+ "stateMutability": "view",
966
+ "type": "function"
967
+ },
968
+ {
969
+ "inputs": [],
970
+ "name": "getNumberOfExchanges",
971
+ "outputs": [
972
+ {
973
+ "internalType": "uint256",
974
+ "name": "",
975
+ "type": "uint256"
976
+ }
977
+ ],
978
+ "stateMutability": "view",
979
+ "type": "function"
980
+ },
981
+ {
982
+ "inputs": [
983
+ {
984
+ "internalType": "address",
985
+ "name": "baseTokenAddress",
986
+ "type": "address"
987
+ }
988
+ ],
989
+ "name": "getOPCFee",
990
+ "outputs": [
991
+ {
992
+ "internalType": "uint256",
993
+ "name": "",
994
+ "type": "uint256"
995
+ }
996
+ ],
997
+ "stateMutability": "view",
998
+ "type": "function"
999
+ },
1000
+ {
1001
+ "inputs": [
1002
+ {
1003
+ "internalType": "address",
1004
+ "name": "baseTokenAddress",
1005
+ "type": "address"
1006
+ },
1007
+ {
1008
+ "internalType": "uint256",
1009
+ "name": "amount",
1010
+ "type": "uint256"
1011
+ }
1012
+ ],
1013
+ "name": "getOPEFee",
1014
+ "outputs": [
1015
+ {
1016
+ "internalType": "uint256",
1017
+ "name": "",
1018
+ "type": "uint256"
1019
+ }
1020
+ ],
1021
+ "stateMutability": "view",
1022
+ "type": "function"
1023
+ },
1024
+ {
1025
+ "inputs": [
1026
+ {
1027
+ "internalType": "bytes32",
1028
+ "name": "exchangeId",
1029
+ "type": "bytes32"
1030
+ }
1031
+ ],
1032
+ "name": "getRate",
1033
+ "outputs": [
1034
+ {
1035
+ "internalType": "uint256",
1036
+ "name": "",
1037
+ "type": "uint256"
1038
+ }
1039
+ ],
1040
+ "stateMutability": "view",
1041
+ "type": "function"
1042
+ },
1043
+ {
1044
+ "inputs": [
1045
+ {
1046
+ "internalType": "bytes32",
1047
+ "name": "exchangeId",
1048
+ "type": "bytes32"
1049
+ }
1050
+ ],
1051
+ "name": "isActive",
1052
+ "outputs": [
1053
+ {
1054
+ "internalType": "bool",
1055
+ "name": "",
1056
+ "type": "bool"
1057
+ }
1058
+ ],
1059
+ "stateMutability": "view",
1060
+ "type": "function"
1061
+ },
1062
+ {
1063
+ "inputs": [
1064
+ {
1065
+ "internalType": "address",
1066
+ "name": "addr",
1067
+ "type": "address"
1068
+ }
1069
+ ],
1070
+ "name": "isContract",
1071
+ "outputs": [
1072
+ {
1073
+ "internalType": "bool",
1074
+ "name": "",
1075
+ "type": "bool"
1076
+ }
1077
+ ],
1078
+ "stateMutability": "view",
1079
+ "type": "function"
1080
+ },
1081
+ {
1082
+ "inputs": [],
1083
+ "name": "router",
1084
+ "outputs": [
1085
+ {
1086
+ "internalType": "address",
1087
+ "name": "",
1088
+ "type": "address"
1089
+ }
1090
+ ],
1091
+ "stateMutability": "view",
1092
+ "type": "function"
1093
+ },
1094
+ {
1095
+ "inputs": [
1096
+ {
1097
+ "internalType": "bytes32",
1098
+ "name": "exchangeId",
1099
+ "type": "bytes32"
1100
+ },
1101
+ {
1102
+ "internalType": "uint256",
1103
+ "name": "datatokenAmount",
1104
+ "type": "uint256"
1105
+ },
1106
+ {
1107
+ "internalType": "uint256",
1108
+ "name": "minBaseTokenAmount",
1109
+ "type": "uint256"
1110
+ },
1111
+ {
1112
+ "internalType": "address",
1113
+ "name": "consumeMarketAddress",
1114
+ "type": "address"
1115
+ },
1116
+ {
1117
+ "internalType": "uint256",
1118
+ "name": "consumeMarketSwapFeeAmount",
1119
+ "type": "uint256"
1120
+ }
1121
+ ],
1122
+ "name": "sellDT",
1123
+ "outputs": [],
1124
+ "stateMutability": "nonpayable",
1125
+ "type": "function"
1126
+ },
1127
+ {
1128
+ "inputs": [
1129
+ {
1130
+ "internalType": "bytes32",
1131
+ "name": "exchangeId",
1132
+ "type": "bytes32"
1133
+ },
1134
+ {
1135
+ "internalType": "address",
1136
+ "name": "newAllowedSwapper",
1137
+ "type": "address"
1138
+ }
1139
+ ],
1140
+ "name": "setAllowedSwapper",
1141
+ "outputs": [],
1142
+ "stateMutability": "nonpayable",
1143
+ "type": "function"
1144
+ },
1145
+ {
1146
+ "inputs": [
1147
+ {
1148
+ "internalType": "bytes32",
1149
+ "name": "exchangeId",
1150
+ "type": "bytes32"
1151
+ },
1152
+ {
1153
+ "internalType": "uint256",
1154
+ "name": "newRate",
1155
+ "type": "uint256"
1156
+ }
1157
+ ],
1158
+ "name": "setRate",
1159
+ "outputs": [],
1160
+ "stateMutability": "nonpayable",
1161
+ "type": "function"
1162
+ },
1163
+ {
1164
+ "inputs": [
1165
+ {
1166
+ "internalType": "bytes32",
1167
+ "name": "exchangeId",
1168
+ "type": "bytes32"
1169
+ }
1170
+ ],
1171
+ "name": "toggleExchangeState",
1172
+ "outputs": [],
1173
+ "stateMutability": "nonpayable",
1174
+ "type": "function"
1175
+ },
1176
+ {
1177
+ "inputs": [
1178
+ {
1179
+ "internalType": "bytes32",
1180
+ "name": "exchangeId",
1181
+ "type": "bytes32"
1182
+ },
1183
+ {
1184
+ "internalType": "bool",
1185
+ "name": "withMint",
1186
+ "type": "bool"
1187
+ }
1188
+ ],
1189
+ "name": "toggleMintState",
1190
+ "outputs": [],
1191
+ "stateMutability": "nonpayable",
1192
+ "type": "function"
1193
+ },
1194
+ {
1195
+ "inputs": [
1196
+ {
1197
+ "internalType": "bytes32",
1198
+ "name": "exchangeId",
1199
+ "type": "bytes32"
1200
+ },
1201
+ {
1202
+ "internalType": "uint256",
1203
+ "name": "_newMarketFee",
1204
+ "type": "uint256"
1205
+ }
1206
+ ],
1207
+ "name": "updateMarketFee",
1208
+ "outputs": [],
1209
+ "stateMutability": "nonpayable",
1210
+ "type": "function"
1211
+ },
1212
+ {
1213
+ "inputs": [
1214
+ {
1215
+ "internalType": "bytes32",
1216
+ "name": "exchangeId",
1217
+ "type": "bytes32"
1218
+ },
1219
+ {
1220
+ "internalType": "address",
1221
+ "name": "_newMarketCollector",
1222
+ "type": "address"
1223
+ }
1224
+ ],
1225
+ "name": "updateMarketFeeCollector",
1226
+ "outputs": [],
1227
+ "stateMutability": "nonpayable",
1228
+ "type": "function"
1229
+ }
1230
+ ],
1231
+ "bytecode": "0x60c06040523480156200001157600080fd5b5060405162004ac438038062004ac48339810160408190526200003491620000d9565b60016000556001600160a01b038216620000a45760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a2057726f6e6720526f75746572206044820152666164647265737360c81b606482015260840160405180910390fd5b6001600160a01b039182166080521660a05262000111565b80516001600160a01b0381168114620000d457600080fd5b919050565b60008060408385031215620000ed57600080fd5b620000f883620000bc565b91506200010860208401620000bc565b90509250929050565b60805160a051614924620001a060003960008181610342015281816114d40152818161152e01528181611ac201528181611b1d015281816125170152818161257201528181612d3d01528181612d9c01528181612e5e015281816132150152818161327401526133360152600081816107010152818161073001528181612c40015261353701526149246000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806376c7a3c711610130578063b8421e2b116100b8578063d819bfef1161007c578063d819bfef146106b7578063dd1bc96a146106c3578063ed2fc859146106d6578063f32f9476146106e9578063f887ea40146106fc57600080fd5b8063b8421e2b14610629578063bc063e1a1461063c578063c2c0d1ab1461064b578063c612e48a14610691578063c66274ea146106a457600080fd5b806385fcbc2f116100ff57806385fcbc2f146105c557806388823872146105d8578063b32b56f9146105eb578063b42414291461060e578063b686bcaf1461061657600080fd5b806376c7a3c7146104b157806379dd2836146104b95780637c82ebe9146104cc578063855058dd146104df57600080fd5b806349b69e33116101be5780635d1ca631116101825780635d1ca6311461045657806360311e9514610465578063680819eb1461047857806368c4b7e91461048b578063730523e51461049e57600080fd5b806349b69e331461037c5780634c87087d1461038f57806350d571d51461040d5780635acfedc7146104205780635c36901c1461043357600080fd5b806324cb477e1161020557806324cb477e146102df5780632d24deff146102f45780632e7e23b3146103075780633b7008fb1461032a57806347f1bc4b1461033d57600080fd5b8063012c3275146102375780630b3b430d1461025d57806316279055146102a05780631e2e3a6b146102ca575b600080fd5b61024a6102453660046140da565b610723565b6040519081526020015b60405180910390f35b61027061026b3660046141b0565b6110f0565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a001610254565b6102ba6102ae3660046141c9565b3b63ffffffff16151590565b6040519015158152602001610254565b6102d26111fa565b60405161025491906141e6565b6102f26102ed3660046141b0565b611252565b005b6102f261030236600461422a565b61147b565b61024a6103153660046141b0565b60009081526001602052604090206008015490565b61024a61033836600461429f565b6114d0565b6103647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610254565b6102f261038a36600461422a565b6115a2565b6103a261039d3660046141b0565b6115e8565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e085015261010084015261012083015261014082019290925290151561016082015261018001610254565b6102f261041b3660046142cb565b61168d565b6102f261042e3660046141b0565b611bdc565b6102ba6104413660046141b0565b60009081526001602052604090205460ff1690565b60405160038152602001610254565b6102f2610473366004614314565b611bfa565b6102f2610486366004614344565b611de1565b6102f26104993660046142cb565b611fdf565b6102d26104ac366004614344565b612619565b61024a612780565b6102f26104c7366004614374565b612797565b6102f26104da366004614314565b6129a1565b6103646104ed3660046141b0565b60009081526001602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095529483015484169582019590955260028201548316606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015485820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015492831615156101a082015292909104166101c090910181905290565b61024a6105d33660046141b0565b612a74565b6102f26105e6366004614344565b612aa8565b61024a6105f93660046141b0565b60009081526001602052604090206003015490565b60025461024a565b6102f26106243660046141b0565b612c0d565b61024a6106373660046141c9565b612c1e565b61024a6706f05b59d3b2000081565b61065e610659366004614399565b612cad565b60405161025491908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b6102f261069f366004614344565b612f98565b61024a6106b23660046141b0565b612fb4565b61024a6402540be40081565b61065e6106d1366004614399565b613185565b61024a6106e43660046143c5565b61345e565b6102f26106f7366004614344565b613496565b6103647f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a25760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b6005825110156107eb5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840ead2dce8e640d8cadccee8d60631b6044820152606401610799565b60048351101561083d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420616464726573736573206c656e67746800000000000000006044820152606401610799565b60006001600160a01b03168360008151811061085b5761085b6143f3565b60200260200101516001600160a01b031614156108d65760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365546044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610799565b610901836000815181106108ec576108ec6143f3565b602002602001015163ffffffff903b16151590565b6109655760405162461bcd60e51b815260206004820152602f60248201527f46697865645261746545786368616e67653a20496e76616c696420626173655460448201526e6f6b656e2c206c6f6f6b7320454f4160881b6064820152608401610799565b6001600160a01b0384166109d75760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610799565b836001600160a01b0316836000815181106109f4576109f46143f3565b60200260200101516001600160a01b03161415610a795760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365546f6b656e0000000000000000006064820152608401610799565b6402540be40082600281518110610a9257610a926143f3565b60200260200101511015610ab85760405162461bcd60e51b815260040161079990614409565b610adc83600081518110610ace57610ace6143f3565b60200260200101518561345e565b60008181526001602052604090206003015490915015610b525760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610799565b60006001905082600481518110610b6b57610b6b6143f3565b602002602001015160001415610b7f575060005b604051806101e0016040528060011515815260200185600181518110610ba757610ba76143f3565b60200260200101516001600160a01b03168152602001866001600160a01b0316815260200185600081518110610bdf57610bdf6143f3565b60200260200101516001600160a01b0316815260200184600281518110610c0857610c086143f3565b6020026020010151815260200184600181518110610c2857610c286143f3565b6020026020010151815260200184600081518110610c4857610c486143f3565b60200260200101518152602001600081526020016000815260200184600381518110610c7657610c766143f3565b6020026020010151815260200185600281518110610c9657610c966143f3565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610cd557610cd56143f3565b6020908102919091018101516001600160a01b039081169092526000858152600180835260409182902085518154948701518616610100908102610100600160a81b031992151583166001600160a81b0319978816171783559387015192820180549387166001600160a01b03199485161790556060870151600283018054918816918516919091179055608087015160038084019190915560a0880151600484015560c0880151600584015560e0880151600684015584880151600784015561012088015160088401556101408801516009840180549189169190951617909355610160870151600a830155610180870151600b8301556101a0870151600c90920180546101c090980151909616909302901515909216949092169390931792909217905583518491908110610e0e57610e0e6143f3565b602002602001015160001480610e515750610e33612710670de0b6b3a764000061446d565b83600381518110610e4657610e466143f3565b602002602001015110155b610e8f5760405162461bcd60e51b815260206004820152600f60248201526e5377617046656520746f6f206c6f7760881b6044820152606401610799565b6706f05b59d3b2000083600381518110610eab57610eab6143f3565b60200260200101511115610ef45760405162461bcd60e51b815260206004820152601060248201526f0a6eec2e08ccaca40e8dede40d0d2ced60831b6044820152606401610799565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0183905584516001600160a01b038716918691610f4357610f436143f3565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610f8957610f896143f3565b602002602001015187600281518110610fa457610fa46143f3565b6020026020010151604051610fce9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610fe957610fe96143f3565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a38360038151811061103a5761103a6143f3565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3817f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d5233866002815181106110ae576110ae6143f3565b6020026020010151866003815181106110c9576110c96143f3565b60200260200101516040516110e09392919061448f565b60405180910390a2509392505050565b600081815260016020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015284880154811695840195909552600284015485166060840181905260038501546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c08301528787529490935292939182918291906111de90612c1e565b9350806101600151925080610180015191505091939590929450565b6060600280548060200260200160405190810160405280929190818152602001828054801561124857602002820191906000526020600020905b815481526020019060010190808311611234575b5050505050905090565b600081815260016020819052604091829020015490516396fb3eaf60e01b815233600482015282916001600160a01b03169081906396fb3eaf90602401602060405180830381865afa1580156112ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d091906144b3565b806113b75750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134191906144d0565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ac91906144d0565b6001600160a01b0316145b6113d35760405162461bcd60e51b8152600401610799906144ed565b60008381526001602052604090205460ff161561142f57600083815260016020526040808220805460ff1916905551339185917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a3505050565b6000838152600160208190526040808320805460ff191690921790915551339185917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35b505050565b6114836134a8565b60005b818110156114c1576114af8383838181106114a3576114a36143f3565b90506020020135613502565b806114b981614536565b915050611486565b506114cc6001600055565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115085750600061159c565b604051634594558f60e11b81526001600160a01b038481166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001690638b28ab1e90604401602060405180830381865afa158015611575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115999190614551565b90505b92915050565b6115aa6134a8565b60005b818110156114c1576115d68383838181106115ca576115ca6143f3565b9050602002013561361c565b806115e081614536565b9150506115ad565b600081815260016020819052604082208054918101546004820154600283015460058401546003909401546001600160a01b0361010087048116979481169693959216939192909160ff90911690808080806116438d612fb4565b945061164e8d612a74565b60009d8e5260016020526040909d2060068101546007820154600c909201549d9f9c9e9b9d9a9c999b989a9799969897909691955060ff169350915050565b600085815260016020526040902054859060ff166116bd5760405162461bcd60e51b81526004016107999061456a565b6116c56134a8565b846116e25760405162461bcd60e51b8152600401610799906145b5565b81158061170257506116fe612710670de0b6b3a764000061446d565b8210155b6117475760405162461bcd60e51b8152602060048201526016602482015275436f6e73756d655377617046656520746f6f206c6f7760501b6044820152606401610799565b6706f05b59d3b200008211156117995760405162461bcd60e51b8152602060048201526017602482015276086dedce6eadacaa6eec2e08ccaca40e8dede40d0d2ced604b1b6044820152606401610799565b6000868152600160205260409020600c015461010090046001600160a01b0316156117fc576000868152600160205260409020600c015461010090046001600160a01b031633146117fc5760405162461bcd60e51b8152600401610799906145fd565b6001600160a01b03831661180f57600091505b600061181c878785612cad565b905084816000015110156118815760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610799565b6040808201516000898152600160205291909120600a01546118a2916136a8565b60016000898152602001908152602001600020600a018190555060006118ef82606001516118e984604001516118e9866020015187600001516136a890919063ffffffff16565b906136a8565b6000898152600160205260409020600701549091508111156119655760405162461bcd60e51b815260206004820152602960248201527f46697865645261746545786368616e67653a204e6f7420656e6f756768206261604482015268736520746f6b656e7360b81b6064820152608401610799565b6000888152600160208190526040909120015461198d906001600160a01b031633308a6136b4565b6000888152600160205260409020600601546119a990886136a8565b60008981526001602052604090206006810191909155600701546119cd9082613802565b600089815260016020526040902060078101919091558251600290910154611a02916001600160a01b0390911690339061380e565b6001600160a01b03851615801590611a1e575060008260600151115b15611ab1576060820151600089815260016020526040902060020154611a51916001600160a01b0390911690879061380e565b6000888152600160205260409081902060020154606084015191518a927f086a8edf7ac99098be3ce56ba76ae3e5a1e212fed5f803fc3167990fa03079b992611aa8928a926001600160a01b03909216919061448f565b60405180910390a25b60008260200151118015611aed57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615155b15611b425760208083015160008a81526001909252604090912060020154611b42916001600160a01b03909116907f00000000000000000000000000000000000000000000000000000000000000009061380e565b815160008981526001602090815260409182902060020154828601518287015160608089015186519788529487018e90526001600160a01b039093169486019490945290840152608083019190915260a0820152339089907f7b072645ce5b6a2fc627a544edee544b786747cafd1bb8f0e3238aa5f2e806469060c0015b60405180910390a35050611bd46001600055565b505050505050565b611be46134a8565b611bed81613502565b611bf76001600055565b50565b600082815260016020819052604091829020015490516396fb3eaf60e01b815233600482015283916001600160a01b03169081906396fb3eaf90602401602060405180830381865afa158015611c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7891906144b3565b80611d5f5750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce991906144d0565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015611d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5491906144d0565b6001600160a01b0316145b611d7b5760405162461bcd60e51b8152600401610799906144ed565b600084815260016020526040808220600c018054610100600160a81b0319166101006001600160a01b038816908102919091179091559051909186917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a350505050565b600082815260016020819052604091829020015490516396fb3eaf60e01b815233600482015283916001600160a01b03169081906396fb3eaf90602401602060405180830381865afa158015611e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5f91906144b3565b80611f465750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed091906144d0565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015611f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3b91906144d0565b6001600160a01b0316145b611f625760405162461bcd60e51b8152600401610799906144ed565b6402540be400831015611f875760405162461bcd60e51b815260040161079990614409565b6000848152600160205260409081902060030184905551339085907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c90611fd19087815260200190565b60405180910390a350505050565b600085815260016020526040902054859060ff1661200f5760405162461bcd60e51b81526004016107999061456a565b6120176134a8565b846120345760405162461bcd60e51b8152600401610799906145b5565b8115806120545750612050612710670de0b6b3a764000061446d565b8210155b6120995760405162461bcd60e51b8152602060048201526016602482015275436f6e73756d655377617046656520746f6f206c6f7760501b6044820152606401610799565b6706f05b59d3b200008211156120eb5760405162461bcd60e51b8152602060048201526017602482015276086dedce6eadacaa6eec2e08ccaca40e8dede40d0d2ced604b1b6044820152606401610799565b6000868152600160205260409020600c015461010090046001600160a01b03161561214e576000868152600160205260409020600c015461010090046001600160a01b0316331461214e5760405162461bcd60e51b8152600401610799906145fd565b6001600160a01b03831661216157600091505b600061216e878785613185565b905084816000015111156121d45760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610799565b6040808201516000898152600160205291909120600a01546121f5916136a8565b6000888152600160205260409020600a810191909155600201548151612228916001600160a01b031690339030906136b4565b600061225b826060015161225584604001516122558660200151876000015161380290919063ffffffff16565b90613802565b60008981526001602052604090206007015490915061227a90826136a8565b600089815260016020526040902060078101919091556006015487111561240c576000888152600160205260409020600c015460ff1680156123335750600088815260016020819052604091829020015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa15801561230f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233391906144b3565b156123b157600088815260016020819052604091829020015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801561239457600080fd5b505af11580156123a8573d6000803e3d6000fd5b50505050612457565b60405162461bcd60e51b815260206004820152602a60248201527f46697865645261746545786368616e67653a204e6f20617661696c61626c652060448201526964617461746f6b656e7360b01b6064820152608401610799565b6000888152600160205260409020600601546124289088613802565b600089815260016020819052604090912060068101929092550154612457906001600160a01b0316338961380e565b6001600160a01b03851615801590612473575060008260600151115b156125065760608201516000898152600160205260409020600201546124a6916001600160a01b0390911690879061380e565b6000888152600160205260409081902060020154606084015191518a927f086a8edf7ac99098be3ce56ba76ae3e5a1e212fed5f803fc3167990fa03079b9926124fd928a926001600160a01b03909216919061448f565b60405180910390a25b6000826020015111801561254257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615155b156125975760208083015160008a81526001909252604090912060020154612597916001600160a01b03909116907f00000000000000000000000000000000000000000000000000000000000000009061380e565b815160008981526001602081815260409283902090910154828601518287015160608089015186519788529487018e90526001600160a01b039093169486019490945290840152608083019190915260a0820152339089907f7b072645ce5b6a2fc627a544edee544b786747cafd1bb8f0e3238aa5f2e806469060c001611bc0565b606082821161267b5760405162461bcd60e51b815260206004820152602860248201527f656e64496e646578206d7573742062652067726561746572207468616e2073746044820152670c2e4e892dcc8caf60c31b6064820152608401610799565b6002548211156126c65760405162461bcd60e51b8152602060048201526016602482015275656e64496e646578206f7574206f6620626f756e647360501b6044820152606401610799565b60006126d28484614653565b67ffffffffffffffff8111156126ea576126ea614004565b604051908082528060200260200182016040528015612713578160200160208202803683370190505b509050835b838110156127785760028181548110612733576127336143f3565b906000526020600020015482868361274b9190614653565b8151811061275b5761275b6143f3565b60209081029190910101528061277081614536565b915050612718565b509392505050565b612794612710670de0b6b3a764000061446d565b81565b600082815260016020819052604091829020015490516396fb3eaf60e01b815233600482015283916001600160a01b03169081906396fb3eaf90602401602060405180830381865afa1580156127f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281591906144b3565b806128fc5750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612862573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288691906144d0565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa1580156128cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f191906144d0565b6001600160a01b0316145b6129185760405162461bcd60e51b8152600401610799906144ed565b6000848152600160208190526040909120805491015461294a916001600160a01b036101009091048116911685613871565b600085815260016020908152604091829020600c01805460ff191693151593909317909255518415158152339186917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611fd1565b6000828152600160205260409020600901546001600160a01b03163314612a035760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610799565b600082815260016020526040908190206009810180546001600160a01b0319166001600160a01b03851617905560080154905183917f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d5291612a6891339186919061448f565b60405180910390a25050565b60008181526001602052604081205460ff16612a9257506000919050565b5060009081526001602052604090206007015490565b6000828152600160205260409020600901546001600160a01b03163314612b0a5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610799565b801580612b2a5750612b26612710670de0b6b3a764000061446d565b8110155b612b685760405162461bcd60e51b815260206004820152600f60248201526e5377617046656520746f6f206c6f7760881b6044820152606401610799565b6706f05b59d3b20000811115612bb35760405162461bcd60e51b815260206004820152601060248201526f0a6eec2e08ccaca40e8dede40d0d2ced60831b6044820152606401610799565b600082815260016020526040908190206008810183905560090154905183917f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d5291612a689133916001600160a01b0390911690869061448f565b612c156134a8565b611bed8161361c565b60405163b8421e2b60e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063b8421e2b90602401602060405180830381865afa158015612c89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c9190614551565b612cd86040518060800160405280600081526020016000815260200160008152602001600081525090565b600084815260016020526040902054849060ff16612d085760405162461bcd60e51b81526004016107999061456a565b6000612d148686613a0b565b6040805160808101825260008082526020820181905291810182905260608101919091529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615612ed5576000878152600160205260409081902060020154905163f9eaee0d60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f9eaee0d90602401602060405180830381865afa158015612de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0991906144b3565b612e255760405162461bcd60e51b81526004016107999061466a565b60008781526001602052604090819020600201549051634594558f60e11b81526001600160a01b039182166004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000090911690638b28ab1e90604401602060405180830381865afa158015612ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecb9190614551565b6020820152612edd565b600060208201525b60008781526001602052604090206008015415612f2f57600087815260016020526040902060080154612f2590670de0b6b3a764000090612f1f908590613a7a565b90613a86565b6040820152612f37565b600060408201525b8415612f5d57612f53670de0b6b3a7640000612f1f8488613a7a565b6060820152612f65565b600060608201525b612f8c8160600151612255836020015161225585604001518761380290919063ffffffff16565b81529695505050505050565b612fa06134a8565b612faa8282613a92565b6114cc6001600055565b60008181526001602052604081205460ff16612fd257506000919050565b6000828152600160205260409020600c015460ff16801561306a5750600082815260016020819052604091829020015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015613046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306a91906144b3565b1561316f576000828152600160208181526040928390209091015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa1580156130c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ea9190614551565b600083815260016020818152604092839020909101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa158015613141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131659190614551565b61159c9190614653565b5060009081526001602052604090206006015490565b6131b06040518060800160405280600081526020016000815260200160008152602001600081525090565b600084815260016020526040902054849060ff166131e05760405162461bcd60e51b81526004016107999061456a565b60006131ec8686613a0b565b6040805160808101825260008082526020820181905291810182905260608101919091529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316156133ad576000878152600160205260409081902060020154905163f9eaee0d60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f9eaee0d90602401602060405180830381865afa1580156132bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e191906144b3565b6132fd5760405162461bcd60e51b81526004016107999061466a565b60008781526001602052604090819020600201549051634594558f60e11b81526001600160a01b039182166004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000090911690638b28ab1e90604401602060405180830381865afa15801561337f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a39190614551565b60208201526133b5565b600060208201525b60008781526001602052604090206008015415613401576000878152600160205260409020600801546133f790670de0b6b3a764000090612f1f908590613a7a565b6040820152613409565b600060408201525b841561342f57613425670de0b6b3a7640000612f1f8488613a7a565b6060820152613437565b600060608201525b612f8c81606001516118e983602001516118e98560400151876136a890919063ffffffff16565b604080516001600160a01b03938416602080830191909152929093168382015280518084038201815260609093019052815191012090565b61349e6134a8565b612faa8282613c04565b600260005414156134fb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610799565b6002600055565b6000818152600160209081526040808320600b0180549390558051631a81876d60e01b815290516135c4926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692631a81876d92600480830193928290030181865afa15801561357e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a291906144d0565b6000848152600160205260409020600201546001600160a01b0316908361380e565b6000828152600160209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf910160405180910390a35050565b6000818152600160209081526040808320600a810180549490556002015490518381526001600160a01b039091169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d64079055910160405180910390a3600082815260016020526040902060098101546002909101546114cc916001600160a01b0391821691168361380e565b600061159982846146c7565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908616906370a0823190602401602060405180830381865afa1580156136fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137229190614551565b90506137396001600160a01b038616858585613d7e565b61374381836136a8565b6040516370a0823160e01b81526001600160a01b0385811660048301528716906370a0823190602401602060405180830381865afa158015613789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ad9190614551565b10156137fb5760405162461bcd60e51b815260206004820152601a60248201527f5472616e7366657220616d6f756e7420697320746f6f206c6f770000000000006044820152606401610799565b5050505050565b60006115998284614653565b6040516001600160a01b03831660248201526044810182905261147690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613da5565b60008161388057506000613a04565b6000836001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e391906144d0565b60405163160a792560e01b81526001600160a01b03878116600483015291925060009183169063160a792590602401608060405180830381865afa15801561392f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395391906146df565b805190915015156001148061396e5750602081015115156001145b806139ed57506040516331a9108f60e11b8152600160048201526001600160a01b038088169190841690636352211e90602401602060405180830381865afa1580156139be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e291906144d0565b6001600160a01b0316145b156139fd57600192505050613a04565b6000925050505b9392505050565b60008281526001602052604081206004015461159990670de0b6b3a764000090612f1f90613a3a90600a614848565b600087815260016020526040902060050154612f1f90613a5b90600a614848565b600089815260016020526040902060030154613a78908990613a7a565b905b60006115998284614854565b6000611599828461446d565b600082815260016020526040902060060154811115613ae55760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610799565b6000828152600160208181526040808420909201548251631c90f85d60e31b815292516001600160a01b039091169263e487c2e89260048083019391928290030181865afa158015613b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5f91906144d0565b600084815260016020526040902060060154909150613b7e9083613802565b600084815260016020818152604092839020600681019490945592015490518481526001600160a01b03918216929184169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b1636910160405180910390a460008381526001602081905260409091200154611476906001600160a01b0316828461380e565b600082815260016020526040902060070154811115613c575760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610799565b6000828152600160208181526040808420909201548251631c90f85d60e31b815292516001600160a01b039091169263e487c2e89260048083019391928290030181865afa158015613cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd191906144d0565b600084815260016020526040902060070154909150613cf09083613802565b60008481526001602052604090819020600781019290925560029091015490516001600160a01b039182169183169085907fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163690613d509087815260200190565b60405180910390a4600083815260016020526040902060020154611476906001600160a01b0316828461380e565b613d9f846323b872dd60e01b85858560405160240161383a9392919061448f565b50505050565b6000613dfa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e779092919063ffffffff16565b8051909150156114765780806020019051810190613e1891906144b3565b6114765760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610799565b6060613e868484600085613e8e565b949350505050565b606082471015613eef5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610799565b843b613f3d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610799565b600080866001600160a01b03168587604051613f59919061489f565b60006040518083038185875af1925050503d8060008114613f96576040519150601f19603f3d011682016040523d82523d6000602084013e613f9b565b606091505b5091509150613fab828286613fb6565b979650505050505050565b60608315613fc5575081613a04565b825115613fd55782518084602001fd5b8160405162461bcd60e51b815260040161079991906148bb565b6001600160a01b0381168114611bf757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561404357614043614004565b604052919050565b600067ffffffffffffffff82111561406557614065614004565b5060051b60200190565b600082601f83011261408057600080fd5b813560206140956140908361404b565b61401a565b82815260059290921b840181019181810190868411156140b457600080fd5b8286015b848110156140cf57803583529183019183016140b8565b509695505050505050565b6000806000606084860312156140ef57600080fd5b83356140fa81613fef565b925060208481013567ffffffffffffffff8082111561411857600080fd5b818701915087601f83011261412c57600080fd5b813561413a6140908261404b565b81815260059190911b8301840190848101908a83111561415957600080fd5b938501935b8285101561418057843561417181613fef565b8252938501939085019061415e565b96505050604087013592508083111561419857600080fd5b50506141a68682870161406f565b9150509250925092565b6000602082840312156141c257600080fd5b5035919050565b6000602082840312156141db57600080fd5b8135613a0481613fef565b6020808252825182820181905260009190848201906040850190845b8181101561421e57835183529284019291840191600101614202565b50909695505050505050565b6000806020838503121561423d57600080fd5b823567ffffffffffffffff8082111561425557600080fd5b818501915085601f83011261426957600080fd5b81358181111561427857600080fd5b8660208260051b850101111561428d57600080fd5b60209290920196919550909350505050565b600080604083850312156142b257600080fd5b82356142bd81613fef565b946020939093013593505050565b600080600080600060a086880312156142e357600080fd5b853594506020860135935060408601359250606086013561430381613fef565b949793965091946080013592915050565b6000806040838503121561432757600080fd5b82359150602083013561433981613fef565b809150509250929050565b6000806040838503121561435757600080fd5b50508035926020909101359150565b8015158114611bf757600080fd5b6000806040838503121561438757600080fd5b82359150602083013561433981614366565b6000806000606084860312156143ae57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156143d857600080fd5b82356143e381613fef565b9150602083013561433981613fef565b634e487b7160e01b600052603260045260246000fd5b6020808252602e908201527f46697865645261746545786368616e67653a20496e76616c696420657863686160408201526d6e676520726174652076616c756560901b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008261448a57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156144c557600080fd5b8151613a0481614366565b6000602082840312156144e257600080fd5b8151613a0481613fef565b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b600060001982141561454a5761454a614457565b5060010190565b60006020828403121561456357600080fd5b5051919050565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526028908201527f46697865645261746545786368616e67653a207a65726f2064617461746f6b656040820152671b88185b5bdd5b9d60c21b606082015260800190565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b60008282101561466557614665614457565b500390565b60208082526039908201527f546869732062617365546f6b656e206973206e6f7420616c6c6f77656420627960408201527f20656e74657270726973652066656520636f6c6c6563746f7200000000000000606082015260800190565b600082198211156146da576146da614457565b500190565b6000608082840312156146f157600080fd5b6040516080810181811067ffffffffffffffff8211171561471457614714614004565b604052825161472281614366565b8152602083015161473281614366565b6020820152604083015161474581614366565b6040820152606083015161475881614366565b60608201529392505050565b600181815b8085111561479f57816000190482111561478557614785614457565b8085161561479257918102915b93841c9390800290614769565b509250929050565b6000826147b65750600161159c565b816147c35750600061159c565b81600181146147d957600281146147e3576147ff565b600191505061159c565b60ff8411156147f4576147f4614457565b50506001821b61159c565b5060208310610133831016604e8410600b8410161715614822575081810a61159c565b61482c8383614764565b806000190482111561484057614840614457565b029392505050565b600061159983836147a7565b600081600019048311821515161561486e5761486e614457565b500290565b60005b8381101561488e578181015183820152602001614876565b83811115613d9f5750506000910152565b600082516148b1818460208701614873565b9190910192915050565b60208152600082518060208401526148da816040850160208701614873565b601f01601f1916919091016040019291505056fea2646970667358221220972ebdbe77817cc901bfc1bbc2fa73ed183ae9dfeea3b5a2c3e987fd2c7ac99e64736f6c634300080c0033",
1232
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102325760003560e01c806376c7a3c711610130578063b8421e2b116100b8578063d819bfef1161007c578063d819bfef146106b7578063dd1bc96a146106c3578063ed2fc859146106d6578063f32f9476146106e9578063f887ea40146106fc57600080fd5b8063b8421e2b14610629578063bc063e1a1461063c578063c2c0d1ab1461064b578063c612e48a14610691578063c66274ea146106a457600080fd5b806385fcbc2f116100ff57806385fcbc2f146105c557806388823872146105d8578063b32b56f9146105eb578063b42414291461060e578063b686bcaf1461061657600080fd5b806376c7a3c7146104b157806379dd2836146104b95780637c82ebe9146104cc578063855058dd146104df57600080fd5b806349b69e33116101be5780635d1ca631116101825780635d1ca6311461045657806360311e9514610465578063680819eb1461047857806368c4b7e91461048b578063730523e51461049e57600080fd5b806349b69e331461037c5780634c87087d1461038f57806350d571d51461040d5780635acfedc7146104205780635c36901c1461043357600080fd5b806324cb477e1161020557806324cb477e146102df5780632d24deff146102f45780632e7e23b3146103075780633b7008fb1461032a57806347f1bc4b1461033d57600080fd5b8063012c3275146102375780630b3b430d1461025d57806316279055146102a05780631e2e3a6b146102ca575b600080fd5b61024a6102453660046140da565b610723565b6040519081526020015b60405180910390f35b61027061026b3660046141b0565b6110f0565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a001610254565b6102ba6102ae3660046141c9565b3b63ffffffff16151590565b6040519015158152602001610254565b6102d26111fa565b60405161025491906141e6565b6102f26102ed3660046141b0565b611252565b005b6102f261030236600461422a565b61147b565b61024a6103153660046141b0565b60009081526001602052604090206008015490565b61024a61033836600461429f565b6114d0565b6103647f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610254565b6102f261038a36600461422a565b6115a2565b6103a261039d3660046141b0565b6115e8565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e085015261010084015261012083015261014082019290925290151561016082015261018001610254565b6102f261041b3660046142cb565b61168d565b6102f261042e3660046141b0565b611bdc565b6102ba6104413660046141b0565b60009081526001602052604090205460ff1690565b60405160038152602001610254565b6102f2610473366004614314565b611bfa565b6102f2610486366004614344565b611de1565b6102f26104993660046142cb565b611fdf565b6102d26104ac366004614344565b612619565b61024a612780565b6102f26104c7366004614374565b612797565b6102f26104da366004614314565b6129a1565b6103646104ed3660046141b0565b60009081526001602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095529483015484169582019590955260028201548316606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015485820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015492831615156101a082015292909104166101c090910181905290565b61024a6105d33660046141b0565b612a74565b6102f26105e6366004614344565b612aa8565b61024a6105f93660046141b0565b60009081526001602052604090206003015490565b60025461024a565b6102f26106243660046141b0565b612c0d565b61024a6106373660046141c9565b612c1e565b61024a6706f05b59d3b2000081565b61065e610659366004614399565b612cad565b60405161025491908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b6102f261069f366004614344565b612f98565b61024a6106b23660046141b0565b612fb4565b61024a6402540be40081565b61065e6106d1366004614399565b613185565b61024a6106e43660046143c5565b61345e565b6102f26106f7366004614344565b613496565b6103647f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107a25760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b6005825110156107eb5760405162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840ead2dce8e640d8cadccee8d60631b6044820152606401610799565b60048351101561083d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420616464726573736573206c656e67746800000000000000006044820152606401610799565b60006001600160a01b03168360008151811061085b5761085b6143f3565b60200260200101516001600160a01b031614156108d65760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365546044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610799565b610901836000815181106108ec576108ec6143f3565b602002602001015163ffffffff903b16151590565b6109655760405162461bcd60e51b815260206004820152602f60248201527f46697865645261746545786368616e67653a20496e76616c696420626173655460448201526e6f6b656e2c206c6f6f6b7320454f4160881b6064820152608401610799565b6001600160a01b0384166109d75760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610799565b836001600160a01b0316836000815181106109f4576109f46143f3565b60200260200101516001600160a01b03161415610a795760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365546f6b656e0000000000000000006064820152608401610799565b6402540be40082600281518110610a9257610a926143f3565b60200260200101511015610ab85760405162461bcd60e51b815260040161079990614409565b610adc83600081518110610ace57610ace6143f3565b60200260200101518561345e565b60008181526001602052604090206003015490915015610b525760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610799565b60006001905082600481518110610b6b57610b6b6143f3565b602002602001015160001415610b7f575060005b604051806101e0016040528060011515815260200185600181518110610ba757610ba76143f3565b60200260200101516001600160a01b03168152602001866001600160a01b0316815260200185600081518110610bdf57610bdf6143f3565b60200260200101516001600160a01b0316815260200184600281518110610c0857610c086143f3565b6020026020010151815260200184600181518110610c2857610c286143f3565b6020026020010151815260200184600081518110610c4857610c486143f3565b60200260200101518152602001600081526020016000815260200184600381518110610c7657610c766143f3565b6020026020010151815260200185600281518110610c9657610c966143f3565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610cd557610cd56143f3565b6020908102919091018101516001600160a01b039081169092526000858152600180835260409182902085518154948701518616610100908102610100600160a81b031992151583166001600160a81b0319978816171783559387015192820180549387166001600160a01b03199485161790556060870151600283018054918816918516919091179055608087015160038084019190915560a0880151600484015560c0880151600584015560e0880151600684015584880151600784015561012088015160088401556101408801516009840180549189169190951617909355610160870151600a830155610180870151600b8301556101a0870151600c90920180546101c090980151909616909302901515909216949092169390931792909217905583518491908110610e0e57610e0e6143f3565b602002602001015160001480610e515750610e33612710670de0b6b3a764000061446d565b83600381518110610e4657610e466143f3565b602002602001015110155b610e8f5760405162461bcd60e51b815260206004820152600f60248201526e5377617046656520746f6f206c6f7760881b6044820152606401610799565b6706f05b59d3b2000083600381518110610eab57610eab6143f3565b60200260200101511115610ef45760405162461bcd60e51b815260206004820152601060248201526f0a6eec2e08ccaca40e8dede40d0d2ced60831b6044820152606401610799565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0183905584516001600160a01b038716918691610f4357610f436143f3565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610f8957610f896143f3565b602002602001015187600281518110610fa457610fa46143f3565b6020026020010151604051610fce9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610fe957610fe96143f3565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a38360038151811061103a5761103a6143f3565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3817f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d5233866002815181106110ae576110ae6143f3565b6020026020010151866003815181106110c9576110c96143f3565b60200260200101516040516110e09392919061448f565b60405180910390a2509392505050565b600081815260016020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015284880154811695840195909552600284015485166060840181905260038501546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c08301528787529490935292939182918291906111de90612c1e565b9350806101600151925080610180015191505091939590929450565b6060600280548060200260200160405190810160405280929190818152602001828054801561124857602002820191906000526020600020905b815481526020019060010190808311611234575b5050505050905090565b600081815260016020819052604091829020015490516396fb3eaf60e01b815233600482015282916001600160a01b03169081906396fb3eaf90602401602060405180830381865afa1580156112ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d091906144b3565b806113b75750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134191906144d0565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ac91906144d0565b6001600160a01b0316145b6113d35760405162461bcd60e51b8152600401610799906144ed565b60008381526001602052604090205460ff161561142f57600083815260016020526040808220805460ff1916905551339185917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a3505050565b6000838152600160208190526040808320805460ff191690921790915551339185917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35b505050565b6114836134a8565b60005b818110156114c1576114af8383838181106114a3576114a36143f3565b90506020020135613502565b806114b981614536565b915050611486565b506114cc6001600055565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166115085750600061159c565b604051634594558f60e11b81526001600160a01b038481166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001690638b28ab1e90604401602060405180830381865afa158015611575573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115999190614551565b90505b92915050565b6115aa6134a8565b60005b818110156114c1576115d68383838181106115ca576115ca6143f3565b9050602002013561361c565b806115e081614536565b9150506115ad565b600081815260016020819052604082208054918101546004820154600283015460058401546003909401546001600160a01b0361010087048116979481169693959216939192909160ff90911690808080806116438d612fb4565b945061164e8d612a74565b60009d8e5260016020526040909d2060068101546007820154600c909201549d9f9c9e9b9d9a9c999b989a9799969897909691955060ff169350915050565b600085815260016020526040902054859060ff166116bd5760405162461bcd60e51b81526004016107999061456a565b6116c56134a8565b846116e25760405162461bcd60e51b8152600401610799906145b5565b81158061170257506116fe612710670de0b6b3a764000061446d565b8210155b6117475760405162461bcd60e51b8152602060048201526016602482015275436f6e73756d655377617046656520746f6f206c6f7760501b6044820152606401610799565b6706f05b59d3b200008211156117995760405162461bcd60e51b8152602060048201526017602482015276086dedce6eadacaa6eec2e08ccaca40e8dede40d0d2ced604b1b6044820152606401610799565b6000868152600160205260409020600c015461010090046001600160a01b0316156117fc576000868152600160205260409020600c015461010090046001600160a01b031633146117fc5760405162461bcd60e51b8152600401610799906145fd565b6001600160a01b03831661180f57600091505b600061181c878785612cad565b905084816000015110156118815760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610799565b6040808201516000898152600160205291909120600a01546118a2916136a8565b60016000898152602001908152602001600020600a018190555060006118ef82606001516118e984604001516118e9866020015187600001516136a890919063ffffffff16565b906136a8565b6000898152600160205260409020600701549091508111156119655760405162461bcd60e51b815260206004820152602960248201527f46697865645261746545786368616e67653a204e6f7420656e6f756768206261604482015268736520746f6b656e7360b81b6064820152608401610799565b6000888152600160208190526040909120015461198d906001600160a01b031633308a6136b4565b6000888152600160205260409020600601546119a990886136a8565b60008981526001602052604090206006810191909155600701546119cd9082613802565b600089815260016020526040902060078101919091558251600290910154611a02916001600160a01b0390911690339061380e565b6001600160a01b03851615801590611a1e575060008260600151115b15611ab1576060820151600089815260016020526040902060020154611a51916001600160a01b0390911690879061380e565b6000888152600160205260409081902060020154606084015191518a927f086a8edf7ac99098be3ce56ba76ae3e5a1e212fed5f803fc3167990fa03079b992611aa8928a926001600160a01b03909216919061448f565b60405180910390a25b60008260200151118015611aed57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615155b15611b425760208083015160008a81526001909252604090912060020154611b42916001600160a01b03909116907f00000000000000000000000000000000000000000000000000000000000000009061380e565b815160008981526001602090815260409182902060020154828601518287015160608089015186519788529487018e90526001600160a01b039093169486019490945290840152608083019190915260a0820152339089907f7b072645ce5b6a2fc627a544edee544b786747cafd1bb8f0e3238aa5f2e806469060c0015b60405180910390a35050611bd46001600055565b505050505050565b611be46134a8565b611bed81613502565b611bf76001600055565b50565b600082815260016020819052604091829020015490516396fb3eaf60e01b815233600482015283916001600160a01b03169081906396fb3eaf90602401602060405180830381865afa158015611c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7891906144b3565b80611d5f5750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce991906144d0565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015611d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5491906144d0565b6001600160a01b0316145b611d7b5760405162461bcd60e51b8152600401610799906144ed565b600084815260016020526040808220600c018054610100600160a81b0319166101006001600160a01b038816908102919091179091559051909186917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a350505050565b600082815260016020819052604091829020015490516396fb3eaf60e01b815233600482015283916001600160a01b03169081906396fb3eaf90602401602060405180830381865afa158015611e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5f91906144b3565b80611f465750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed091906144d0565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa158015611f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3b91906144d0565b6001600160a01b0316145b611f625760405162461bcd60e51b8152600401610799906144ed565b6402540be400831015611f875760405162461bcd60e51b815260040161079990614409565b6000848152600160205260409081902060030184905551339085907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c90611fd19087815260200190565b60405180910390a350505050565b600085815260016020526040902054859060ff1661200f5760405162461bcd60e51b81526004016107999061456a565b6120176134a8565b846120345760405162461bcd60e51b8152600401610799906145b5565b8115806120545750612050612710670de0b6b3a764000061446d565b8210155b6120995760405162461bcd60e51b8152602060048201526016602482015275436f6e73756d655377617046656520746f6f206c6f7760501b6044820152606401610799565b6706f05b59d3b200008211156120eb5760405162461bcd60e51b8152602060048201526017602482015276086dedce6eadacaa6eec2e08ccaca40e8dede40d0d2ced604b1b6044820152606401610799565b6000868152600160205260409020600c015461010090046001600160a01b03161561214e576000868152600160205260409020600c015461010090046001600160a01b0316331461214e5760405162461bcd60e51b8152600401610799906145fd565b6001600160a01b03831661216157600091505b600061216e878785613185565b905084816000015111156121d45760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610799565b6040808201516000898152600160205291909120600a01546121f5916136a8565b6000888152600160205260409020600a810191909155600201548151612228916001600160a01b031690339030906136b4565b600061225b826060015161225584604001516122558660200151876000015161380290919063ffffffff16565b90613802565b60008981526001602052604090206007015490915061227a90826136a8565b600089815260016020526040902060078101919091556006015487111561240c576000888152600160205260409020600c015460ff1680156123335750600088815260016020819052604091829020015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa15801561230f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233391906144b3565b156123b157600088815260016020819052604091829020015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b15801561239457600080fd5b505af11580156123a8573d6000803e3d6000fd5b50505050612457565b60405162461bcd60e51b815260206004820152602a60248201527f46697865645261746545786368616e67653a204e6f20617661696c61626c652060448201526964617461746f6b656e7360b01b6064820152608401610799565b6000888152600160205260409020600601546124289088613802565b600089815260016020819052604090912060068101929092550154612457906001600160a01b0316338961380e565b6001600160a01b03851615801590612473575060008260600151115b156125065760608201516000898152600160205260409020600201546124a6916001600160a01b0390911690879061380e565b6000888152600160205260409081902060020154606084015191518a927f086a8edf7ac99098be3ce56ba76ae3e5a1e212fed5f803fc3167990fa03079b9926124fd928a926001600160a01b03909216919061448f565b60405180910390a25b6000826020015111801561254257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615155b156125975760208083015160008a81526001909252604090912060020154612597916001600160a01b03909116907f00000000000000000000000000000000000000000000000000000000000000009061380e565b815160008981526001602081815260409283902090910154828601518287015160608089015186519788529487018e90526001600160a01b039093169486019490945290840152608083019190915260a0820152339089907f7b072645ce5b6a2fc627a544edee544b786747cafd1bb8f0e3238aa5f2e806469060c001611bc0565b606082821161267b5760405162461bcd60e51b815260206004820152602860248201527f656e64496e646578206d7573742062652067726561746572207468616e2073746044820152670c2e4e892dcc8caf60c31b6064820152608401610799565b6002548211156126c65760405162461bcd60e51b8152602060048201526016602482015275656e64496e646578206f7574206f6620626f756e647360501b6044820152606401610799565b60006126d28484614653565b67ffffffffffffffff8111156126ea576126ea614004565b604051908082528060200260200182016040528015612713578160200160208202803683370190505b509050835b838110156127785760028181548110612733576127336143f3565b906000526020600020015482868361274b9190614653565b8151811061275b5761275b6143f3565b60209081029190910101528061277081614536565b915050612718565b509392505050565b612794612710670de0b6b3a764000061446d565b81565b600082815260016020819052604091829020015490516396fb3eaf60e01b815233600482015283916001600160a01b03169081906396fb3eaf90602401602060405180830381865afa1580156127f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281591906144b3565b806128fc5750336001600160a01b0316816001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612862573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288691906144d0565b6040516331a9108f60e11b8152600160048201526001600160a01b039190911690636352211e90602401602060405180830381865afa1580156128cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f191906144d0565b6001600160a01b0316145b6129185760405162461bcd60e51b8152600401610799906144ed565b6000848152600160208190526040909120805491015461294a916001600160a01b036101009091048116911685613871565b600085815260016020908152604091829020600c01805460ff191693151593909317909255518415158152339186917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611fd1565b6000828152600160205260409020600901546001600160a01b03163314612a035760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610799565b600082815260016020526040908190206009810180546001600160a01b0319166001600160a01b03851617905560080154905183917f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d5291612a6891339186919061448f565b60405180910390a25050565b60008181526001602052604081205460ff16612a9257506000919050565b5060009081526001602052604090206007015490565b6000828152600160205260409020600901546001600160a01b03163314612b0a5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610799565b801580612b2a5750612b26612710670de0b6b3a764000061446d565b8110155b612b685760405162461bcd60e51b815260206004820152600f60248201526e5377617046656520746f6f206c6f7760881b6044820152606401610799565b6706f05b59d3b20000811115612bb35760405162461bcd60e51b815260206004820152601060248201526f0a6eec2e08ccaca40e8dede40d0d2ced60831b6044820152606401610799565b600082815260016020526040908190206008810183905560090154905183917f1bf3af41af5ef4ea33bbeffb18acd246aae76d6f03bdb54916577c2e1ab03d5291612a689133916001600160a01b0390911690869061448f565b612c156134a8565b611bed8161361c565b60405163b8421e2b60e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063b8421e2b90602401602060405180830381865afa158015612c89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c9190614551565b612cd86040518060800160405280600081526020016000815260200160008152602001600081525090565b600084815260016020526040902054849060ff16612d085760405162461bcd60e51b81526004016107999061456a565b6000612d148686613a0b565b6040805160808101825260008082526020820181905291810182905260608101919091529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615612ed5576000878152600160205260409081902060020154905163f9eaee0d60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f9eaee0d90602401602060405180830381865afa158015612de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0991906144b3565b612e255760405162461bcd60e51b81526004016107999061466a565b60008781526001602052604090819020600201549051634594558f60e11b81526001600160a01b039182166004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000090911690638b28ab1e90604401602060405180830381865afa158015612ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecb9190614551565b6020820152612edd565b600060208201525b60008781526001602052604090206008015415612f2f57600087815260016020526040902060080154612f2590670de0b6b3a764000090612f1f908590613a7a565b90613a86565b6040820152612f37565b600060408201525b8415612f5d57612f53670de0b6b3a7640000612f1f8488613a7a565b6060820152612f65565b600060608201525b612f8c8160600151612255836020015161225585604001518761380290919063ffffffff16565b81529695505050505050565b612fa06134a8565b612faa8282613a92565b6114cc6001600055565b60008181526001602052604081205460ff16612fd257506000919050565b6000828152600160205260409020600c015460ff16801561306a5750600082815260016020819052604091829020015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015613046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306a91906144b3565b1561316f576000828152600160208181526040928390209091015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa1580156130c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ea9190614551565b600083815260016020818152604092839020909101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa158015613141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131659190614551565b61159c9190614653565b5060009081526001602052604090206006015490565b6131b06040518060800160405280600081526020016000815260200160008152602001600081525090565b600084815260016020526040902054849060ff166131e05760405162461bcd60e51b81526004016107999061456a565b60006131ec8686613a0b565b6040805160808101825260008082526020820181905291810182905260608101919091529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316156133ad576000878152600160205260409081902060020154905163f9eaee0d60e01b81526001600160a01b0391821660048201527f00000000000000000000000000000000000000000000000000000000000000009091169063f9eaee0d90602401602060405180830381865afa1580156132bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e191906144b3565b6132fd5760405162461bcd60e51b81526004016107999061466a565b60008781526001602052604090819020600201549051634594558f60e11b81526001600160a01b039182166004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000090911690638b28ab1e90604401602060405180830381865afa15801561337f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a39190614551565b60208201526133b5565b600060208201525b60008781526001602052604090206008015415613401576000878152600160205260409020600801546133f790670de0b6b3a764000090612f1f908590613a7a565b6040820152613409565b600060408201525b841561342f57613425670de0b6b3a7640000612f1f8488613a7a565b6060820152613437565b600060608201525b612f8c81606001516118e983602001516118e98560400151876136a890919063ffffffff16565b604080516001600160a01b03938416602080830191909152929093168382015280518084038201815260609093019052815191012090565b61349e6134a8565b612faa8282613c04565b600260005414156134fb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610799565b6002600055565b6000818152600160209081526040808320600b0180549390558051631a81876d60e01b815290516135c4926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692631a81876d92600480830193928290030181865afa15801561357e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a291906144d0565b6000848152600160205260409020600201546001600160a01b0316908361380e565b6000828152600160209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf910160405180910390a35050565b6000818152600160209081526040808320600a810180549490556002015490518381526001600160a01b039091169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d64079055910160405180910390a3600082815260016020526040902060098101546002909101546114cc916001600160a01b0391821691168361380e565b600061159982846146c7565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908616906370a0823190602401602060405180830381865afa1580156136fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137229190614551565b90506137396001600160a01b038616858585613d7e565b61374381836136a8565b6040516370a0823160e01b81526001600160a01b0385811660048301528716906370a0823190602401602060405180830381865afa158015613789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ad9190614551565b10156137fb5760405162461bcd60e51b815260206004820152601a60248201527f5472616e7366657220616d6f756e7420697320746f6f206c6f770000000000006044820152606401610799565b5050505050565b60006115998284614653565b6040516001600160a01b03831660248201526044810182905261147690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613da5565b60008161388057506000613a04565b6000836001600160a01b0316627ffb786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e391906144d0565b60405163160a792560e01b81526001600160a01b03878116600483015291925060009183169063160a792590602401608060405180830381865afa15801561392f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395391906146df565b805190915015156001148061396e5750602081015115156001145b806139ed57506040516331a9108f60e11b8152600160048201526001600160a01b038088169190841690636352211e90602401602060405180830381865afa1580156139be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e291906144d0565b6001600160a01b0316145b156139fd57600192505050613a04565b6000925050505b9392505050565b60008281526001602052604081206004015461159990670de0b6b3a764000090612f1f90613a3a90600a614848565b600087815260016020526040902060050154612f1f90613a5b90600a614848565b600089815260016020526040902060030154613a78908990613a7a565b905b60006115998284614854565b6000611599828461446d565b600082815260016020526040902060060154811115613ae55760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610799565b6000828152600160208181526040808420909201548251631c90f85d60e31b815292516001600160a01b039091169263e487c2e89260048083019391928290030181865afa158015613b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5f91906144d0565b600084815260016020526040902060060154909150613b7e9083613802565b600084815260016020818152604092839020600681019490945592015490518481526001600160a01b03918216929184169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b1636910160405180910390a460008381526001602081905260409091200154611476906001600160a01b0316828461380e565b600082815260016020526040902060070154811115613c575760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610799565b6000828152600160208181526040808420909201548251631c90f85d60e31b815292516001600160a01b039091169263e487c2e89260048083019391928290030181865afa158015613cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd191906144d0565b600084815260016020526040902060070154909150613cf09083613802565b60008481526001602052604090819020600781019290925560029091015490516001600160a01b039182169183169085907fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163690613d509087815260200190565b60405180910390a4600083815260016020526040902060020154611476906001600160a01b0316828461380e565b613d9f846323b872dd60e01b85858560405160240161383a9392919061448f565b50505050565b6000613dfa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e779092919063ffffffff16565b8051909150156114765780806020019051810190613e1891906144b3565b6114765760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610799565b6060613e868484600085613e8e565b949350505050565b606082471015613eef5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610799565b843b613f3d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610799565b600080866001600160a01b03168587604051613f59919061489f565b60006040518083038185875af1925050503d8060008114613f96576040519150601f19603f3d011682016040523d82523d6000602084013e613f9b565b606091505b5091509150613fab828286613fb6565b979650505050505050565b60608315613fc5575081613a04565b825115613fd55782518084602001fd5b8160405162461bcd60e51b815260040161079991906148bb565b6001600160a01b0381168114611bf757600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561404357614043614004565b604052919050565b600067ffffffffffffffff82111561406557614065614004565b5060051b60200190565b600082601f83011261408057600080fd5b813560206140956140908361404b565b61401a565b82815260059290921b840181019181810190868411156140b457600080fd5b8286015b848110156140cf57803583529183019183016140b8565b509695505050505050565b6000806000606084860312156140ef57600080fd5b83356140fa81613fef565b925060208481013567ffffffffffffffff8082111561411857600080fd5b818701915087601f83011261412c57600080fd5b813561413a6140908261404b565b81815260059190911b8301840190848101908a83111561415957600080fd5b938501935b8285101561418057843561417181613fef565b8252938501939085019061415e565b96505050604087013592508083111561419857600080fd5b50506141a68682870161406f565b9150509250925092565b6000602082840312156141c257600080fd5b5035919050565b6000602082840312156141db57600080fd5b8135613a0481613fef565b6020808252825182820181905260009190848201906040850190845b8181101561421e57835183529284019291840191600101614202565b50909695505050505050565b6000806020838503121561423d57600080fd5b823567ffffffffffffffff8082111561425557600080fd5b818501915085601f83011261426957600080fd5b81358181111561427857600080fd5b8660208260051b850101111561428d57600080fd5b60209290920196919550909350505050565b600080604083850312156142b257600080fd5b82356142bd81613fef565b946020939093013593505050565b600080600080600060a086880312156142e357600080fd5b853594506020860135935060408601359250606086013561430381613fef565b949793965091946080013592915050565b6000806040838503121561432757600080fd5b82359150602083013561433981613fef565b809150509250929050565b6000806040838503121561435757600080fd5b50508035926020909101359150565b8015158114611bf757600080fd5b6000806040838503121561438757600080fd5b82359150602083013561433981614366565b6000806000606084860312156143ae57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156143d857600080fd5b82356143e381613fef565b9150602083013561433981613fef565b634e487b7160e01b600052603260045260246000fd5b6020808252602e908201527f46697865645261746545786368616e67653a20496e76616c696420657863686160408201526d6e676520726174652076616c756560901b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008261448a57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156144c557600080fd5b8151613a0481614366565b6000602082840312156144e257600080fd5b8151613a0481613fef565b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b600060001982141561454a5761454a614457565b5060010190565b60006020828403121561456357600080fd5b5051919050565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526028908201527f46697865645261746545786368616e67653a207a65726f2064617461746f6b656040820152671b88185b5bdd5b9d60c21b606082015260800190565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b60008282101561466557614665614457565b500390565b60208082526039908201527f546869732062617365546f6b656e206973206e6f7420616c6c6f77656420627960408201527f20656e74657270726973652066656520636f6c6c6563746f7200000000000000606082015260800190565b600082198211156146da576146da614457565b500190565b6000608082840312156146f157600080fd5b6040516080810181811067ffffffffffffffff8211171561471457614714614004565b604052825161472281614366565b8152602083015161473281614366565b6020820152604083015161474581614366565b6040820152606083015161475881614366565b60608201529392505050565b600181815b8085111561479f57816000190482111561478557614785614457565b8085161561479257918102915b93841c9390800290614769565b509250929050565b6000826147b65750600161159c565b816147c35750600061159c565b81600181146147d957600281146147e3576147ff565b600191505061159c565b60ff8411156147f4576147f4614457565b50506001821b61159c565b5060208310610133831016604e8410600b8410161715614822575081810a61159c565b61482c8383614764565b806000190482111561484057614840614457565b029392505050565b600061159983836147a7565b600081600019048311821515161561486e5761486e614457565b500290565b60005b8381101561488e578181015183820152602001614876565b83811115613d9f5750506000910152565b600082516148b1818460208701614873565b9190910192915050565b60208152600082518060208401526148da816040850160208701614873565b601f01601f1916919091016040019291505056fea2646970667358221220972ebdbe77817cc901bfc1bbc2fa73ed183ae9dfeea3b5a2c3e987fd2c7ac99e64736f6c634300080c0033",
1233
+ "linkReferences": {},
1234
+ "deployedLinkReferences": {}
1235
+ }