@venusprotocol/venus-periphery 1.2.0-slim-dev.4 → 1.2.0-slim-dev.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/artifacts/contracts/DeviationSentinel/DeviationSentinel.sol/DeviationSentinel.json +15 -128
  2. package/artifacts/contracts/DeviationSentinel/Oracles/PancakeSwapOracle.sol/PancakeSwapOracle.json +2 -2
  3. package/artifacts/contracts/DeviationSentinel/Oracles/SentinelOracle.sol/SentinelOracle.json +2 -2
  4. package/artifacts/contracts/DeviationSentinel/Oracles/UniswapOracle.sol/UniswapOracle.json +2 -2
  5. package/artifacts/contracts/EmergencyBrake/EBrake.sol/EBrake.json +866 -0
  6. package/artifacts/contracts/EmergencyBrake/IEBrake.sol/IEBrake.json +607 -0
  7. package/artifacts/contracts/Interfaces/IComptroller.sol/IComptroller.json +79 -4
  8. package/artifacts/contracts/Interfaces/ICorePoolComptroller.sol/ICorePoolComptroller.json +165 -4
  9. package/artifacts/contracts/Interfaces/IILComptroller.sol/IILComptroller.json +2 -2
  10. package/artifacts/contracts/Interfaces/IVBNB.sol/IVBNB.json +37 -0
  11. package/artifacts/contracts/Interfaces/IVToken.sol/IVToken.json +37 -0
  12. package/artifacts/contracts/LeverageManager/LeverageStrategiesManager.sol/LeverageStrategiesManager.json +2 -2
  13. package/artifacts/contracts/Libraries/FixedPoint96.sol/FixedPoint96.json +2 -2
  14. package/artifacts/contracts/Libraries/FullMath.sol/FullMath.json +2 -2
  15. package/artifacts/contracts/PositionSwapper/PositionSwapper.sol/PositionSwapper.json +2 -2
  16. package/artifacts/contracts/RelativePositionManager/IPositionAccount.sol/IPositionAccount.json +250 -0
  17. package/artifacts/contracts/RelativePositionManager/IRelativePositionManager.sol/IRelativePositionManager.json +1580 -0
  18. package/artifacts/contracts/RelativePositionManager/PositionAccount.sol/PositionAccount.json +448 -0
  19. package/artifacts/contracts/RelativePositionManager/RelativePositionManager.sol/RelativePositionManager.json +2021 -0
  20. package/artifacts/contracts/SwapHelper/SwapHelper.sol/SwapHelper.json +2 -2
  21. package/artifacts/contracts/SwapRouter/SwapRouter.sol/SwapRouter.json +2 -2
  22. package/artifacts/contracts/pendle-pt-fixed-rate-vault/PendlePTVaultAdapter.sol/PendlePTVaultAdapter.json +2 -2
  23. package/artifacts/contracts/pendle-pt-fixed-rate-vault/test/AggregatorMock.sol/AggregatorMock.json +2 -2
  24. package/artifacts/contracts/test/MockTarget.sol/MockTarget.json +2 -2
  25. package/deployments/bscmainnet_addresses.json +8 -1
  26. package/deployments/bsctestnet_addresses.json +12 -2
  27. package/package.json +1 -1
@@ -0,0 +1,2021 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "RelativePositionManager",
4
+ "sourceName": "contracts/RelativePositionManager/RelativePositionManager.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "comptroller",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "leverageManager",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "AssetNotListed",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "BorrowAmountExceedsMaximum",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "CompletelyPaused",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [],
39
+ "name": "DSAInactive",
40
+ "type": "error"
41
+ },
42
+ {
43
+ "inputs": [],
44
+ "name": "DSAVTokenAlreadyAdded",
45
+ "type": "error"
46
+ },
47
+ {
48
+ "inputs": [
49
+ {
50
+ "internalType": "uint256",
51
+ "name": "errorCode",
52
+ "type": "uint256"
53
+ }
54
+ ],
55
+ "name": "EnterMarketFailed",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [],
60
+ "name": "ExcessiveShortDust",
61
+ "type": "error"
62
+ },
63
+ {
64
+ "inputs": [],
65
+ "name": "InsufficientPrincipal",
66
+ "type": "error"
67
+ },
68
+ {
69
+ "inputs": [],
70
+ "name": "InsufficientWithdrawableAmount",
71
+ "type": "error"
72
+ },
73
+ {
74
+ "inputs": [],
75
+ "name": "InvalidCloseFractionBps",
76
+ "type": "error"
77
+ },
78
+ {
79
+ "inputs": [],
80
+ "name": "InvalidCollateralFactor",
81
+ "type": "error"
82
+ },
83
+ {
84
+ "inputs": [],
85
+ "name": "InvalidDSA",
86
+ "type": "error"
87
+ },
88
+ {
89
+ "inputs": [],
90
+ "name": "InvalidLeverage",
91
+ "type": "error"
92
+ },
93
+ {
94
+ "inputs": [],
95
+ "name": "InvalidLongAmountToRedeem",
96
+ "type": "error"
97
+ },
98
+ {
99
+ "inputs": [],
100
+ "name": "InvalidOraclePrice",
101
+ "type": "error"
102
+ },
103
+ {
104
+ "inputs": [],
105
+ "name": "InvalidProportionalCloseTolerance",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [],
110
+ "name": "MinAmountOutRepayBelowDebt",
111
+ "type": "error"
112
+ },
113
+ {
114
+ "inputs": [],
115
+ "name": "MinAmountOutSecondBelowDebt",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "inputs": [
120
+ {
121
+ "internalType": "uint256",
122
+ "name": "errorCode",
123
+ "type": "uint256"
124
+ }
125
+ ],
126
+ "name": "MintBehalfFailed",
127
+ "type": "error"
128
+ },
129
+ {
130
+ "inputs": [],
131
+ "name": "PartiallyPaused",
132
+ "type": "error"
133
+ },
134
+ {
135
+ "inputs": [],
136
+ "name": "PositionAccountImplementationLocked",
137
+ "type": "error"
138
+ },
139
+ {
140
+ "inputs": [],
141
+ "name": "PositionAccountImplementationNotSet",
142
+ "type": "error"
143
+ },
144
+ {
145
+ "inputs": [],
146
+ "name": "PositionAlreadyExists",
147
+ "type": "error"
148
+ },
149
+ {
150
+ "inputs": [],
151
+ "name": "PositionNotActive",
152
+ "type": "error"
153
+ },
154
+ {
155
+ "inputs": [],
156
+ "name": "PositionNotFullyClosed",
157
+ "type": "error"
158
+ },
159
+ {
160
+ "inputs": [],
161
+ "name": "ProportionalCloseAmountOutOfTolerance",
162
+ "type": "error"
163
+ },
164
+ {
165
+ "inputs": [
166
+ {
167
+ "internalType": "uint256",
168
+ "name": "errorCode",
169
+ "type": "uint256"
170
+ }
171
+ ],
172
+ "name": "RedeemBehalfFailed",
173
+ "type": "error"
174
+ },
175
+ {
176
+ "inputs": [],
177
+ "name": "SameDSAActiveStatus",
178
+ "type": "error"
179
+ },
180
+ {
181
+ "inputs": [],
182
+ "name": "SameMarketNotAllowed",
183
+ "type": "error"
184
+ },
185
+ {
186
+ "inputs": [],
187
+ "name": "SameProportionalCloseTolerance",
188
+ "type": "error"
189
+ },
190
+ {
191
+ "inputs": [],
192
+ "name": "SlippageExceeded",
193
+ "type": "error"
194
+ },
195
+ {
196
+ "inputs": [],
197
+ "name": "TokenSwapCallFailed",
198
+ "type": "error"
199
+ },
200
+ {
201
+ "inputs": [
202
+ {
203
+ "internalType": "address",
204
+ "name": "sender",
205
+ "type": "address"
206
+ },
207
+ {
208
+ "internalType": "address",
209
+ "name": "calledContract",
210
+ "type": "address"
211
+ },
212
+ {
213
+ "internalType": "string",
214
+ "name": "methodSignature",
215
+ "type": "string"
216
+ }
217
+ ],
218
+ "name": "Unauthorized",
219
+ "type": "error"
220
+ },
221
+ {
222
+ "inputs": [],
223
+ "name": "VBNBNotSupported",
224
+ "type": "error"
225
+ },
226
+ {
227
+ "inputs": [],
228
+ "name": "ZeroAddress",
229
+ "type": "error"
230
+ },
231
+ {
232
+ "inputs": [],
233
+ "name": "ZeroAmount",
234
+ "type": "error"
235
+ },
236
+ {
237
+ "inputs": [],
238
+ "name": "ZeroDebt",
239
+ "type": "error"
240
+ },
241
+ {
242
+ "inputs": [],
243
+ "name": "ZeroShortAmount",
244
+ "type": "error"
245
+ },
246
+ {
247
+ "inputs": [],
248
+ "name": "ZeroVTokensMinted",
249
+ "type": "error"
250
+ },
251
+ {
252
+ "anonymous": false,
253
+ "inputs": [
254
+ {
255
+ "indexed": false,
256
+ "internalType": "bool",
257
+ "name": "paused",
258
+ "type": "bool"
259
+ }
260
+ ],
261
+ "name": "CompletePauseToggled",
262
+ "type": "event"
263
+ },
264
+ {
265
+ "anonymous": false,
266
+ "inputs": [
267
+ {
268
+ "indexed": true,
269
+ "internalType": "address",
270
+ "name": "dsaVToken",
271
+ "type": "address"
272
+ },
273
+ {
274
+ "indexed": false,
275
+ "internalType": "uint8",
276
+ "name": "index",
277
+ "type": "uint8"
278
+ },
279
+ {
280
+ "indexed": false,
281
+ "internalType": "bool",
282
+ "name": "active",
283
+ "type": "bool"
284
+ }
285
+ ],
286
+ "name": "DSAVTokenActiveUpdated",
287
+ "type": "event"
288
+ },
289
+ {
290
+ "anonymous": false,
291
+ "inputs": [
292
+ {
293
+ "indexed": true,
294
+ "internalType": "address",
295
+ "name": "dsaVToken",
296
+ "type": "address"
297
+ },
298
+ {
299
+ "indexed": false,
300
+ "internalType": "uint8",
301
+ "name": "index",
302
+ "type": "uint8"
303
+ }
304
+ ],
305
+ "name": "DSAVTokenAdded",
306
+ "type": "event"
307
+ },
308
+ {
309
+ "anonymous": false,
310
+ "inputs": [
311
+ {
312
+ "indexed": false,
313
+ "internalType": "uint8",
314
+ "name": "version",
315
+ "type": "uint8"
316
+ }
317
+ ],
318
+ "name": "Initialized",
319
+ "type": "event"
320
+ },
321
+ {
322
+ "anonymous": false,
323
+ "inputs": [
324
+ {
325
+ "indexed": false,
326
+ "internalType": "address",
327
+ "name": "oldAccessControlManager",
328
+ "type": "address"
329
+ },
330
+ {
331
+ "indexed": false,
332
+ "internalType": "address",
333
+ "name": "newAccessControlManager",
334
+ "type": "address"
335
+ }
336
+ ],
337
+ "name": "NewAccessControlManager",
338
+ "type": "event"
339
+ },
340
+ {
341
+ "anonymous": false,
342
+ "inputs": [
343
+ {
344
+ "indexed": true,
345
+ "internalType": "address",
346
+ "name": "previousOwner",
347
+ "type": "address"
348
+ },
349
+ {
350
+ "indexed": true,
351
+ "internalType": "address",
352
+ "name": "newOwner",
353
+ "type": "address"
354
+ }
355
+ ],
356
+ "name": "OwnershipTransferStarted",
357
+ "type": "event"
358
+ },
359
+ {
360
+ "anonymous": false,
361
+ "inputs": [
362
+ {
363
+ "indexed": true,
364
+ "internalType": "address",
365
+ "name": "previousOwner",
366
+ "type": "address"
367
+ },
368
+ {
369
+ "indexed": true,
370
+ "internalType": "address",
371
+ "name": "newOwner",
372
+ "type": "address"
373
+ }
374
+ ],
375
+ "name": "OwnershipTransferred",
376
+ "type": "event"
377
+ },
378
+ {
379
+ "anonymous": false,
380
+ "inputs": [
381
+ {
382
+ "indexed": false,
383
+ "internalType": "bool",
384
+ "name": "paused",
385
+ "type": "bool"
386
+ }
387
+ ],
388
+ "name": "PartialPauseToggled",
389
+ "type": "event"
390
+ },
391
+ {
392
+ "anonymous": false,
393
+ "inputs": [
394
+ {
395
+ "indexed": true,
396
+ "internalType": "address",
397
+ "name": "user",
398
+ "type": "address"
399
+ },
400
+ {
401
+ "indexed": true,
402
+ "internalType": "address",
403
+ "name": "longAsset",
404
+ "type": "address"
405
+ },
406
+ {
407
+ "indexed": true,
408
+ "internalType": "address",
409
+ "name": "shortAsset",
410
+ "type": "address"
411
+ },
412
+ {
413
+ "indexed": false,
414
+ "internalType": "address",
415
+ "name": "positionAccount",
416
+ "type": "address"
417
+ }
418
+ ],
419
+ "name": "PositionAccountDeployed",
420
+ "type": "event"
421
+ },
422
+ {
423
+ "anonymous": false,
424
+ "inputs": [
425
+ {
426
+ "indexed": true,
427
+ "internalType": "address",
428
+ "name": "implementation",
429
+ "type": "address"
430
+ }
431
+ ],
432
+ "name": "PositionAccountImplementationSet",
433
+ "type": "event"
434
+ },
435
+ {
436
+ "anonymous": false,
437
+ "inputs": [
438
+ {
439
+ "indexed": true,
440
+ "internalType": "address",
441
+ "name": "user",
442
+ "type": "address"
443
+ },
444
+ {
445
+ "indexed": true,
446
+ "internalType": "address",
447
+ "name": "longAsset",
448
+ "type": "address"
449
+ },
450
+ {
451
+ "indexed": true,
452
+ "internalType": "address",
453
+ "name": "shortAsset",
454
+ "type": "address"
455
+ },
456
+ {
457
+ "indexed": false,
458
+ "internalType": "address",
459
+ "name": "dsaAsset",
460
+ "type": "address"
461
+ },
462
+ {
463
+ "indexed": false,
464
+ "internalType": "address",
465
+ "name": "positionAccount",
466
+ "type": "address"
467
+ },
468
+ {
469
+ "indexed": false,
470
+ "internalType": "uint256",
471
+ "name": "cycleId",
472
+ "type": "uint256"
473
+ },
474
+ {
475
+ "indexed": false,
476
+ "internalType": "uint256",
477
+ "name": "initialPrincipal",
478
+ "type": "uint256"
479
+ },
480
+ {
481
+ "indexed": false,
482
+ "internalType": "uint256",
483
+ "name": "effectiveLeverage",
484
+ "type": "uint256"
485
+ }
486
+ ],
487
+ "name": "PositionActivated",
488
+ "type": "event"
489
+ },
490
+ {
491
+ "anonymous": false,
492
+ "inputs": [
493
+ {
494
+ "indexed": true,
495
+ "internalType": "address",
496
+ "name": "user",
497
+ "type": "address"
498
+ },
499
+ {
500
+ "indexed": true,
501
+ "internalType": "address",
502
+ "name": "positionAccount",
503
+ "type": "address"
504
+ },
505
+ {
506
+ "indexed": false,
507
+ "internalType": "uint256",
508
+ "name": "cycleId",
509
+ "type": "uint256"
510
+ },
511
+ {
512
+ "indexed": false,
513
+ "internalType": "uint256",
514
+ "name": "closeFractionBps",
515
+ "type": "uint256"
516
+ },
517
+ {
518
+ "indexed": false,
519
+ "internalType": "uint256",
520
+ "name": "amountRepaid",
521
+ "type": "uint256"
522
+ },
523
+ {
524
+ "indexed": false,
525
+ "internalType": "uint256",
526
+ "name": "amountRedeemed",
527
+ "type": "uint256"
528
+ },
529
+ {
530
+ "indexed": false,
531
+ "internalType": "uint256",
532
+ "name": "amountRedeemedDsa",
533
+ "type": "uint256"
534
+ },
535
+ {
536
+ "indexed": false,
537
+ "internalType": "uint256",
538
+ "name": "longDustRedeemed",
539
+ "type": "uint256"
540
+ }
541
+ ],
542
+ "name": "PositionClosed",
543
+ "type": "event"
544
+ },
545
+ {
546
+ "anonymous": false,
547
+ "inputs": [
548
+ {
549
+ "indexed": true,
550
+ "internalType": "address",
551
+ "name": "user",
552
+ "type": "address"
553
+ },
554
+ {
555
+ "indexed": true,
556
+ "internalType": "address",
557
+ "name": "positionAccount",
558
+ "type": "address"
559
+ },
560
+ {
561
+ "indexed": false,
562
+ "internalType": "uint256",
563
+ "name": "cycleId",
564
+ "type": "uint256"
565
+ },
566
+ {
567
+ "indexed": false,
568
+ "internalType": "uint256",
569
+ "name": "longRedeemed",
570
+ "type": "uint256"
571
+ },
572
+ {
573
+ "indexed": false,
574
+ "internalType": "uint256",
575
+ "name": "dsaRedeemed",
576
+ "type": "uint256"
577
+ }
578
+ ],
579
+ "name": "PositionDeactivated",
580
+ "type": "event"
581
+ },
582
+ {
583
+ "anonymous": false,
584
+ "inputs": [
585
+ {
586
+ "indexed": true,
587
+ "internalType": "address",
588
+ "name": "user",
589
+ "type": "address"
590
+ },
591
+ {
592
+ "indexed": true,
593
+ "internalType": "address",
594
+ "name": "positionAccount",
595
+ "type": "address"
596
+ },
597
+ {
598
+ "indexed": false,
599
+ "internalType": "uint256",
600
+ "name": "cycleId",
601
+ "type": "uint256"
602
+ },
603
+ {
604
+ "indexed": false,
605
+ "internalType": "address",
606
+ "name": "longAsset",
607
+ "type": "address"
608
+ },
609
+ {
610
+ "indexed": false,
611
+ "internalType": "address",
612
+ "name": "shortAsset",
613
+ "type": "address"
614
+ },
615
+ {
616
+ "indexed": false,
617
+ "internalType": "address",
618
+ "name": "dsaAsset",
619
+ "type": "address"
620
+ },
621
+ {
622
+ "indexed": false,
623
+ "internalType": "uint256",
624
+ "name": "shortAmount",
625
+ "type": "uint256"
626
+ },
627
+ {
628
+ "indexed": false,
629
+ "internalType": "uint256",
630
+ "name": "initialPrincipal",
631
+ "type": "uint256"
632
+ }
633
+ ],
634
+ "name": "PositionOpened",
635
+ "type": "event"
636
+ },
637
+ {
638
+ "anonymous": false,
639
+ "inputs": [
640
+ {
641
+ "indexed": true,
642
+ "internalType": "address",
643
+ "name": "user",
644
+ "type": "address"
645
+ },
646
+ {
647
+ "indexed": true,
648
+ "internalType": "address",
649
+ "name": "positionAccount",
650
+ "type": "address"
651
+ },
652
+ {
653
+ "indexed": false,
654
+ "internalType": "uint256",
655
+ "name": "cycleId",
656
+ "type": "uint256"
657
+ },
658
+ {
659
+ "indexed": false,
660
+ "internalType": "address",
661
+ "name": "longAsset",
662
+ "type": "address"
663
+ },
664
+ {
665
+ "indexed": false,
666
+ "internalType": "address",
667
+ "name": "shortAsset",
668
+ "type": "address"
669
+ },
670
+ {
671
+ "indexed": false,
672
+ "internalType": "address",
673
+ "name": "dsaAsset",
674
+ "type": "address"
675
+ },
676
+ {
677
+ "indexed": false,
678
+ "internalType": "uint256",
679
+ "name": "shortAmount",
680
+ "type": "uint256"
681
+ },
682
+ {
683
+ "indexed": false,
684
+ "internalType": "uint256",
685
+ "name": "additionalPrincipal",
686
+ "type": "uint256"
687
+ }
688
+ ],
689
+ "name": "PositionScaled",
690
+ "type": "event"
691
+ },
692
+ {
693
+ "anonymous": false,
694
+ "inputs": [
695
+ {
696
+ "indexed": true,
697
+ "internalType": "address",
698
+ "name": "user",
699
+ "type": "address"
700
+ },
701
+ {
702
+ "indexed": true,
703
+ "internalType": "address",
704
+ "name": "positionAccount",
705
+ "type": "address"
706
+ },
707
+ {
708
+ "indexed": false,
709
+ "internalType": "uint256",
710
+ "name": "cycleId",
711
+ "type": "uint256"
712
+ },
713
+ {
714
+ "indexed": false,
715
+ "internalType": "address",
716
+ "name": "dsaAsset",
717
+ "type": "address"
718
+ },
719
+ {
720
+ "indexed": false,
721
+ "internalType": "uint256",
722
+ "name": "amount",
723
+ "type": "uint256"
724
+ },
725
+ {
726
+ "indexed": false,
727
+ "internalType": "uint256",
728
+ "name": "newTotalPrincipal",
729
+ "type": "uint256"
730
+ }
731
+ ],
732
+ "name": "PrincipalSupplied",
733
+ "type": "event"
734
+ },
735
+ {
736
+ "anonymous": false,
737
+ "inputs": [
738
+ {
739
+ "indexed": true,
740
+ "internalType": "address",
741
+ "name": "user",
742
+ "type": "address"
743
+ },
744
+ {
745
+ "indexed": true,
746
+ "internalType": "address",
747
+ "name": "positionAccount",
748
+ "type": "address"
749
+ },
750
+ {
751
+ "indexed": false,
752
+ "internalType": "uint256",
753
+ "name": "cycleId",
754
+ "type": "uint256"
755
+ },
756
+ {
757
+ "indexed": false,
758
+ "internalType": "address",
759
+ "name": "dsaAsset",
760
+ "type": "address"
761
+ },
762
+ {
763
+ "indexed": false,
764
+ "internalType": "uint256",
765
+ "name": "amount",
766
+ "type": "uint256"
767
+ },
768
+ {
769
+ "indexed": false,
770
+ "internalType": "uint256",
771
+ "name": "remainingPrincipal",
772
+ "type": "uint256"
773
+ }
774
+ ],
775
+ "name": "PrincipalWithdrawn",
776
+ "type": "event"
777
+ },
778
+ {
779
+ "anonymous": false,
780
+ "inputs": [
781
+ {
782
+ "indexed": true,
783
+ "internalType": "address",
784
+ "name": "user",
785
+ "type": "address"
786
+ },
787
+ {
788
+ "indexed": true,
789
+ "internalType": "address",
790
+ "name": "positionAccount",
791
+ "type": "address"
792
+ },
793
+ {
794
+ "indexed": false,
795
+ "internalType": "uint256",
796
+ "name": "amountConvertedToProfit",
797
+ "type": "uint256"
798
+ },
799
+ {
800
+ "indexed": false,
801
+ "internalType": "uint256",
802
+ "name": "newTotalPrincipal",
803
+ "type": "uint256"
804
+ }
805
+ ],
806
+ "name": "ProfitConverted",
807
+ "type": "event"
808
+ },
809
+ {
810
+ "anonymous": false,
811
+ "inputs": [
812
+ {
813
+ "indexed": true,
814
+ "internalType": "uint256",
815
+ "name": "oldTolerance",
816
+ "type": "uint256"
817
+ },
818
+ {
819
+ "indexed": true,
820
+ "internalType": "uint256",
821
+ "name": "newTolerance",
822
+ "type": "uint256"
823
+ }
824
+ ],
825
+ "name": "ProportionalCloseToleranceUpdated",
826
+ "type": "event"
827
+ },
828
+ {
829
+ "anonymous": false,
830
+ "inputs": [
831
+ {
832
+ "indexed": true,
833
+ "internalType": "address",
834
+ "name": "user",
835
+ "type": "address"
836
+ },
837
+ {
838
+ "indexed": true,
839
+ "internalType": "address",
840
+ "name": "positionAccount",
841
+ "type": "address"
842
+ },
843
+ {
844
+ "indexed": false,
845
+ "internalType": "uint256",
846
+ "name": "oldSuppliedPrincipal",
847
+ "type": "uint256"
848
+ },
849
+ {
850
+ "indexed": false,
851
+ "internalType": "uint256",
852
+ "name": "newSuppliedPrincipal",
853
+ "type": "uint256"
854
+ }
855
+ ],
856
+ "name": "RefreshedSuppliedPrincipal",
857
+ "type": "event"
858
+ },
859
+ {
860
+ "anonymous": false,
861
+ "inputs": [
862
+ {
863
+ "indexed": true,
864
+ "internalType": "address",
865
+ "name": "token",
866
+ "type": "address"
867
+ },
868
+ {
869
+ "indexed": true,
870
+ "internalType": "address",
871
+ "name": "from",
872
+ "type": "address"
873
+ },
874
+ {
875
+ "indexed": true,
876
+ "internalType": "address",
877
+ "name": "to",
878
+ "type": "address"
879
+ },
880
+ {
881
+ "indexed": false,
882
+ "internalType": "uint256",
883
+ "name": "amount",
884
+ "type": "uint256"
885
+ }
886
+ ],
887
+ "name": "UnderlyingTransferred",
888
+ "type": "event"
889
+ },
890
+ {
891
+ "inputs": [],
892
+ "name": "COMPTROLLER",
893
+ "outputs": [
894
+ {
895
+ "internalType": "contract IComptroller",
896
+ "name": "",
897
+ "type": "address"
898
+ }
899
+ ],
900
+ "stateMutability": "view",
901
+ "type": "function"
902
+ },
903
+ {
904
+ "inputs": [],
905
+ "name": "LEVERAGE_MANAGER",
906
+ "outputs": [
907
+ {
908
+ "internalType": "contract LeverageStrategiesManager",
909
+ "name": "",
910
+ "type": "address"
911
+ }
912
+ ],
913
+ "stateMutability": "view",
914
+ "type": "function"
915
+ },
916
+ {
917
+ "inputs": [],
918
+ "name": "MIN_LEVERAGE",
919
+ "outputs": [
920
+ {
921
+ "internalType": "uint256",
922
+ "name": "",
923
+ "type": "uint256"
924
+ }
925
+ ],
926
+ "stateMutability": "view",
927
+ "type": "function"
928
+ },
929
+ {
930
+ "inputs": [],
931
+ "name": "POSITION_ACCOUNT_IMPLEMENTATION",
932
+ "outputs": [
933
+ {
934
+ "internalType": "address",
935
+ "name": "",
936
+ "type": "address"
937
+ }
938
+ ],
939
+ "stateMutability": "view",
940
+ "type": "function"
941
+ },
942
+ {
943
+ "inputs": [],
944
+ "name": "PROPORTIONAL_CLOSE_MAX",
945
+ "outputs": [
946
+ {
947
+ "internalType": "uint256",
948
+ "name": "",
949
+ "type": "uint256"
950
+ }
951
+ ],
952
+ "stateMutability": "view",
953
+ "type": "function"
954
+ },
955
+ {
956
+ "inputs": [],
957
+ "name": "PROPORTIONAL_CLOSE_MIN",
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": "acceptOwnership",
971
+ "outputs": [],
972
+ "stateMutability": "nonpayable",
973
+ "type": "function"
974
+ },
975
+ {
976
+ "inputs": [],
977
+ "name": "accessControlManager",
978
+ "outputs": [
979
+ {
980
+ "internalType": "contract IAccessControlManagerV8",
981
+ "name": "",
982
+ "type": "address"
983
+ }
984
+ ],
985
+ "stateMutability": "view",
986
+ "type": "function"
987
+ },
988
+ {
989
+ "inputs": [
990
+ {
991
+ "internalType": "address",
992
+ "name": "longVToken",
993
+ "type": "address"
994
+ },
995
+ {
996
+ "internalType": "address",
997
+ "name": "shortVToken",
998
+ "type": "address"
999
+ },
1000
+ {
1001
+ "internalType": "uint8",
1002
+ "name": "dsaIndex",
1003
+ "type": "uint8"
1004
+ },
1005
+ {
1006
+ "internalType": "uint256",
1007
+ "name": "initialPrincipal",
1008
+ "type": "uint256"
1009
+ },
1010
+ {
1011
+ "internalType": "uint256",
1012
+ "name": "effectiveLeverage",
1013
+ "type": "uint256"
1014
+ },
1015
+ {
1016
+ "internalType": "uint256",
1017
+ "name": "shortAmount",
1018
+ "type": "uint256"
1019
+ },
1020
+ {
1021
+ "internalType": "uint256",
1022
+ "name": "minLongAmount",
1023
+ "type": "uint256"
1024
+ },
1025
+ {
1026
+ "internalType": "bytes",
1027
+ "name": "swapData",
1028
+ "type": "bytes"
1029
+ }
1030
+ ],
1031
+ "name": "activateAndOpenPosition",
1032
+ "outputs": [],
1033
+ "stateMutability": "nonpayable",
1034
+ "type": "function"
1035
+ },
1036
+ {
1037
+ "inputs": [
1038
+ {
1039
+ "internalType": "address",
1040
+ "name": "dsaVToken",
1041
+ "type": "address"
1042
+ }
1043
+ ],
1044
+ "name": "addDSAVToken",
1045
+ "outputs": [],
1046
+ "stateMutability": "nonpayable",
1047
+ "type": "function"
1048
+ },
1049
+ {
1050
+ "inputs": [
1051
+ {
1052
+ "internalType": "contract IVToken",
1053
+ "name": "longVToken",
1054
+ "type": "address"
1055
+ },
1056
+ {
1057
+ "internalType": "contract IVToken",
1058
+ "name": "shortVToken",
1059
+ "type": "address"
1060
+ },
1061
+ {
1062
+ "internalType": "uint256",
1063
+ "name": "closeFractionBps",
1064
+ "type": "uint256"
1065
+ },
1066
+ {
1067
+ "internalType": "uint256",
1068
+ "name": "longAmountToRedeemForFirstSwap",
1069
+ "type": "uint256"
1070
+ },
1071
+ {
1072
+ "internalType": "uint256",
1073
+ "name": "shortAmountToRepayForFirstSwap",
1074
+ "type": "uint256"
1075
+ },
1076
+ {
1077
+ "internalType": "uint256",
1078
+ "name": "minAmountOutFirst",
1079
+ "type": "uint256"
1080
+ },
1081
+ {
1082
+ "internalType": "bytes",
1083
+ "name": "swapDataFirst",
1084
+ "type": "bytes"
1085
+ },
1086
+ {
1087
+ "internalType": "uint256",
1088
+ "name": "dsaAmountToRedeemForSecondSwap",
1089
+ "type": "uint256"
1090
+ },
1091
+ {
1092
+ "internalType": "uint256",
1093
+ "name": "minAmountOutSecond",
1094
+ "type": "uint256"
1095
+ },
1096
+ {
1097
+ "internalType": "bytes",
1098
+ "name": "swapDataSecond",
1099
+ "type": "bytes"
1100
+ }
1101
+ ],
1102
+ "name": "closeWithLoss",
1103
+ "outputs": [],
1104
+ "stateMutability": "nonpayable",
1105
+ "type": "function"
1106
+ },
1107
+ {
1108
+ "inputs": [
1109
+ {
1110
+ "internalType": "contract IVToken",
1111
+ "name": "longVToken",
1112
+ "type": "address"
1113
+ },
1114
+ {
1115
+ "internalType": "contract IVToken",
1116
+ "name": "shortVToken",
1117
+ "type": "address"
1118
+ },
1119
+ {
1120
+ "components": [
1121
+ {
1122
+ "internalType": "uint256",
1123
+ "name": "longAmountToRedeemForFirstSwap",
1124
+ "type": "uint256"
1125
+ },
1126
+ {
1127
+ "internalType": "uint256",
1128
+ "name": "shortAmountToRepayForFirstSwap",
1129
+ "type": "uint256"
1130
+ },
1131
+ {
1132
+ "internalType": "uint256",
1133
+ "name": "minAmountOutFirst",
1134
+ "type": "uint256"
1135
+ },
1136
+ {
1137
+ "internalType": "bytes",
1138
+ "name": "swapDataFirst",
1139
+ "type": "bytes"
1140
+ },
1141
+ {
1142
+ "internalType": "uint256",
1143
+ "name": "dsaAmountToRedeemForSecondSwap",
1144
+ "type": "uint256"
1145
+ },
1146
+ {
1147
+ "internalType": "uint256",
1148
+ "name": "minAmountOutSecond",
1149
+ "type": "uint256"
1150
+ },
1151
+ {
1152
+ "internalType": "bytes",
1153
+ "name": "swapDataSecond",
1154
+ "type": "bytes"
1155
+ }
1156
+ ],
1157
+ "internalType": "struct IRelativePositionManager.CloseWithLossParams",
1158
+ "name": "lossSwapParams",
1159
+ "type": "tuple"
1160
+ }
1161
+ ],
1162
+ "name": "closeWithLossAndDeactivate",
1163
+ "outputs": [],
1164
+ "stateMutability": "nonpayable",
1165
+ "type": "function"
1166
+ },
1167
+ {
1168
+ "inputs": [
1169
+ {
1170
+ "internalType": "contract IVToken",
1171
+ "name": "longVToken",
1172
+ "type": "address"
1173
+ },
1174
+ {
1175
+ "internalType": "contract IVToken",
1176
+ "name": "shortVToken",
1177
+ "type": "address"
1178
+ },
1179
+ {
1180
+ "internalType": "uint256",
1181
+ "name": "closeFractionBps",
1182
+ "type": "uint256"
1183
+ },
1184
+ {
1185
+ "internalType": "uint256",
1186
+ "name": "longAmountToRedeemForRepay",
1187
+ "type": "uint256"
1188
+ },
1189
+ {
1190
+ "internalType": "uint256",
1191
+ "name": "minAmountOutRepay",
1192
+ "type": "uint256"
1193
+ },
1194
+ {
1195
+ "internalType": "bytes",
1196
+ "name": "swapDataRepay",
1197
+ "type": "bytes"
1198
+ },
1199
+ {
1200
+ "internalType": "uint256",
1201
+ "name": "longAmountToRedeemForProfit",
1202
+ "type": "uint256"
1203
+ },
1204
+ {
1205
+ "internalType": "uint256",
1206
+ "name": "minAmountOutProfit",
1207
+ "type": "uint256"
1208
+ },
1209
+ {
1210
+ "internalType": "bytes",
1211
+ "name": "swapDataProfit",
1212
+ "type": "bytes"
1213
+ }
1214
+ ],
1215
+ "name": "closeWithProfit",
1216
+ "outputs": [],
1217
+ "stateMutability": "nonpayable",
1218
+ "type": "function"
1219
+ },
1220
+ {
1221
+ "inputs": [
1222
+ {
1223
+ "internalType": "contract IVToken",
1224
+ "name": "longVToken",
1225
+ "type": "address"
1226
+ },
1227
+ {
1228
+ "internalType": "contract IVToken",
1229
+ "name": "shortVToken",
1230
+ "type": "address"
1231
+ },
1232
+ {
1233
+ "components": [
1234
+ {
1235
+ "internalType": "uint256",
1236
+ "name": "longAmountToRedeemForRepay",
1237
+ "type": "uint256"
1238
+ },
1239
+ {
1240
+ "internalType": "uint256",
1241
+ "name": "minAmountOutRepay",
1242
+ "type": "uint256"
1243
+ },
1244
+ {
1245
+ "internalType": "bytes",
1246
+ "name": "swapDataRepay",
1247
+ "type": "bytes"
1248
+ },
1249
+ {
1250
+ "internalType": "uint256",
1251
+ "name": "longAmountToRedeemForProfit",
1252
+ "type": "uint256"
1253
+ },
1254
+ {
1255
+ "internalType": "uint256",
1256
+ "name": "minAmountOutProfit",
1257
+ "type": "uint256"
1258
+ },
1259
+ {
1260
+ "internalType": "bytes",
1261
+ "name": "swapDataProfit",
1262
+ "type": "bytes"
1263
+ }
1264
+ ],
1265
+ "internalType": "struct IRelativePositionManager.CloseWithProfitParams",
1266
+ "name": "profitSwapParams",
1267
+ "type": "tuple"
1268
+ }
1269
+ ],
1270
+ "name": "closeWithProfitAndDeactivate",
1271
+ "outputs": [],
1272
+ "stateMutability": "nonpayable",
1273
+ "type": "function"
1274
+ },
1275
+ {
1276
+ "inputs": [],
1277
+ "name": "completePause",
1278
+ "outputs": [],
1279
+ "stateMutability": "nonpayable",
1280
+ "type": "function"
1281
+ },
1282
+ {
1283
+ "inputs": [],
1284
+ "name": "completeUnpause",
1285
+ "outputs": [],
1286
+ "stateMutability": "nonpayable",
1287
+ "type": "function"
1288
+ },
1289
+ {
1290
+ "inputs": [
1291
+ {
1292
+ "internalType": "contract IVToken",
1293
+ "name": "longVToken",
1294
+ "type": "address"
1295
+ },
1296
+ {
1297
+ "internalType": "contract IVToken",
1298
+ "name": "shortVToken",
1299
+ "type": "address"
1300
+ }
1301
+ ],
1302
+ "name": "deactivatePosition",
1303
+ "outputs": [],
1304
+ "stateMutability": "nonpayable",
1305
+ "type": "function"
1306
+ },
1307
+ {
1308
+ "inputs": [],
1309
+ "name": "dsaVTokenIndexCounter",
1310
+ "outputs": [
1311
+ {
1312
+ "internalType": "uint8",
1313
+ "name": "",
1314
+ "type": "uint8"
1315
+ }
1316
+ ],
1317
+ "stateMutability": "view",
1318
+ "type": "function"
1319
+ },
1320
+ {
1321
+ "inputs": [
1322
+ {
1323
+ "internalType": "uint8",
1324
+ "name": "",
1325
+ "type": "uint8"
1326
+ }
1327
+ ],
1328
+ "name": "dsaVTokens",
1329
+ "outputs": [
1330
+ {
1331
+ "internalType": "address",
1332
+ "name": "",
1333
+ "type": "address"
1334
+ }
1335
+ ],
1336
+ "stateMutability": "view",
1337
+ "type": "function"
1338
+ },
1339
+ {
1340
+ "inputs": [
1341
+ {
1342
+ "internalType": "address",
1343
+ "name": "positionAccount",
1344
+ "type": "address"
1345
+ },
1346
+ {
1347
+ "internalType": "address[]",
1348
+ "name": "targets",
1349
+ "type": "address[]"
1350
+ },
1351
+ {
1352
+ "internalType": "bytes[]",
1353
+ "name": "data",
1354
+ "type": "bytes[]"
1355
+ }
1356
+ ],
1357
+ "name": "executePositionAccountCall",
1358
+ "outputs": [],
1359
+ "stateMutability": "nonpayable",
1360
+ "type": "function"
1361
+ },
1362
+ {
1363
+ "inputs": [
1364
+ {
1365
+ "internalType": "address",
1366
+ "name": "user",
1367
+ "type": "address"
1368
+ },
1369
+ {
1370
+ "internalType": "contract IVToken",
1371
+ "name": "longVToken",
1372
+ "type": "address"
1373
+ },
1374
+ {
1375
+ "internalType": "contract IVToken",
1376
+ "name": "shortVToken",
1377
+ "type": "address"
1378
+ }
1379
+ ],
1380
+ "name": "getAvailableShortCapacity",
1381
+ "outputs": [
1382
+ {
1383
+ "internalType": "uint256",
1384
+ "name": "availableCapacity",
1385
+ "type": "uint256"
1386
+ }
1387
+ ],
1388
+ "stateMutability": "nonpayable",
1389
+ "type": "function"
1390
+ },
1391
+ {
1392
+ "inputs": [],
1393
+ "name": "getDsaVTokens",
1394
+ "outputs": [
1395
+ {
1396
+ "internalType": "address[]",
1397
+ "name": "dsaVTokensList",
1398
+ "type": "address[]"
1399
+ }
1400
+ ],
1401
+ "stateMutability": "view",
1402
+ "type": "function"
1403
+ },
1404
+ {
1405
+ "inputs": [
1406
+ {
1407
+ "internalType": "address",
1408
+ "name": "user",
1409
+ "type": "address"
1410
+ },
1411
+ {
1412
+ "internalType": "contract IVToken",
1413
+ "name": "longVToken",
1414
+ "type": "address"
1415
+ },
1416
+ {
1417
+ "internalType": "contract IVToken",
1418
+ "name": "shortVToken",
1419
+ "type": "address"
1420
+ }
1421
+ ],
1422
+ "name": "getLongCollateralBalance",
1423
+ "outputs": [
1424
+ {
1425
+ "internalType": "uint256",
1426
+ "name": "longBalance",
1427
+ "type": "uint256"
1428
+ }
1429
+ ],
1430
+ "stateMutability": "nonpayable",
1431
+ "type": "function"
1432
+ },
1433
+ {
1434
+ "inputs": [
1435
+ {
1436
+ "internalType": "contract IVToken",
1437
+ "name": "dsaVToken",
1438
+ "type": "address"
1439
+ },
1440
+ {
1441
+ "internalType": "address",
1442
+ "name": "longVToken",
1443
+ "type": "address"
1444
+ }
1445
+ ],
1446
+ "name": "getMaxLeverageAllowed",
1447
+ "outputs": [
1448
+ {
1449
+ "internalType": "uint256",
1450
+ "name": "maxLeverage",
1451
+ "type": "uint256"
1452
+ }
1453
+ ],
1454
+ "stateMutability": "view",
1455
+ "type": "function"
1456
+ },
1457
+ {
1458
+ "inputs": [
1459
+ {
1460
+ "internalType": "address",
1461
+ "name": "user",
1462
+ "type": "address"
1463
+ },
1464
+ {
1465
+ "internalType": "contract IVToken",
1466
+ "name": "longVToken",
1467
+ "type": "address"
1468
+ },
1469
+ {
1470
+ "internalType": "contract IVToken",
1471
+ "name": "shortVToken",
1472
+ "type": "address"
1473
+ }
1474
+ ],
1475
+ "name": "getPosition",
1476
+ "outputs": [
1477
+ {
1478
+ "components": [
1479
+ {
1480
+ "internalType": "address",
1481
+ "name": "user",
1482
+ "type": "address"
1483
+ },
1484
+ {
1485
+ "internalType": "address",
1486
+ "name": "longVToken",
1487
+ "type": "address"
1488
+ },
1489
+ {
1490
+ "internalType": "address",
1491
+ "name": "shortVToken",
1492
+ "type": "address"
1493
+ },
1494
+ {
1495
+ "internalType": "address",
1496
+ "name": "positionAccount",
1497
+ "type": "address"
1498
+ },
1499
+ {
1500
+ "internalType": "bool",
1501
+ "name": "isActive",
1502
+ "type": "bool"
1503
+ },
1504
+ {
1505
+ "internalType": "uint8",
1506
+ "name": "dsaIndex",
1507
+ "type": "uint8"
1508
+ },
1509
+ {
1510
+ "internalType": "address",
1511
+ "name": "dsaVToken",
1512
+ "type": "address"
1513
+ },
1514
+ {
1515
+ "internalType": "uint256",
1516
+ "name": "suppliedPrincipalVTokens",
1517
+ "type": "uint256"
1518
+ },
1519
+ {
1520
+ "internalType": "uint256",
1521
+ "name": "effectiveLeverage",
1522
+ "type": "uint256"
1523
+ },
1524
+ {
1525
+ "internalType": "uint256",
1526
+ "name": "cycleId",
1527
+ "type": "uint256"
1528
+ }
1529
+ ],
1530
+ "internalType": "struct IRelativePositionManager.Position",
1531
+ "name": "position",
1532
+ "type": "tuple"
1533
+ }
1534
+ ],
1535
+ "stateMutability": "view",
1536
+ "type": "function"
1537
+ },
1538
+ {
1539
+ "inputs": [
1540
+ {
1541
+ "internalType": "address",
1542
+ "name": "user",
1543
+ "type": "address"
1544
+ },
1545
+ {
1546
+ "internalType": "contract IVToken",
1547
+ "name": "longVToken",
1548
+ "type": "address"
1549
+ },
1550
+ {
1551
+ "internalType": "contract IVToken",
1552
+ "name": "shortVToken",
1553
+ "type": "address"
1554
+ }
1555
+ ],
1556
+ "name": "getPositionAccountAddress",
1557
+ "outputs": [
1558
+ {
1559
+ "internalType": "address",
1560
+ "name": "predicted",
1561
+ "type": "address"
1562
+ }
1563
+ ],
1564
+ "stateMutability": "view",
1565
+ "type": "function"
1566
+ },
1567
+ {
1568
+ "inputs": [
1569
+ {
1570
+ "internalType": "address",
1571
+ "name": "user",
1572
+ "type": "address"
1573
+ },
1574
+ {
1575
+ "internalType": "contract IVToken",
1576
+ "name": "longVToken",
1577
+ "type": "address"
1578
+ },
1579
+ {
1580
+ "internalType": "contract IVToken",
1581
+ "name": "shortVToken",
1582
+ "type": "address"
1583
+ }
1584
+ ],
1585
+ "name": "getSuppliedPrincipalBalance",
1586
+ "outputs": [
1587
+ {
1588
+ "internalType": "uint256",
1589
+ "name": "balance",
1590
+ "type": "uint256"
1591
+ }
1592
+ ],
1593
+ "stateMutability": "nonpayable",
1594
+ "type": "function"
1595
+ },
1596
+ {
1597
+ "inputs": [
1598
+ {
1599
+ "internalType": "address",
1600
+ "name": "user",
1601
+ "type": "address"
1602
+ },
1603
+ {
1604
+ "internalType": "contract IVToken",
1605
+ "name": "longVToken",
1606
+ "type": "address"
1607
+ },
1608
+ {
1609
+ "internalType": "contract IVToken",
1610
+ "name": "shortVToken",
1611
+ "type": "address"
1612
+ }
1613
+ ],
1614
+ "name": "getUtilizationInfo",
1615
+ "outputs": [
1616
+ {
1617
+ "components": [
1618
+ {
1619
+ "internalType": "uint256",
1620
+ "name": "actualCapitalUtilized",
1621
+ "type": "uint256"
1622
+ },
1623
+ {
1624
+ "internalType": "uint256",
1625
+ "name": "nominalCapitalUtilized",
1626
+ "type": "uint256"
1627
+ },
1628
+ {
1629
+ "internalType": "uint256",
1630
+ "name": "finalCapitalUtilized",
1631
+ "type": "uint256"
1632
+ },
1633
+ {
1634
+ "internalType": "uint256",
1635
+ "name": "availableCapitalUSD",
1636
+ "type": "uint256"
1637
+ },
1638
+ {
1639
+ "internalType": "uint256",
1640
+ "name": "withdrawableAmount",
1641
+ "type": "uint256"
1642
+ },
1643
+ {
1644
+ "internalType": "uint256",
1645
+ "name": "clampedLeverage",
1646
+ "type": "uint256"
1647
+ }
1648
+ ],
1649
+ "internalType": "struct IRelativePositionManager.UtilizationInfo",
1650
+ "name": "utilization",
1651
+ "type": "tuple"
1652
+ }
1653
+ ],
1654
+ "stateMutability": "nonpayable",
1655
+ "type": "function"
1656
+ },
1657
+ {
1658
+ "inputs": [
1659
+ {
1660
+ "internalType": "address",
1661
+ "name": "accessControlManager_",
1662
+ "type": "address"
1663
+ }
1664
+ ],
1665
+ "name": "initialize",
1666
+ "outputs": [],
1667
+ "stateMutability": "nonpayable",
1668
+ "type": "function"
1669
+ },
1670
+ {
1671
+ "inputs": [],
1672
+ "name": "isCompletelyPaused",
1673
+ "outputs": [
1674
+ {
1675
+ "internalType": "bool",
1676
+ "name": "",
1677
+ "type": "bool"
1678
+ }
1679
+ ],
1680
+ "stateMutability": "view",
1681
+ "type": "function"
1682
+ },
1683
+ {
1684
+ "inputs": [
1685
+ {
1686
+ "internalType": "address",
1687
+ "name": "",
1688
+ "type": "address"
1689
+ }
1690
+ ],
1691
+ "name": "isDsaVTokenActive",
1692
+ "outputs": [
1693
+ {
1694
+ "internalType": "bool",
1695
+ "name": "",
1696
+ "type": "bool"
1697
+ }
1698
+ ],
1699
+ "stateMutability": "view",
1700
+ "type": "function"
1701
+ },
1702
+ {
1703
+ "inputs": [],
1704
+ "name": "isPartiallyPaused",
1705
+ "outputs": [
1706
+ {
1707
+ "internalType": "bool",
1708
+ "name": "",
1709
+ "type": "bool"
1710
+ }
1711
+ ],
1712
+ "stateMutability": "view",
1713
+ "type": "function"
1714
+ },
1715
+ {
1716
+ "inputs": [],
1717
+ "name": "isPositionAccountImplementationLocked",
1718
+ "outputs": [
1719
+ {
1720
+ "internalType": "bool",
1721
+ "name": "",
1722
+ "type": "bool"
1723
+ }
1724
+ ],
1725
+ "stateMutability": "view",
1726
+ "type": "function"
1727
+ },
1728
+ {
1729
+ "inputs": [],
1730
+ "name": "owner",
1731
+ "outputs": [
1732
+ {
1733
+ "internalType": "address",
1734
+ "name": "",
1735
+ "type": "address"
1736
+ }
1737
+ ],
1738
+ "stateMutability": "view",
1739
+ "type": "function"
1740
+ },
1741
+ {
1742
+ "inputs": [],
1743
+ "name": "partialPause",
1744
+ "outputs": [],
1745
+ "stateMutability": "nonpayable",
1746
+ "type": "function"
1747
+ },
1748
+ {
1749
+ "inputs": [],
1750
+ "name": "partialUnpause",
1751
+ "outputs": [],
1752
+ "stateMutability": "nonpayable",
1753
+ "type": "function"
1754
+ },
1755
+ {
1756
+ "inputs": [],
1757
+ "name": "pendingOwner",
1758
+ "outputs": [
1759
+ {
1760
+ "internalType": "address",
1761
+ "name": "",
1762
+ "type": "address"
1763
+ }
1764
+ ],
1765
+ "stateMutability": "view",
1766
+ "type": "function"
1767
+ },
1768
+ {
1769
+ "inputs": [
1770
+ {
1771
+ "internalType": "address",
1772
+ "name": "",
1773
+ "type": "address"
1774
+ },
1775
+ {
1776
+ "internalType": "address",
1777
+ "name": "",
1778
+ "type": "address"
1779
+ },
1780
+ {
1781
+ "internalType": "address",
1782
+ "name": "",
1783
+ "type": "address"
1784
+ }
1785
+ ],
1786
+ "name": "positions",
1787
+ "outputs": [
1788
+ {
1789
+ "internalType": "address",
1790
+ "name": "user",
1791
+ "type": "address"
1792
+ },
1793
+ {
1794
+ "internalType": "address",
1795
+ "name": "longVToken",
1796
+ "type": "address"
1797
+ },
1798
+ {
1799
+ "internalType": "address",
1800
+ "name": "shortVToken",
1801
+ "type": "address"
1802
+ },
1803
+ {
1804
+ "internalType": "address",
1805
+ "name": "positionAccount",
1806
+ "type": "address"
1807
+ },
1808
+ {
1809
+ "internalType": "bool",
1810
+ "name": "isActive",
1811
+ "type": "bool"
1812
+ },
1813
+ {
1814
+ "internalType": "uint8",
1815
+ "name": "dsaIndex",
1816
+ "type": "uint8"
1817
+ },
1818
+ {
1819
+ "internalType": "address",
1820
+ "name": "dsaVToken",
1821
+ "type": "address"
1822
+ },
1823
+ {
1824
+ "internalType": "uint256",
1825
+ "name": "suppliedPrincipalVTokens",
1826
+ "type": "uint256"
1827
+ },
1828
+ {
1829
+ "internalType": "uint256",
1830
+ "name": "effectiveLeverage",
1831
+ "type": "uint256"
1832
+ },
1833
+ {
1834
+ "internalType": "uint256",
1835
+ "name": "cycleId",
1836
+ "type": "uint256"
1837
+ }
1838
+ ],
1839
+ "stateMutability": "view",
1840
+ "type": "function"
1841
+ },
1842
+ {
1843
+ "inputs": [],
1844
+ "name": "proportionalCloseTolerance",
1845
+ "outputs": [
1846
+ {
1847
+ "internalType": "uint256",
1848
+ "name": "",
1849
+ "type": "uint256"
1850
+ }
1851
+ ],
1852
+ "stateMutability": "view",
1853
+ "type": "function"
1854
+ },
1855
+ {
1856
+ "inputs": [],
1857
+ "name": "renounceOwnership",
1858
+ "outputs": [],
1859
+ "stateMutability": "nonpayable",
1860
+ "type": "function"
1861
+ },
1862
+ {
1863
+ "inputs": [
1864
+ {
1865
+ "internalType": "contract IVToken",
1866
+ "name": "longVToken",
1867
+ "type": "address"
1868
+ },
1869
+ {
1870
+ "internalType": "contract IVToken",
1871
+ "name": "shortVToken",
1872
+ "type": "address"
1873
+ },
1874
+ {
1875
+ "internalType": "uint256",
1876
+ "name": "additionalPrincipal",
1877
+ "type": "uint256"
1878
+ },
1879
+ {
1880
+ "internalType": "uint256",
1881
+ "name": "shortAmount",
1882
+ "type": "uint256"
1883
+ },
1884
+ {
1885
+ "internalType": "uint256",
1886
+ "name": "minLongAmount",
1887
+ "type": "uint256"
1888
+ },
1889
+ {
1890
+ "internalType": "bytes",
1891
+ "name": "swapData",
1892
+ "type": "bytes"
1893
+ }
1894
+ ],
1895
+ "name": "scalePosition",
1896
+ "outputs": [],
1897
+ "stateMutability": "nonpayable",
1898
+ "type": "function"
1899
+ },
1900
+ {
1901
+ "inputs": [
1902
+ {
1903
+ "internalType": "address",
1904
+ "name": "accessControlManager_",
1905
+ "type": "address"
1906
+ }
1907
+ ],
1908
+ "name": "setAccessControlManager",
1909
+ "outputs": [],
1910
+ "stateMutability": "nonpayable",
1911
+ "type": "function"
1912
+ },
1913
+ {
1914
+ "inputs": [
1915
+ {
1916
+ "internalType": "uint8",
1917
+ "name": "dsaIndex",
1918
+ "type": "uint8"
1919
+ },
1920
+ {
1921
+ "internalType": "bool",
1922
+ "name": "active",
1923
+ "type": "bool"
1924
+ }
1925
+ ],
1926
+ "name": "setDSAVTokenActive",
1927
+ "outputs": [],
1928
+ "stateMutability": "nonpayable",
1929
+ "type": "function"
1930
+ },
1931
+ {
1932
+ "inputs": [
1933
+ {
1934
+ "internalType": "address",
1935
+ "name": "positionAccountImpl",
1936
+ "type": "address"
1937
+ }
1938
+ ],
1939
+ "name": "setPositionAccountImplementation",
1940
+ "outputs": [],
1941
+ "stateMutability": "nonpayable",
1942
+ "type": "function"
1943
+ },
1944
+ {
1945
+ "inputs": [
1946
+ {
1947
+ "internalType": "uint256",
1948
+ "name": "newTolerance",
1949
+ "type": "uint256"
1950
+ }
1951
+ ],
1952
+ "name": "setProportionalCloseTolerance",
1953
+ "outputs": [],
1954
+ "stateMutability": "nonpayable",
1955
+ "type": "function"
1956
+ },
1957
+ {
1958
+ "inputs": [
1959
+ {
1960
+ "internalType": "address",
1961
+ "name": "longVToken",
1962
+ "type": "address"
1963
+ },
1964
+ {
1965
+ "internalType": "address",
1966
+ "name": "shortVToken",
1967
+ "type": "address"
1968
+ },
1969
+ {
1970
+ "internalType": "uint256",
1971
+ "name": "amount",
1972
+ "type": "uint256"
1973
+ }
1974
+ ],
1975
+ "name": "supplyPrincipal",
1976
+ "outputs": [],
1977
+ "stateMutability": "nonpayable",
1978
+ "type": "function"
1979
+ },
1980
+ {
1981
+ "inputs": [
1982
+ {
1983
+ "internalType": "address",
1984
+ "name": "newOwner",
1985
+ "type": "address"
1986
+ }
1987
+ ],
1988
+ "name": "transferOwnership",
1989
+ "outputs": [],
1990
+ "stateMutability": "nonpayable",
1991
+ "type": "function"
1992
+ },
1993
+ {
1994
+ "inputs": [
1995
+ {
1996
+ "internalType": "contract IVToken",
1997
+ "name": "longVToken",
1998
+ "type": "address"
1999
+ },
2000
+ {
2001
+ "internalType": "contract IVToken",
2002
+ "name": "shortVToken",
2003
+ "type": "address"
2004
+ },
2005
+ {
2006
+ "internalType": "uint256",
2007
+ "name": "amount",
2008
+ "type": "uint256"
2009
+ }
2010
+ ],
2011
+ "name": "withdrawPrincipal",
2012
+ "outputs": [],
2013
+ "stateMutability": "nonpayable",
2014
+ "type": "function"
2015
+ }
2016
+ ],
2017
+ "bytecode": "0x60c0346101a757601f61640c38819003918201601f19168301916001600160401b038311848410176101ab5780849260409485528339810103126101a757610052602061004b836101bf565b92016101bf565b906001600160a01b031680158015610196575b610187576080526001600160a01b031660a0525f54600881901c60ff166101325760ff808216036100f8575b60405161623890816101d48239608051818181610c6b01528181613c860152818161409a01528181614230015281816143ae0152818161498201528181614a5d015281816156660152615b73015260a0518181816119f8015281816140ed0152615e640152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f610091565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b63d92e233d60e01b5f5260045ffd5b506001600160a01b03821615610065565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101a75756fe60806040526004361015610011575f80fd5b5f3560e01c8063066693f61461031457806306ef53031461030f5780630d3f2a961461030a5780630dfc5779146103055780630e32cb8614610300578063138b4880146102fb578063236b836e146102f6578063236f7e79146102f157806334c1557d146102ec578063363519a6146102e75780633642b189146102e25780633f078193146102dd578063427184ab146102d85780634d579a75146102d357806350bcad05146102ce5780635f29a43a146102c95780635f82c67e146102c4578063642adf1e146102bf57806367b8a4f4146102ba5780636d15b95c146102b5578063713390f5146102b0578063715018a6146102ab578063725d4111146102a657806373016aee146102a157806375e990d51461029c578063786f45391461029757806379ba5097146102925780637a950bb51461028d5780638a923d5a146102885780638da5cb5b146102835780639a707e451461027e578063a753996614610279578063ac3a3fa714610274578063ae697b971461026f578063b3aac90e1461026a578063b4a0bdf314610265578063bccf3a3e14610260578063c26f10e91461025b578063c4d66de814610256578063cc7a284a14610251578063d64184e51461024c578063e03e789014610247578063e281e50a14610242578063e30c39781461023d578063e5d5822f14610238578063eb086bcc14610233578063f02465b71461022e5763f2fde38b14610229575f80fd5b611dde565b611dc0565b611da3565b611cef565b611cc7565b611ca2565b611c84565b611b5c565b611b1e565b611a27565b6119e3565b61187a565b611852565b611726565b611685565b611602565b611586565b61156b565b611543565b6114b5565b611298565b611214565b6110e9565b61106f565b611053565b610fcb565b610f66565b610e2c565b610d9e565b610d4e565b610c9a565b610c56565b610c31565b610b6d565b610b03565b610a96565b610a12565b6109d2565b6108dd565b610886565b61084c565b61076d565b610748565b610634565b6105be565b610541565b610424565b61032e565b6001600160a01b0381160361032a57565b5f80fd5b3461032a57602036600319011261032a5760043561034b81610319565b61039d60405161035c606082611e83565b602981527f736574506f736974696f6e4163636f756e74496d706c656d656e746174696f6e60208201526828616464726573732960b81b6040820152612c43565b60ff60fc5460a01c16610415576001600160a01b0381169081156104065760fc80546001600160a81b0319166001600160a01b0390921691909117600160a01b1790557ffd9f24445cf7762ef197daa375827784851b5b5fe6ba590a41d008137e15e8775f80a2005b63d92e233d60e01b5f5260045ffd5b635b15774760e11b5f5260045ffd5b3461032a57606036600319011261032a5761049d60043561044481610319565b61048860243561045381610319565b6044359261046084610319565b60018060a01b03165f5260ff60205260405f209060018060a01b03165f5260205260405f2090565b9060018060a01b03165f5260205260405f2090565b8054600182015460028301546003840154600485015460058601546006870154600790970154604080516001600160a01b039889168152968816602088015294871694860194909452858316606086015260ff60a084811c82161515608088015260a89490941c16928501929092529390931660c083015260e08201929092526101008101929092526101208201528061014081015b0390f35b5f91031261032a57565b3461032a575f36600319011261032a57610585604051610562604082611e83565b6011815270636f6d706c657465556e7061757365282960781b6020820152612c43565b60ff60b81b1960fc541660fc557fb46447f3be1297dda31d1438c1eb286327541d8a8956a610d984c984adc9fc0360206040515f8152a1005b3461032a57604036600319011261032a576004356105db81610319565b6024356105e781610319565b6105ef612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175761061091612d33565b600160c955005b621438df60e31b5f5260045ffd5b630fd30b9560e11b5f5260045ffd5b3461032a57602036600319011261032a5760043561065181610319565b610659612f34565b6001600160a01b0381169081156106f5576097547f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa092906106d1906106ae906001600160a01b03165b6001600160a01b031690565b9160018060a01b03166bffffffffffffffffffffffff60a01b6097541617609755565b604080516001600160a01b039283168152929091166020830152819081015b0390a1005b60405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608490fd5b3461032a575f36600319011261032a57602060ff60fc5460b81c166040519015158152f35b3461032a57602036600319011261032a576004356107d0604051610792606082611e83565b602681527f73657450726f706f7274696f6e616c436c6f7365546f6c6572616e63652875696020820152656e743235362960d01b6040820152612c43565b600181108015610831575b6108225760fb54818114610813578160fb557fdb89089e85b9523c3fcf0af79584c259a787ddfed0755751dc1918203f2ffaaa5f80a3005b6309c1a22960e11b5f5260045ffd5b6330e6ddab60e21b5f5260045ffd5b5061271081116107db565b6004359060ff8216820361032a57565b3461032a57602036600319011261032a5760ff61086761083c565b165f5260fd602052602060018060a01b0360405f205416604051908152f35b3461032a575f36600319011261032a576020604051670de0b6b3a76400008152f35b606090600319011261032a576004356108c081610319565b906024356108cd81610319565b906044356108da81610319565b90565b3461032a576108eb366108a8565b60fc549092906001600160a01b031680156109c3576040516bffffffffffffffffffffffff19606093841b81166020830190815294841b811660348301529490921b90931660488201526105339260559260439261095681605c81015b03601f198101835282611e83565b519020604051913060388401526f5af43d82803e903d91602b57fd5bf3ff60248401526014830152733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152012060405191829182919091602081019260018060a01b03169052565b630b40031360e21b5f5260045ffd5b3461032a57602036600319011261032a576004356109ef81610319565b60018060a01b03165f5260fe602052602060ff60405f2054166040519015158152f35b3461032a575f36600319011261032a57610a54604051610a33604082611e83565b600f81526e636f6d706c6574655061757365282960881b6020820152612c43565b60fc805460ff60b81b1916600160b81b179055604051600181527fb46447f3be1297dda31d1438c1eb286327541d8a8956a610d984c984adc9fc0390602090a1005b3461032a576020610afb610af6610ada610aaf366108a8565b6001600160a01b039283165f90815260ff885260408082209390941681526020929092529190209091565b6001600160a01b039091165f9081526020919091526040902090565b612fe1565b604051908152f35b3461032a575f36600319011261032a5760fc546040516001600160a01b039091168152602090f35b60206040818301928281528451809452019201905f5b818110610b4e5750505090565b82516001600160a01b0316845260209384019390920191600101610b41565b3461032a575f36600319011261032a5760fc5460ff8160a81c16610b9081611eb6565b90610b9e6040519283611e83565b808252610bad601f1991611eb6565b013660208301375f91610bc79060a81c60ff165b60ff1690565b915b60ff811683811015610c235781610c1c600192610c0d610c06610bf960ff9760ff165f5260fd60205260405f2090565b546001600160a01b031690565b9187611ecd565b6001600160a01b039091169052565b0116610bc9565b604051806105338582610b2b565b3461032a575f36600319011261032a57602060ff60fc5460b01c166040519015158152f35b3461032a575f36600319011261032a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461032a57606036600319011261032a57600435610cb781610319565b602435610cc381610319565b604435916001600160401b03831161032a57826004019260c0600319823603011261032a57610cf0612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175761061093610d4991813590602481013592610d266044830182611ef5565b90610d3f60648501359360a46084870135960190611ef5565b9690958a8a6131f1565b612d33565b3461032a575f36600319011261032a57602060ff60fc5460a81c16604051908152f35b9181601f8401121561032a578235916001600160401b03831161032a576020838186019501011161032a57565b3461032a5761014036600319011261032a57600435610dbc81610319565b602435610dc881610319565b6044359160643560843560a43560c4356001600160401b03811161032a57610df4903690600401610d71565b9160e43593610104359561012435996001600160401b038b1161032a57610e22610e2a9b3690600401610d71565b9a9099611f27565b005b3461032a57610533610ec3610ebe610ada610e46366108a8565b92915f610120604051610e5881611e62565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152015260018060a01b03165f5260ff60205260405f209060018060a01b031660018060a01b03165f5260205260405f2090565b6122ac565b6040519182918281516001600160a01b03168152610140810192916101209081906020818101516001600160a01b0316908501526040818101516001600160a01b0316908501526060818101516001600160a01b03169085015260808181015115159085015260a08181015160ff169085015260c0818101516001600160a01b03169085015260e081015160e08501526101008101516101008501520151910152565b3461032a575f36600319011261032a57610f7e612f34565b606580546001600160a01b03199081169091556033805491821690555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461032a5761012036600319011261032a57600435610fe981610319565b602435610ff581610319565b6044359160643560843560a4356001600160401b03811161032a5761101e903690600401610d71565b9060c4359260e4359461010435986001600160401b038a1161032a5761104b610e2a9a3690600401610d71565b999098612360565b3461032a575f36600319011261032a5760206040516127108152f35b3461032a57606036600319011261032a5760043561108c81610319565b6024359061109982610319565b604435906110a5612cdd565b60ff60fc5460b81c166106175781156110da57610610926110c6913361375d565b60048101546001600160a01b0316906137af565b631f2a200560e01b5f5260045ffd5b3461032a5760c036600319011261032a5760043561110681610319565b6024359061111382610319565b60443590606435926084359160a4356001600160401b03811161032a5761113e903690600401610d71565b611149949194612cdd565b60fc5460ff8160b01c166106255760b81c60ff16610617577f6e8c6ac3dce2ed848b6c97a80991fe0aa6687959a3928c1cf365fd7439aac6c8946111909288888787613b8d565b335f81815260ff602090815260408083206001600160a01b0395861680855290835281842096861680855296835292819020600381015460078201546004909201548351928352938201949094529081019590955283166060850152608084019690965260a083019490945293909316928060c081015b0390a3610e2a600160c955565b3461032a575f36600319011261032a57606554336001600160a01b039091160361124157610e2a3361370a565b60405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608490fd5b3461032a57606036600319011261032a576004356112b581610319565b6024356112c181610319565b604435916112cd612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175782156110da57611302916001600160a01b0390811691163361375d565b60038101546001600160a01b031691608061131c83613c1e565b015181116114a657600482015461133b906001600160a01b03166106a2565b6040516370a0823160e01b81526001600160a01b038581166004830152821694909291602084602481895afa938415611478575f9461147d575b50828261138192613e8a565b6040516370a0823160e01b81526001600160a01b038216600482015292602084602481895afa908115611478576113e7611207926007927fa0bdfeb7a88aaee1f2447e214631d65b0e1a1e32209011efd498e5dc872d2a8d975f92611447575b5061261b565b600587018054909791818111156114375750505f87555b01549454604080519687526001600160a01b03978816602088015286019390935260608501929092529093169233929081906080820190565b6114409161261b565b87556113fe565b61146a91925060203d602011611471575b6114628183611e83565b8101906125bc565b905f6113e1565b503d611458565b6125cb565b6113819194508261149d859260203d602011611471576114628183611e83565b95925050611375565b634cfbed6160e01b5f5260045ffd5b3461032a5760c0611508611503610ada6114ce366108a8565b92916114d8612628565b506001600160a01b039081165f90815260ff6020908152604080832094909316825292909252902090565b613c1e565b60a0604051918051835260208101516020840152604081015160408401526060810151606084015260808101516080840152015160a0820152f35b3461032a575f36600319011261032a576033546040516001600160a01b039091168152602090f35b3461032a575f36600319011261032a57602060405160018152f35b3461032a575f36600319011261032a576115c96040516115a7604082611e83565b601081526f7061727469616c556e7061757365282960801b6020820152612c43565b60ff60b01b1960fc541660fc557f6266287f80efbe3783b53a0a39d18720663b60d45a7225db9e367a4bd73b56a660206040515f8152a1005b3461032a575f36600319011261032a57611643604051611623604082611e83565b600e81526d7061727469616c5061757365282960901b6020820152612c43565b60fc805460ff60b01b1916600160b01b179055604051600181527f6266287f80efbe3783b53a0a39d18720663b60d45a7225db9e367a4bd73b56a690602090a1005b3461032a5761010036600319011261032a576004356116a381610319565b6024356116af81610319565b6044359160ff8316830361032a5760643560843560a4359060c4359260e435966001600160401b03881161032a576116ee610e2a983690600401610d71565b979096612668565b9181601f8401121561032a578235916001600160401b03831161032a576020808501948460051b01011161032a57565b3461032a57606036600319011261032a5760043561174381610319565b6024356001600160401b03811161032a576117629036906004016116f6565b916044356001600160401b03811161032a576117829036906004016116f6565b93909161178d612cdd565b6117eb60405161179e606082611e83565b603581527f65786563757465506f736974696f6e4163636f756e7443616c6c28616464726560208201527473732c616464726573735b5d2c62797465735b5d2960581b6040820152612c43565b6001600160a01b031690813b1561032a575f809461181f6040519788968795869463d25ecbe960e01b865260048601612948565b03925af1801561147857611838575b610e2a600160c955565b806118465f61184c93611e83565b80610537565b5f61182e565b3461032a575f36600319011261032a576097546040516001600160a01b039091168152602090f35b3461032a57602036600319011261032a5760043561189781610319565b6118a76118a2612a26565b612c43565b6118b081614060565b60fc5460a81c60ff166001600160a01b0382169160ff82165f5b8160ff8216106119a357847f416cabccf63468e06e3ce52dfd5e578531f0149835bd27d3960580961d27be7461199e8661195f611952886119398161191a8660ff165f5260fd60205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b03165f90815260fe6020526040902090565b805460ff19166001179055565b61198a61196b82612a59565b60fc805460ff60a81b191660a89290921b60ff60a81b16919091179055565b60405160ff90911681529081906020820190565b0390a2005b8460018060a01b036119c3610bf98460ff165f5260fd60205260405f2090565b16146119d45760010160ff166118ca565b633c95fd2f60e11b5f5260045ffd5b3461032a575f36600319011261032a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461032a57602036600319011261032a57600435611a4481610319565b611a925f5491611a78611a62611a5e8560ff9060081c1690565b1590565b80948195611b10575b8115611af0575b50612a6b565b82611a89600160ff195f5416175f55565b611ad957612ace565b611a9857005b611aa661ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081016106f0565b611aeb61010061ff00195f5416175f55565b612ace565b303b15915081611b02575b505f611a72565b60ff1660011490505f611afb565b600160ff8216109150611a6b565b3461032a57604036600319011261032a576020610afb600435611b4081610319565b60243590611b4d82610319565b61420f565b8015150361032a57565b3461032a57604036600319011261032a57611b7561083c565b602435611b8181611b52565b611b8c6118a2612b84565b60fc54611b9e9060a81c60ff16610bc1565b60ff83161015611c7557611bc0610bf98360ff165f5260fd60205260405f2090565b6001600160a01b038116929091908315611c75576001600160a01b0383165f90815260fe602052604090205460ff16151582151514611c6657611c4982611c387f54baf8bed0b4fa5c669b06bff2727baf8c2c9a746ad5f0ab2b71ffedb17bf59b9560018060a01b03165f5260fe60205260405f2090565b9060ff801983541691151516179055565b6040805160ff90921682529115156020820152908190810161199e565b630e1c538760e01b5f5260045ffd5b636481eacd60e01b5f5260045ffd5b3461032a576020610afb611c9d610ada610aaf366108a8565b61437a565b3461032a575f36600319011261032a57602060ff60fc5460a01c166040519015158152f35b3461032a575f36600319011261032a576065546040516001600160a01b039091168152602090f35b3461032a57606036600319011261032a57600435611d0c81610319565b602435611d1881610319565b604435916001600160401b03831161032a57826004019260e0600319823603011261032a57611d45612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175761182e93610d49918135906024810135926044820135611d806064840183611ef5565b91611d9960848601359460c460a4880135970190611ef5565b9790968b8b61340d565b3461032a575f36600319011261032a57602060fb54604051908152f35b3461032a576020610afb611dd9610ada610aaf366108a8565b61449b565b3461032a57602036600319011261032a57600435611dfb81610319565b611e03612f34565b606580546001600160a01b0319166001600160a01b039283169081179091556033549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b634e487b7160e01b5f52604160045260245ffd5b61014081019081106001600160401b03821117611e7e57604052565b611e4e565b90601f801991011681019081106001600160401b03821117611e7e57604052565b60405190611eb461014083611e83565b565b6001600160401b038111611e7e5760051b60200190565b8051821015611ee15760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b903590601e198136030182121561032a57018035906001600160401b03821161032a5760200191813603831361032a57565b9399929698919a9790949597611f3b612cdd565b60ff60fc5460b81c16610617576001600160a01b038681169490611f6390869088163361375d565b60038101546040516305eff7ef60e21b81526001600160a01b039091166004820181905299919591906020816024815f8c5af1908115611478575f9161228d575b501561227e5760049b8f8f84848f9283602095611fc68d8f97611fcc98614a10565b8d61505c565b986040519e8f8092636f307dc360e01b82525afa9c8d15611478575f9d612245575b508c9d60208c6120269b9c9d9e9f60405180809e81946370a0823160e01b835260048301919091602081019260018060a01b03169052565b03916001600160a01b03165afa998a15611478578e905f9b61221c575b509089939291612193575b50505060048601546120929561207f95949392918c908e90612078906001600160a01b03166106a2565b908a615121565b9361208a848c613191565b908a89615375565b604051636f307dc360e01b8152946020866004816001600160a01b0389165afa8015611478575f5160206161e35f395f51905f52996120e06120e69261213e995f91612164575b508a614ee7565b88614ee7565b5f946127108c14612148575b505090600761210392015498613191565b9460405195869560018060a01b0316993399879260a094919796959260c0850198855260208501526040840152606083015260808201520152565b0390a3600160c955565b82955060079161215c916121039594614f3a565b9491926120f2565b612186915060203d60201161218c575b61217e8183611e83565b8101906131dc565b5f6120d9565b503d612174565b919594939250906001600160a01b038d163b1561032a578f958e5f8f928f948f919083976121d8926040519d8e998a9889976363c5f7df60e11b89526004890161319e565b03926001600160a01b03165af18015611478576120929561207f958992612208575b81975082939495965061204e565b806118465f61221693611e83565b5f6121fa565b8a949392919b5061223b9060203d602011611471576114628183611e83565b9a90919293612043565b8b9c9d5060209b999a9b3d602011612277575b6122628183611e83565b810161226d916131dc565b9c9b9a9998611fee565b503d612258565b630b26f6ab60e01b5f5260045ffd5b6122a6915060203d602011611471576114628183611e83565b5f611fa4565b9060076122b7611ea4565b83546001600160a01b031681529260018101546001600160a01b0316602085015260028101546001600160a01b0316604085015260038101546001600160a01b038116606086015261232e906123249061231b60a082901c60ff1615156080890152565b60a81c60ff1690565b60ff1660a0860152565b60048101546001600160a01b031660c0850152600581015460e085015260068101546101008501520154610120830152565b92989395909499969199612372612cdd565b60ff60fc5460b81c1661061757899788958c9360018060a01b038716936123c36123bc8c60018060a01b038d16986123b58b6123af8c8c3361375d565b9e613191565b908d614889565b9c8a614939565b60038901546001600160a01b03169a8c612542575b50505060209291879160049c878c8a82612511575b50505050505050604051998a8092636f307dc360e01b82525afa9081156114785761242560209260049a5f916124f4575b5088614ee7565b604051636f307dc360e01b815298899182905afa9384156114785761246461213e955f5160206161e35f395f51905f52995f916124d5575b5087614ee7565b5f926127108b146124bd575b505060076124819293015497613191565b60405194859460018060a01b031698339886919260a093969594919660c084019784526020840152604083015260608201525f60808201520152565b61248193506007916124cf9186614f3a565b92612470565b6124ee915060203d60201161218c5761217e8183611e83565b5f61245d565b61250b9150843d861161218c5761217e8183611e83565b5f61241e565b60049690960154612536969061252f906001600160a01b03166106a2565b918d614b0b565b855f8080878c8a6123ed565b919493916001600160a01b038c16803b1561032a578f5f8f986125828f959183978f936040519d8e998a9889976363c5f7df60e11b89526004890161319e565b03925af19182156114785760049c6020958a946125a8575b509c829495508193506123d8565b806118465f6125b693611e83565b5f61259a565b9081602091031261032a575190565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b670de0b6b3a76400000390670de0b6b3a7640000821161260657565b6125d6565b6127100390612710821161260657565b9190820391821161260657565b6040519060c082018281106001600160401b03821117611e7e576040525f60a0838281528260208201528260408201528260608201528260808201520152565b979195969094939296612679612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175761269a89614060565b6126a386614060565b6126ac87615908565b6126b6878b615970565b8815612919576126c68a8261420f565b670de0b6b3a7640000861090811561290f575b5061290057335f90815260ff602052604090206126fb908890610488908d9082565b94600386019889546127118160ff9060a01c1690565b6128f15789612858987f1a0c0154a1812f03ca760c80647fcdccbb60d42a36bdc83fc64d4c86de73320e8f8f94957f117bd87b0a8f3c1756111674cdb346fa1bf0da5c0f5d1789cf822a7fad73433f9f61280a908f9a88610bf9916128509b61278660018060a01b039160018060a01b031690565b16156128e1575b6127c760078a019661279f8854614052565b8855855460ff60a81b60a89290921b9190911661ffff60a01b1990911617600160a01b178555565b6004890180546001600160a01b0319166001600160a01b03831690811790915598600681018e905584546128059083906001600160a01b0316615b4c565b6137af565b9054604080516001600160a01b039687168152928616602084015282015260608101959095526080850196909652918116941692849284923392909190819060a0820190565b0390a4613a3c565b6128d461287d83610488886104883360018060a01b03165f5260ff60205260405f2090565b60038101546007820154600490920154604080519384526001600160a01b03998a166020850152958916958301959095529387166060820152608081019290925260a08201949094529316923392819060c0820190565b0390a3611eb4600160c955565b6128ec8a8833615993565b61278d565b630dd1bc8b60e31b5f5260045ffd5b633fe89cb960e11b5f5260045ffd5b905085115f6126d9565b63d24a69a560e01b5f5260045ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b909391806040830160408452526060820194905f5b8181106129f8575050506020818503910152808352602083019060208160051b85010193835f91601e1982360301905b84841061299e575050505050505090565b90919293949596601f1982820301875287358381121561032a57840190602082359201916001600160401b03811161032a57803603831361032a576129e96020928392600195612928565b9901970195940192919061298d565b90919394956020806001928735612a0e81610319565b60a085901b859003168152019796950192910161295d565b60405190612a35604083611e83565b601582527461646444534156546f6b656e28616464726573732960581b6020830152565b60ff60019116019060ff821161260657565b15612a7257565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b612af060ff5f5460081c16612ae281614194565b612aeb81614194565b614194565b612af93361370a565b612b0960ff5f5460081c16614194565b6001600160a01b0381169081156106f5576097547f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09290612b56906106ae906001600160a01b03166106a2565b604080516001600160a01b03928316815292909116602083015290a1612b7a6141f4565b611eb4606460fb55565b60405190612b93604083611e83565b601e82527f73657444534156546f6b656e4163746976652875696e74382c626f6f6c2900006020830152565b9081602091031261032a57516108da81611b52565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390911681526040602082018190526108da92910190612bd4565b6001600160a01b039182168152911660208201526060604082018190526108da92910190612bd4565b6097546001600160a01b0316602060405180926318c5e8ab60e01b82528180612c70873360048401612bf8565b03915afa908115611478575f91612cae575b5015612c8b5750565b604051634a3fa29360e01b8152908190612caa90303360048501612c1a565b0390fd5b612cd0915060203d602011612cd6575b612cc88183611e83565b810190612bbf565b5f612c82565b503d612cbe565b600260c95414612cee57600260c955565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6001600160a01b03818116921690612d4c82843361375d565b6003810180546040516305eff7ef60e21b81526001600160a01b039091166004820181905291959194929392602090829060249082905f905af1908115611478575f91612f15575b50612f06576004830154612db0906001600160a01b03166106a2565b916001600160a01b03831691612dd6612dc886612fe1565b885460ff60a01b1916909855565b5f60058601558203612e6457505090612e10837f465d1edff781634deddd4d5b4bb03d9b6eea0821bce869aecc62ef750a269a5e9361458c565b9384811115612e5957506007612e28855b809661261b565b915b0154604080519182526020820195909552938401526001600160a01b039091169133919080606081015b0390a3565b612e28600791612e21565b612e739193929550849061458c565b936001600160a01b038416803b1561032a57604051630ede4edd60e41b81526001600160a01b039490941660048501525f908490602490829084905af19283156114785784600792612eec927f465d1edff781634deddd4d5b4bb03d9b6eea0821bce869aecc62ef750a269a5e96612ef2575b5061458c565b91612e2a565b806118465f612f0093611e83565b5f612ee6565b632a00599f60e01b5f5260045ffd5b612f2e915060203d602011611471576114628183611e83565b5f612d94565b6033546001600160a01b03163303612f4857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561260657565b8181029291811591840414171561260657565b8115612fcd570490565b634e487b7160e01b5f52601260045260245ffd5b60038101546001600160a01b0316801561040657600182015461300c906001600160a01b03166106a2565b6004830154909290613026906001600160a01b03166106a2565b6001600160a01b03938416931683146130935750604051633af9e66960e01b81526001600160a01b039091166004820152906020908290815f81602481015b03925af1908115611478575f9161307a575090565b6108da915060203d602011611471576114628183611e83565b60206130cb926130a28361478d565b6040516370a0823160e01b81526001600160a01b03909116600482015292839081906024820190565b0381865afa908115611478576130ed925f9261315d575b50600501549061261b565b9081156131575760205f9160046040518094819363bd6d894d60e01b83525af18015611478576108da92613128925f92613136575b50612fb0565b670de0b6b3a7640000900490565b61315091925060203d602011611471576114628183611e83565b905f613122565b50505f90565b600591925061317a9060203d602011611471576114628183611e83565b91906130e2565b6127100190816127101161260657565b9190820180921161260657565b926108da97959260c0959260018060a01b03168552602085015260018060a01b03166040840152606083015260808201528160a08201520191612928565b9081602091031261032a57516108da81610319565b9298919795969395909391906132146001600160a01b038087169086163361375d565b9661322c8b6132238b8d613191565b6127108b614889565b9a6132378b8a614939565b60038901546001600160a01b0316978c6133a1575b50505087613373575b5050604051636f307dc360e01b815290506020816004816001600160a01b0386165afa801561147857613290915f91613354575b5084614ee7565b604051636f307dc360e01b8152946020866004816001600160a01b0387165afa958615611478576132eb612e54946132f4946132e55f5160206161e35f395f51905f529a6007955f91613335575b5089614ee7565b88614f3a565b95015496613191565b60408051968752612710602088015286019690965260608501959095525f608085015260a08401919091526001600160a01b031692339290819060c0820190565b61334e915060203d60201161218c5761217e8183611e83565b5f6132de565b61336d915060203d60201161218c5761217e8183611e83565b5f613289565b600487015461339993908990613391906001600160a01b03166106a2565b86898b614b0b565b5f8080613255565b6001600160a01b0389163b1561032a57866133d88d928f955f958c9760405198899788976363c5f7df60e11b89526004890161319e565b0381836001600160a01b038c165af18015611478576133f9575b808061324c565b806118465f61340793611e83565b5f6133f2565b9495989196909793929960018060a01b038916926134348460018060a01b0389163361375d565b60038101546040516305eff7ef60e21b81526001600160a01b039091166004820181905299919791906020816024815f8b5af1908115611478575f916136eb575b501561227e578660208f8460049a8f92836127108f6134988e61349d9883614a10565b61505c565b97604051998a8092636f307dc360e01b82525afa978815611478575f986136ca575b506040516370a0823160e01b81526001600160a01b038c81166004830152909e9089168f6024815a93602094fa9e8f15611478575f9f6136a1575b50909d9e9d8792918d613617575b505050600488015461354a9561353795949392918e90613530906001600160a01b03166106a2565b8d8c615121565b99613542838b613191565b908488615375565b604051636f307dc360e01b8152916020836004816001600160a01b0389165afa928315611478575f5160206161e35f395f51905f5298612e54966135a96007946135a36135b8986135af965f916135f8575b508c614ee7565b8a614ee7565b86614f3a565b93015497613191565b6040805197885261271060208901528701526060860193909352608085019590955260a08401919091526001600160a01b031692339290819060c0820190565b613611915060203d60201161218c5761217e8183611e83565b5f61359c565b919594939250906001600160a01b038c163b1561032a578b8f968f928f9161365d8f91925f979388946040519d8e998a9889976363c5f7df60e11b89526004890161319e565b03926001600160a01b03165af180156114785761354a9561353795889261368d575b819750829394959650613508565b806118465f61369b93611e83565b5f61367f565b909f9e50879291906136c09060203d8111611471576114628183611e83565b9e9f9091926134fa565b6136e491985060203d60201161218c5761217e8183611e83565b965f6134bf565b613704915060203d602011611471576114628183611e83565b5f613475565b606580546001600160a01b0319908116909155603380549182166001600160a01b0393841690811790915591167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6001600160a01b039081165f90815260ff60209081526040808320939094168252919091522061378d9190610488565b9060ff600383015460a01c16156137a057565b63a8a168bf60e01b5f5260045ffd5b600181015490926001600160a01b039283169290911682146139ef575b60038301546040516370a0823160e01b81526001600160a01b03909116600482018190529290602081602481855afa908115611478575f916139d0575b50604051636f307dc360e01b8152602081600481865afa80156114785783859161384f935f916139b1575b506001600160a01b031661384a83303384615419565b615462565b6040516323323e0360e01b81526001600160a01b0385166004820152602481018490526020816044815f875af1908115611478575f91613992575b508061398057506040516370a0823160e01b81526001600160a01b038516600482015290602082602481865afa8015611478576138cd925f91613961575061261b565b92831561395257612e547f7fc8a73e75360994e7dae4aee9f34765e11ec58a5cddc99d287f103fcbe7fdfc9361390860058801968754613191565b865586546007906001600160a01b03169701549554604080519788526001600160a01b03958616602089015287019190915260608601529082169491909116929081906080820190565b631777bc0d60e01b5f5260045ffd5b61397a915060203d602011611471576114628183611e83565b5f6113e1565b631f32531d60e21b5f5260045260245ffd5b6139ab915060203d602011611471576114628183611e83565b5f61388a565b6139ca915060203d60201161218c5761217e8183611e83565b5f613834565b6139e9915060203d602011611471576114628183611e83565b5f613809565b6139f88361478d565b6137cc565b6001600160a01b0391821681525f6020820152911660408201526060810191909152608081019190915260c060a082018190526108da93910191612928565b9194939092948015613b7e576001600160a01b03848116949084169390613a6486863361375d565b613a6d8161437a565b8411613b6f57600301546001600160a01b0316968792833b1561032a57613aaf5f969287936040519c8d9889978896633a8f8c4360e01b8852600488016139fd565b03925af190811561147857600494602092613b5b575b50604051636f307dc360e01b815294859182905afa90811561147857613af76020926004955f91613b44575084614ee7565b604051636f307dc360e01b815293849182905afa90811561147857611eb4925f92613b23575b50614ee7565b613b3d91925060203d60201161218c5761217e8183611e83565b905f613b1d565b61336d9150843d861161218c5761217e8183611e83565b806118465f613b6993611e83565b5f613ac5565b6342a9987560e01b5f5260045ffd5b636784cb8760e01b5f5260045ffd5b95949193959290928115613b7e576001600160a01b03848116959082169490613bb787873361375d565b6004810154909190613bd1906001600160a01b03166106a2565b9080613be3575b5050613a6d8161437a565b613bed91836137af565b5f80613bd8565b9081606091031261032a578051613c0a81611b52565b91604060208301519201516108da81611b52565b90613c27612628565b60018301805491939091613c43906001600160a01b03166106a2565b90613c4d8161558c565b6004820154909190613c67906001600160a01b03166106a2565b604051638e8f294b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169590946060866024818a5afa958615611478575f96613e5f575b50604051638e8f294b60e01b81526001600160a01b039091166004820152949593949360609085908180602481015b03915afa93841561147857613dd196606095613dc895613dbe95613d9e958d955f94613e15575b5054613d7692613128929091600691613d39916001600160a01b03165b9061420f565b9101549080821015613e0d5750925b60a086019384526020613d6a818d0195613d628751612f8c565b905190615895565b96019586528a51612fb0565b90519080821115613e0457613d8a9161261b565b905b81613dd8575b505088519051906158b4565b6040880190808252613db5604087019182516158c0565b8092525161261b565b8083880152612f8c565b91015190612fc3565b6080830152565b80613dee57505060408601515b89525f80613d92565b613dfa613dff92612f8c565b615895565b613de5565b50505f90613d8c565b905092613d48565b613d7693919450613d3961312893613d33613e486006948f3d606011613e58575b613e408183611e83565b810190613bf4565b5090509794965050935050613d16565b503d613e36565b613cef95965090613e7e606092833d8511613e5857613e408183611e83565b50905096955090613cc0565b919091811561404d57604051636f307dc360e01b81526001600160a01b03919091169190602081600481865afa908115611478575f9161402e575b506040516370a0823160e01b81523060048201526001600160a01b0391909116929091602083602481875afa928315611478575f93614004575b50604051636f9d28b760e11b81526001600160a01b03861660048201526024810191909152906020908290815f81604481015b03925af1908115611478575f91613fe5575b5080613fd357506040516370a0823160e01b815230600482015290602082602481865afa801561147857613f7e925f91613961575061261b565b9081613f8957505050565b613f948233836158cc565b60405191825233926001600160a01b0316917f390fcb074435a3f8b188b03b4dddf11fee4fe8c9a018b9f4f9a8196117b5cf429080602081015b0390a4565b636083d26960e01b5f5260045260245ffd5b613ffe915060203d602011611471576114628183611e83565b5f613f44565b60209193505f92614024613f3292843d8611611471576114628183611e83565b9492509250613eff565b614047915060203d60201161218c5761217e8183611e83565b5f613ec5565b505050565b5f1981146126065760010190565b6001600160a01b03811690811561040657604051638e8f294b60e01b81526001600160a01b039091166004820152606081806024810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611478575f91614173575b5015614164576040516333e1567f60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611478575f91614145575b506001600160a01b03161461413657565b63baeccefd60e01b5f5260045ffd5b61415e915060203d60201161218c5761217e8183611e83565b5f614125565b63b77e1e0f60e01b5f5260045ffd5b61418c915060603d606011613e5857613e408183611e83565b50505f6140d2565b1561419b57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b61420860ff5f5460081c16612aeb81614194565b600160c955565b604051638e8f294b60e01b81526001600160a01b03918216600482015291907f000000000000000000000000000000000000000000000000000000000000000016606083602481845afa928315611478575f93614356575b50670de0b6b3a764000083101561432557604051638e8f294b60e01b81526001600160a01b03929092166004830152606090829060249082905afa908115611478575f91614334575b50670de0b6b3a7640000811015614325576142e46131286142ef926142e96142e46142dc60fb54612f8c565b612710900490565b6125ea565b90612fb0565b80156143255761430161430692612f8c565b612fc3565b90670de0b6b3a7640000821061431857565b670de0b6b3a76400009150565b6302f22cad60e61b5f5260045ffd5b61434d915060603d606011613e5857613e408183611e83565b5090505f6142b0565b61437091935060603d606011613e5857613e408183611e83565b509050915f614267565b61439961312861438983613c1e565b60a0606082015191015190612fb0565b6040516307dc0d1d60e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561147857614427936020925f92614475575b50600201546001600160a01b03165b60405163fc57d4df60e01b81526001600160a01b03909116600482015293849190829081906024820190565b03916001600160a01b03165afa908115611478576108da925f92614450575b5061430190612f8c565b61430191925061446e9060203d602011611471576114628183611e83565b9190614446565b6143fb919250614493600291853d871161218c5761217e8183611e83565b9291506143ec565b60038101546001600160a01b03169081156104065760018101546144c7906001600160a01b03166106a2565b60048201549091906144e3906106a2906001600160a01b031681565b916001600160a01b038084169116146145255750604051633af9e66960e01b81526001600160a01b0390921660048301526020908290815f8160248101613065565b915060205f916145348461478d565b60046040518094819363bd6d894d60e01b83525af18015611478576108da92613128925f92614568575b5060050154612fb0565b60059192506145859060203d602011611471576114628183611e83565b919061455e565b6040516370a0823160e01b81526001600160a01b03838116600483015291909116929190602081602481875afa908115611478575f9161476e575b50801561476757604051636f307dc360e01b8152602081600481885afa908115611478575f91614748575b506040516370a0823160e01b81523060048201526001600160a01b0391909116949091602083602481895afa928315611478575f9361471e575b50604051631085e02960e11b81526001600160a01b03851660048201526024810191909152906020908290815f81604481015b03925af1908115611478575f916146ff575b5080613fd357506040516370a0823160e01b815230600482015290602082602481885afa8015611478576146ab925f91613961575061261b565b92836146b5575050565b6146c08433836158cc565b60405184815233926001600160a01b031691907f390fcb074435a3f8b188b03b4dddf11fee4fe8c9a018b9f4f9a8196117b5cf42908060208101613fce565b614718915060203d602011611471576114628183611e83565b5f614671565b60209193505f9261473e61465f92843d8611611471576114628183611e83565b949250925061462c565b614761915060203d60201161218c5761217e8183611e83565b5f6145f2565b505f925050565b614787915060203d602011611471576114628183611e83565b5f6145c7565b60048101546147a6906106a2906001600160a01b031681565b6003820180546040516370a0823160e01b81526001600160a01b039091166004820152909291602090829060249082905afa908115611478575f9161486a575b5060058201908154928184116147fe575b5050505050565b9181905590547f7fcf93aba163f50ea109c9f881a402a5e66da22692600b77c2b2b26d15258a4b9190614842906001600160a01b031694546001600160a01b031690565b6040805194855260208501929092526001600160a01b03908116941692a35f808080806147f7565b614883915060203d602011611471576114628183611e83565b5f6147e6565b8161489691949294615c52565b96939592959190911580614930575b614921578210918215614917575b5050614908578215159182908490826148fe575b50506148ef576127101490816148e7575b50156148e2575090565b905090565b90505f6148d8565b63f1fd3b7f60e01b5f5260045ffd5b109050835f6148c7565b630cd4e19160e21b5f5260045ffd5b1190505f806148b3565b63022e1ca760e11b5f5260045ffd5b508215156148a5565b60048101546001600160a01b0316600182015461495e906001600160a01b03166106a2565b6001600160a01b0390911603614a0c57604051629df3ab60e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611478575f916149ed575b5082151592836149ce575b5050506114a657565b6149e4929350906149de91615d8b565b91612fe1565b105f80806149c5565b614a06915060203d602011611471576114628183611e83565b5f6149ba565b5050565b60048101549091906001600160a01b03166001830154614a38906001600160a01b03166106a2565b6001600160a01b039091160361404d57604051629df3ab60e31b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215611478575f92614aea575b50818115159182614acf575b50506114a6578215159283614ab9575050506114a657565b6149e492935090614ac991615d8b565b9161449b565b614ad99250615d8b565b614ae283612fe1565b10815f614aa1565b614b0491925060203d602011611471576114628183611e83565b905f614a95565b604051636f307dc360e01b8152909794969195946001600160a01b03909316929190602081600481875afa908115611478575f91614ec8575b50604051636f307dc360e01b81526001600160a01b039586169691909516946020816004818a5afa908115611478575f91614ea9575b506001600160a01b031694808603614c57575050505050509060205f9260046040518095819363bd6d894d60e01b83525af1801561147857614bec614c0c917f67ee20c33a9e1ffbd750948dca58485a94b45a47a92bf0485fdb7932eb37215a945f91614c38575b5061430186612f8c565b945b614bfd60058201968754613191565b8655546001600160a01b031690565b93546040805194855260208501919091526001600160a01b039182169491909116929081908101612e54565b614c51915060203d602011611471576114628183611e83565b5f614be2565b6040516370a0823160e01b8152306004820152979997602081602481855afa958615611478578a915f97614e81575b50604051636f9d28b760e11b81526001600160a01b038d16600482015260248101929092526020908290815f81604481015b03925af1908115611478575f91614e62575b5080613fd357506040516370a0823160e01b815230600482015290602082602481845afa91821561147857614d11968893614d0b925f91613961575061261b565b90615e47565b6040516370a0823160e01b81526001600160a01b0387166004820152602081602481875afa9283156114785784915f94614e32575b5091614d5881602093614d8895615462565b6040516323323e0360e01b81526001600160a01b0389166004820152602481019190915291829081906044820190565b03815f875af1908115611478575f91614e13575b508061398057506040516370a0823160e01b81526001600160a01b038616600482015291602090839060249082905afa801561147857614de2925f91613961575061261b565b92831561395257614c0c7f67ee20c33a9e1ffbd750948dca58485a94b45a47a92bf0485fdb7932eb37215a92614bee565b614e2c915060203d602011611471576114628183611e83565b5f614d9c565b83614d8894929550602093614e56614d5893863d8811611471576114628183611e83565b96935093509350614d46565b614e7b915060203d602011611471576114628183611e83565b5f614cca565b602091975091614ea0614cb893833d8511611471576114628183611e83565b97915091614c86565b614ec2915060203d60201161218c5761217e8183611e83565b5f614b7a565b614ee1915060203d60201161218c5761217e8183611e83565b5f614b44565b6001600160a01b031690813b1561032a5760405163c204371f60e01b81526001600160a01b039091166004820152905f908290602490829084905af1801561147857614f305750565b5f611eb491611e83565b60038101546040516305eff7ef60e21b81526001600160a01b03918216600482018190529395949293929091602091839160249183915f91165af1908115611478575f9161503d575b50612f06576004820154614f9f906001600160a01b03166106a2565b6001600160a01b03808616959116850361502f5750906020614ff292614fc483612fe1565b6040516370a0823160e01b81526001600160a01b039092166004830152959093849190829081906024820190565b03915afa918215611478575f9261500b575b5060050155565b60059192506150289060203d602011611471576114628183611e83565b9190615004565b9091506108da92935061458c565b615056915060203d602011611471576114628183611e83565b5f614f83565b909194928094106148ef578415908180615118575b614921578261507f91615c52565b989394909294159081615100575b506149215782109182156150f6575b505061490857808411156150b65750505011614908575f90565b919350916150c39161261b565b8092106150e757612710146150d55790565b6142dc6108da916142e960fb54613181565b63f7faf59760e01b5f5260045ffd5b1190505f8061509c565b8015915061510f575b5f61508d565b50861515615109565b50841515615071565b98979694929590958315615368576040516370a0823160e01b81526001600160a01b038881166004830152848116999083168a14979195949392916020876024818e5afa968715611478575f97615347575b5088156152e1575050506001600160a01b038716929050823b1561032a5760405163636692fb60e11b81526001600160a01b039290921660048301526024820152905f908290604490829084905af18015611478576152cd575b505b6040516370a0823160e01b81526001600160a01b038516600482015290602082602481895afa9081156114785761520c925f92611447575061261b565b9082156152c5575060405163bd6d894d60e01b81526020816004815f895af1801561147857613128615249916005935f916152a6575b5084612fb0565b96019081548082115f146152955750505f90555b15615266575050565b602060049260405193848092636f307dc360e01b82525afa90811561147857611eb4925f92613b235750614ee7565b9061529f9161261b565b905561525d565b6152bf915060203d602011611471576114628183611e83565b5f615242565b600590615249565b806118465f6152db93611e83565b5f6151cd565b929391926001600160a01b038a1692833b1561032a5761531e89935f979388946040519a8b998a9889976363c5f7df60e11b89526004890161319e565b03925af1801561147857615333575b506151cf565b806118465f61534193611e83565b5f61532d565b61536191975060203d602011611471576114628183611e83565b955f615173565b505f985050505050505050565b6040516370a0823160e01b81526001600160a01b039182166004820152929160209184916024918391165afa918215611478575f926153f8575b50808211156153e9576153c86142dc916153d39361261b565b925b60fb5490612fb0565b106153da57565b63676f955d60e01b5f5260045ffd5b50506153d36142dc5f926153ca565b61541291925060203d602011611471576114628183611e83565b905f6153af565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152611eb49161545d608483611e83565b615fc8565b60405163095ea7b360e01b602082019081526001600160a01b038416602483015260448083019590955293815291926154cf906154a0606485611e83565b83516001600160a01b038416915f91829182855af1906154be615e09565b82615520575b508161551957501590565b6154d857505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f6044840152611eb49261545d906155138160648101610948565b82615fc8565b3b15919050565b80519192508115918215615538575b5050905f6154c4565b61554b9250602080918301019101612bbf565b5f8061552f565b6040519060a082018281106001600160401b03821117611e7e576040525f6080838281528260208201528260408201528260608201520152565b9061562f615598615552565b60018401549093906155b2906001600160a01b03166106a2565b60028201549091906155cc906001600160a01b03166106a2565b60048201546155e3906001600160a01b03166106a2565b60038301549092906001600160a01b031690602061560082612fe1565b6040516305eff7ef60e21b81526001600160a01b03948516600482015297909490931692879081906024820190565b03815f865af1958615611478575f96615870575b5061564d9061449b565b6040516307dc0d1d60e41b8152939092906020856004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa948515611478576156d2956020915f91615853575b5060405163fc57d4df60e01b81526001600160a01b03988916600482015297169695869081906024820190565b0381895afa92831561147857615716955f94615831575b5060405163fc57d4df60e01b81526001600160a01b03909116600482015294602090869081906024820190565b0381895afa948515611478575f95615809575b506080890194855260405163fc57d4df60e01b81526001600160a01b039091166004820152939492939260209084908180602481015b03915afa928315611478575f936157e8575b50606088019280845282159081156157de575b81156157d5575b506157c7576157c095613128956157ab6131286157b49561312895612fb0565b8a525190612fb0565b60208701525190612fb0565b6040830152565b62fc7cad60e51b5f5260045ffd5b9050155f61578b565b8651159150615784565b61580291935060203d602011611471576114628183611e83565b915f615771565b61575f94955090615828602092833d8511611471576114628183611e83565b95945090615729565b602091945061584c90823d8411611471576114628183611e83565b93906156e9565b61586a9150823d841161218c5761217e8183611e83565b5f6156a5565b61564d91965061588e9060203d602011611471576114628183611e83565b9590615643565b90808201809211612606575f198201918211612606576108da91612fc3565b908082106148e2575090565b908082116148e2575090565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152611eb49161545d606483611e83565b60ff8060fc5460a81c16911690811015611c75575f90815260fd60209081526040808320546001600160a01b031680845260fe9092529091205490919060ff1615615961576001600160a01b03821691611eb490614060565b63a253c44f60e01b5f5260045ffd5b6001600160a01b0390811691161461598457565b637dca69f560e11b5f5260045ffd5b60fc54919290916001600160a01b031680156109c357604051606084811b6bffffffffffffffffffffffff199081166020840190815287831b821660348501529185901b1660488301526159f892916159ef81605c8101610948565b519020906160b0565b906001600160a01b03821690813b1561032a5760405163c0c53b8b60e01b81526001600160a01b038581166004830152868116602483015282166044820152915f908390606490829084905af1908115611478577f97e62b3b4d3262870e06c3fa81144cddc49397df3f55f6e903bcc656eaaae02b92613fce92615b38575b50615b13816002615aa0826104888b6104888c60018060a01b03165f5260ff60205260405f2090565b6003810180546001600160a01b0319166001600160a01b038a1617905580546001600160a01b0319166001600160a01b038a161781556001810180546001600160a01b0319166001600160a01b038c161790550180546001600160a01b0319166001600160a01b03909216919091179055565b6040516001600160a01b03948516815290841695841694909316929081906020820190565b806118465f615b4693611e83565b5f615a77565b60405163929fe9a160e01b81526001600160a01b03828116600483015283811660248301527f000000000000000000000000000000000000000000000000000000000000000016929190602081604481875afa908115611478575f91615c33575b5015615bb857505050565b604051636ac2e1e360e11b81526001600160a01b0391821660048201529116602482015290602090829060449082905f905af1908115611478575f91615c14575b5080615c025750565b631957d10560e31b5f5260045260245ffd5b615c2d915060203d602011611471576114628183611e83565b5f615bf9565b615c4c915060203d602011612cd657612cc88183611e83565b5f615bad565b919091600183108015615d80575b615d71575f926020615cce615c7484612fe1565b93615ca26003615c936106a26106a2600286015460018060a01b031690565b9201546001600160a01b031690565b6040516305eff7ef60e21b81526001600160a01b03909116600482015296879283919082906024820190565b03925af1938415611478575f94615d48575b506142dc81615cf56142dc615cfb9486612fb0565b95612fb0565b9160fb54906108da6142dc615d42615d3c615d216142dc615d1b8861260b565b8b612fb0565b96615d376142dc615d3189613181565b8c612fb0565b6158c0565b94613181565b86612fb0565b615cfb919450615d696142dc9160203d602011611471576114628183611e83565b949150615ce0565b6340c6b88d60e01b5f5260045ffd5b506127108311615c60565b908115808015615df4575b615def57670de0b6b3a76400008302928304670de0b6b3a764000014171561260657670de0b6b3a764000003670de0b6b3a7640000811161260657808201809211612606575f198201918211612606576108da91612fc3565b505090565b508115615d96565b908092918237015f815290565b3d15615e42573d906001600160401b038211611e7e5760405191615e37601f8201601f191660200184611e83565b82523d5f602084013e565b606090565b6040516303f1a84760e21b815293969594939092916020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561147857615eb1925f91615fa9575b506001600160a01b03169384906158cc565b6040516370a0823160e01b81523060048201526001600160a01b0391909116939092602084602481885afa938415611478575f94615f7e575b50915f9291838093615f0160405180948193615dfc565b03925af1615f0d615e09565b9015615f6257506040516370a0823160e01b815230600482015291602090839060249082905afa801561147857615f4a925f91613961575061261b565b918210615f5357565b638199f5f360e01b5f5260045ffd5b80519081615f795763428c0cc760e01b5f5260045ffd5b602001fd5b5f8094929550615f9e81949260203d602011611471576114628183611e83565b959294505091615eea565b615fc2915060203d60201161218c5761217e8183611e83565b5f615e9f565b906160289160018060a01b03165f8060405193615fe6604086611e83565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1616022615e09565b91616149565b8051908115918215616096575b50501561603e57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6160a99250602080918301019101612bbf565b5f80616035565b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561610457565b60405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606490fd5b919290156161ab575081511561615d575090565b3b156161665790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156161be5750805190602001fd5b60405162461bcd60e51b815260206004820152908190612caa906024830190612bd456fe5c765816d4de5b4e42262520f0ad4bf3f86b1850224ac9c79da48eb4179508eaa264697066735822122040c78b39e3050c78972b1945c83623612b5ff363039bbb39b0a782398df2ac1a64736f6c634300081c0033",
2018
+ "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c8063066693f61461031457806306ef53031461030f5780630d3f2a961461030a5780630dfc5779146103055780630e32cb8614610300578063138b4880146102fb578063236b836e146102f6578063236f7e79146102f157806334c1557d146102ec578063363519a6146102e75780633642b189146102e25780633f078193146102dd578063427184ab146102d85780634d579a75146102d357806350bcad05146102ce5780635f29a43a146102c95780635f82c67e146102c4578063642adf1e146102bf57806367b8a4f4146102ba5780636d15b95c146102b5578063713390f5146102b0578063715018a6146102ab578063725d4111146102a657806373016aee146102a157806375e990d51461029c578063786f45391461029757806379ba5097146102925780637a950bb51461028d5780638a923d5a146102885780638da5cb5b146102835780639a707e451461027e578063a753996614610279578063ac3a3fa714610274578063ae697b971461026f578063b3aac90e1461026a578063b4a0bdf314610265578063bccf3a3e14610260578063c26f10e91461025b578063c4d66de814610256578063cc7a284a14610251578063d64184e51461024c578063e03e789014610247578063e281e50a14610242578063e30c39781461023d578063e5d5822f14610238578063eb086bcc14610233578063f02465b71461022e5763f2fde38b14610229575f80fd5b611dde565b611dc0565b611da3565b611cef565b611cc7565b611ca2565b611c84565b611b5c565b611b1e565b611a27565b6119e3565b61187a565b611852565b611726565b611685565b611602565b611586565b61156b565b611543565b6114b5565b611298565b611214565b6110e9565b61106f565b611053565b610fcb565b610f66565b610e2c565b610d9e565b610d4e565b610c9a565b610c56565b610c31565b610b6d565b610b03565b610a96565b610a12565b6109d2565b6108dd565b610886565b61084c565b61076d565b610748565b610634565b6105be565b610541565b610424565b61032e565b6001600160a01b0381160361032a57565b5f80fd5b3461032a57602036600319011261032a5760043561034b81610319565b61039d60405161035c606082611e83565b602981527f736574506f736974696f6e4163636f756e74496d706c656d656e746174696f6e60208201526828616464726573732960b81b6040820152612c43565b60ff60fc5460a01c16610415576001600160a01b0381169081156104065760fc80546001600160a81b0319166001600160a01b0390921691909117600160a01b1790557ffd9f24445cf7762ef197daa375827784851b5b5fe6ba590a41d008137e15e8775f80a2005b63d92e233d60e01b5f5260045ffd5b635b15774760e11b5f5260045ffd5b3461032a57606036600319011261032a5761049d60043561044481610319565b61048860243561045381610319565b6044359261046084610319565b60018060a01b03165f5260ff60205260405f209060018060a01b03165f5260205260405f2090565b9060018060a01b03165f5260205260405f2090565b8054600182015460028301546003840154600485015460058601546006870154600790970154604080516001600160a01b039889168152968816602088015294871694860194909452858316606086015260ff60a084811c82161515608088015260a89490941c16928501929092529390931660c083015260e08201929092526101008101929092526101208201528061014081015b0390f35b5f91031261032a57565b3461032a575f36600319011261032a57610585604051610562604082611e83565b6011815270636f6d706c657465556e7061757365282960781b6020820152612c43565b60ff60b81b1960fc541660fc557fb46447f3be1297dda31d1438c1eb286327541d8a8956a610d984c984adc9fc0360206040515f8152a1005b3461032a57604036600319011261032a576004356105db81610319565b6024356105e781610319565b6105ef612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175761061091612d33565b600160c955005b621438df60e31b5f5260045ffd5b630fd30b9560e11b5f5260045ffd5b3461032a57602036600319011261032a5760043561065181610319565b610659612f34565b6001600160a01b0381169081156106f5576097547f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa092906106d1906106ae906001600160a01b03165b6001600160a01b031690565b9160018060a01b03166bffffffffffffffffffffffff60a01b6097541617609755565b604080516001600160a01b039283168152929091166020830152819081015b0390a1005b60405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164604482015264647265737360d81b6064820152608490fd5b3461032a575f36600319011261032a57602060ff60fc5460b81c166040519015158152f35b3461032a57602036600319011261032a576004356107d0604051610792606082611e83565b602681527f73657450726f706f7274696f6e616c436c6f7365546f6c6572616e63652875696020820152656e743235362960d01b6040820152612c43565b600181108015610831575b6108225760fb54818114610813578160fb557fdb89089e85b9523c3fcf0af79584c259a787ddfed0755751dc1918203f2ffaaa5f80a3005b6309c1a22960e11b5f5260045ffd5b6330e6ddab60e21b5f5260045ffd5b5061271081116107db565b6004359060ff8216820361032a57565b3461032a57602036600319011261032a5760ff61086761083c565b165f5260fd602052602060018060a01b0360405f205416604051908152f35b3461032a575f36600319011261032a576020604051670de0b6b3a76400008152f35b606090600319011261032a576004356108c081610319565b906024356108cd81610319565b906044356108da81610319565b90565b3461032a576108eb366108a8565b60fc549092906001600160a01b031680156109c3576040516bffffffffffffffffffffffff19606093841b81166020830190815294841b811660348301529490921b90931660488201526105339260559260439261095681605c81015b03601f198101835282611e83565b519020604051913060388401526f5af43d82803e903d91602b57fd5bf3ff60248401526014830152733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c8201206078820152012060405191829182919091602081019260018060a01b03169052565b630b40031360e21b5f5260045ffd5b3461032a57602036600319011261032a576004356109ef81610319565b60018060a01b03165f5260fe602052602060ff60405f2054166040519015158152f35b3461032a575f36600319011261032a57610a54604051610a33604082611e83565b600f81526e636f6d706c6574655061757365282960881b6020820152612c43565b60fc805460ff60b81b1916600160b81b179055604051600181527fb46447f3be1297dda31d1438c1eb286327541d8a8956a610d984c984adc9fc0390602090a1005b3461032a576020610afb610af6610ada610aaf366108a8565b6001600160a01b039283165f90815260ff885260408082209390941681526020929092529190209091565b6001600160a01b039091165f9081526020919091526040902090565b612fe1565b604051908152f35b3461032a575f36600319011261032a5760fc546040516001600160a01b039091168152602090f35b60206040818301928281528451809452019201905f5b818110610b4e5750505090565b82516001600160a01b0316845260209384019390920191600101610b41565b3461032a575f36600319011261032a5760fc5460ff8160a81c16610b9081611eb6565b90610b9e6040519283611e83565b808252610bad601f1991611eb6565b013660208301375f91610bc79060a81c60ff165b60ff1690565b915b60ff811683811015610c235781610c1c600192610c0d610c06610bf960ff9760ff165f5260fd60205260405f2090565b546001600160a01b031690565b9187611ecd565b6001600160a01b039091169052565b0116610bc9565b604051806105338582610b2b565b3461032a575f36600319011261032a57602060ff60fc5460b01c166040519015158152f35b3461032a575f36600319011261032a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461032a57606036600319011261032a57600435610cb781610319565b602435610cc381610319565b604435916001600160401b03831161032a57826004019260c0600319823603011261032a57610cf0612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175761061093610d4991813590602481013592610d266044830182611ef5565b90610d3f60648501359360a46084870135960190611ef5565b9690958a8a6131f1565b612d33565b3461032a575f36600319011261032a57602060ff60fc5460a81c16604051908152f35b9181601f8401121561032a578235916001600160401b03831161032a576020838186019501011161032a57565b3461032a5761014036600319011261032a57600435610dbc81610319565b602435610dc881610319565b6044359160643560843560a43560c4356001600160401b03811161032a57610df4903690600401610d71565b9160e43593610104359561012435996001600160401b038b1161032a57610e22610e2a9b3690600401610d71565b9a9099611f27565b005b3461032a57610533610ec3610ebe610ada610e46366108a8565b92915f610120604051610e5881611e62565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152015260018060a01b03165f5260ff60205260405f209060018060a01b031660018060a01b03165f5260205260405f2090565b6122ac565b6040519182918281516001600160a01b03168152610140810192916101209081906020818101516001600160a01b0316908501526040818101516001600160a01b0316908501526060818101516001600160a01b03169085015260808181015115159085015260a08181015160ff169085015260c0818101516001600160a01b03169085015260e081015160e08501526101008101516101008501520151910152565b3461032a575f36600319011261032a57610f7e612f34565b606580546001600160a01b03199081169091556033805491821690555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461032a5761012036600319011261032a57600435610fe981610319565b602435610ff581610319565b6044359160643560843560a4356001600160401b03811161032a5761101e903690600401610d71565b9060c4359260e4359461010435986001600160401b038a1161032a5761104b610e2a9a3690600401610d71565b999098612360565b3461032a575f36600319011261032a5760206040516127108152f35b3461032a57606036600319011261032a5760043561108c81610319565b6024359061109982610319565b604435906110a5612cdd565b60ff60fc5460b81c166106175781156110da57610610926110c6913361375d565b60048101546001600160a01b0316906137af565b631f2a200560e01b5f5260045ffd5b3461032a5760c036600319011261032a5760043561110681610319565b6024359061111382610319565b60443590606435926084359160a4356001600160401b03811161032a5761113e903690600401610d71565b611149949194612cdd565b60fc5460ff8160b01c166106255760b81c60ff16610617577f6e8c6ac3dce2ed848b6c97a80991fe0aa6687959a3928c1cf365fd7439aac6c8946111909288888787613b8d565b335f81815260ff602090815260408083206001600160a01b0395861680855290835281842096861680855296835292819020600381015460078201546004909201548351928352938201949094529081019590955283166060850152608084019690965260a083019490945293909316928060c081015b0390a3610e2a600160c955565b3461032a575f36600319011261032a57606554336001600160a01b039091160361124157610e2a3361370a565b60405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608490fd5b3461032a57606036600319011261032a576004356112b581610319565b6024356112c181610319565b604435916112cd612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175782156110da57611302916001600160a01b0390811691163361375d565b60038101546001600160a01b031691608061131c83613c1e565b015181116114a657600482015461133b906001600160a01b03166106a2565b6040516370a0823160e01b81526001600160a01b038581166004830152821694909291602084602481895afa938415611478575f9461147d575b50828261138192613e8a565b6040516370a0823160e01b81526001600160a01b038216600482015292602084602481895afa908115611478576113e7611207926007927fa0bdfeb7a88aaee1f2447e214631d65b0e1a1e32209011efd498e5dc872d2a8d975f92611447575b5061261b565b600587018054909791818111156114375750505f87555b01549454604080519687526001600160a01b03978816602088015286019390935260608501929092529093169233929081906080820190565b6114409161261b565b87556113fe565b61146a91925060203d602011611471575b6114628183611e83565b8101906125bc565b905f6113e1565b503d611458565b6125cb565b6113819194508261149d859260203d602011611471576114628183611e83565b95925050611375565b634cfbed6160e01b5f5260045ffd5b3461032a5760c0611508611503610ada6114ce366108a8565b92916114d8612628565b506001600160a01b039081165f90815260ff6020908152604080832094909316825292909252902090565b613c1e565b60a0604051918051835260208101516020840152604081015160408401526060810151606084015260808101516080840152015160a0820152f35b3461032a575f36600319011261032a576033546040516001600160a01b039091168152602090f35b3461032a575f36600319011261032a57602060405160018152f35b3461032a575f36600319011261032a576115c96040516115a7604082611e83565b601081526f7061727469616c556e7061757365282960801b6020820152612c43565b60ff60b01b1960fc541660fc557f6266287f80efbe3783b53a0a39d18720663b60d45a7225db9e367a4bd73b56a660206040515f8152a1005b3461032a575f36600319011261032a57611643604051611623604082611e83565b600e81526d7061727469616c5061757365282960901b6020820152612c43565b60fc805460ff60b01b1916600160b01b179055604051600181527f6266287f80efbe3783b53a0a39d18720663b60d45a7225db9e367a4bd73b56a690602090a1005b3461032a5761010036600319011261032a576004356116a381610319565b6024356116af81610319565b6044359160ff8316830361032a5760643560843560a4359060c4359260e435966001600160401b03881161032a576116ee610e2a983690600401610d71565b979096612668565b9181601f8401121561032a578235916001600160401b03831161032a576020808501948460051b01011161032a57565b3461032a57606036600319011261032a5760043561174381610319565b6024356001600160401b03811161032a576117629036906004016116f6565b916044356001600160401b03811161032a576117829036906004016116f6565b93909161178d612cdd565b6117eb60405161179e606082611e83565b603581527f65786563757465506f736974696f6e4163636f756e7443616c6c28616464726560208201527473732c616464726573735b5d2c62797465735b5d2960581b6040820152612c43565b6001600160a01b031690813b1561032a575f809461181f6040519788968795869463d25ecbe960e01b865260048601612948565b03925af1801561147857611838575b610e2a600160c955565b806118465f61184c93611e83565b80610537565b5f61182e565b3461032a575f36600319011261032a576097546040516001600160a01b039091168152602090f35b3461032a57602036600319011261032a5760043561189781610319565b6118a76118a2612a26565b612c43565b6118b081614060565b60fc5460a81c60ff166001600160a01b0382169160ff82165f5b8160ff8216106119a357847f416cabccf63468e06e3ce52dfd5e578531f0149835bd27d3960580961d27be7461199e8661195f611952886119398161191a8660ff165f5260fd60205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b03165f90815260fe6020526040902090565b805460ff19166001179055565b61198a61196b82612a59565b60fc805460ff60a81b191660a89290921b60ff60a81b16919091179055565b60405160ff90911681529081906020820190565b0390a2005b8460018060a01b036119c3610bf98460ff165f5260fd60205260405f2090565b16146119d45760010160ff166118ca565b633c95fd2f60e11b5f5260045ffd5b3461032a575f36600319011261032a576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461032a57602036600319011261032a57600435611a4481610319565b611a925f5491611a78611a62611a5e8560ff9060081c1690565b1590565b80948195611b10575b8115611af0575b50612a6b565b82611a89600160ff195f5416175f55565b611ad957612ace565b611a9857005b611aa661ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081016106f0565b611aeb61010061ff00195f5416175f55565b612ace565b303b15915081611b02575b505f611a72565b60ff1660011490505f611afb565b600160ff8216109150611a6b565b3461032a57604036600319011261032a576020610afb600435611b4081610319565b60243590611b4d82610319565b61420f565b8015150361032a57565b3461032a57604036600319011261032a57611b7561083c565b602435611b8181611b52565b611b8c6118a2612b84565b60fc54611b9e9060a81c60ff16610bc1565b60ff83161015611c7557611bc0610bf98360ff165f5260fd60205260405f2090565b6001600160a01b038116929091908315611c75576001600160a01b0383165f90815260fe602052604090205460ff16151582151514611c6657611c4982611c387f54baf8bed0b4fa5c669b06bff2727baf8c2c9a746ad5f0ab2b71ffedb17bf59b9560018060a01b03165f5260fe60205260405f2090565b9060ff801983541691151516179055565b6040805160ff90921682529115156020820152908190810161199e565b630e1c538760e01b5f5260045ffd5b636481eacd60e01b5f5260045ffd5b3461032a576020610afb611c9d610ada610aaf366108a8565b61437a565b3461032a575f36600319011261032a57602060ff60fc5460a01c166040519015158152f35b3461032a575f36600319011261032a576065546040516001600160a01b039091168152602090f35b3461032a57606036600319011261032a57600435611d0c81610319565b602435611d1881610319565b604435916001600160401b03831161032a57826004019260e0600319823603011261032a57611d45612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175761182e93610d49918135906024810135926044820135611d806064840183611ef5565b91611d9960848601359460c460a4880135970190611ef5565b9790968b8b61340d565b3461032a575f36600319011261032a57602060fb54604051908152f35b3461032a576020610afb611dd9610ada610aaf366108a8565b61449b565b3461032a57602036600319011261032a57600435611dfb81610319565b611e03612f34565b606580546001600160a01b0319166001600160a01b039283169081179091556033549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b634e487b7160e01b5f52604160045260245ffd5b61014081019081106001600160401b03821117611e7e57604052565b611e4e565b90601f801991011681019081106001600160401b03821117611e7e57604052565b60405190611eb461014083611e83565b565b6001600160401b038111611e7e5760051b60200190565b8051821015611ee15760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b903590601e198136030182121561032a57018035906001600160401b03821161032a5760200191813603831361032a57565b9399929698919a9790949597611f3b612cdd565b60ff60fc5460b81c16610617576001600160a01b038681169490611f6390869088163361375d565b60038101546040516305eff7ef60e21b81526001600160a01b039091166004820181905299919591906020816024815f8c5af1908115611478575f9161228d575b501561227e5760049b8f8f84848f9283602095611fc68d8f97611fcc98614a10565b8d61505c565b986040519e8f8092636f307dc360e01b82525afa9c8d15611478575f9d612245575b508c9d60208c6120269b9c9d9e9f60405180809e81946370a0823160e01b835260048301919091602081019260018060a01b03169052565b03916001600160a01b03165afa998a15611478578e905f9b61221c575b509089939291612193575b50505060048601546120929561207f95949392918c908e90612078906001600160a01b03166106a2565b908a615121565b9361208a848c613191565b908a89615375565b604051636f307dc360e01b8152946020866004816001600160a01b0389165afa8015611478575f5160206161e35f395f51905f52996120e06120e69261213e995f91612164575b508a614ee7565b88614ee7565b5f946127108c14612148575b505090600761210392015498613191565b9460405195869560018060a01b0316993399879260a094919796959260c0850198855260208501526040840152606083015260808201520152565b0390a3600160c955565b82955060079161215c916121039594614f3a565b9491926120f2565b612186915060203d60201161218c575b61217e8183611e83565b8101906131dc565b5f6120d9565b503d612174565b919594939250906001600160a01b038d163b1561032a578f958e5f8f928f948f919083976121d8926040519d8e998a9889976363c5f7df60e11b89526004890161319e565b03926001600160a01b03165af18015611478576120929561207f958992612208575b81975082939495965061204e565b806118465f61221693611e83565b5f6121fa565b8a949392919b5061223b9060203d602011611471576114628183611e83565b9a90919293612043565b8b9c9d5060209b999a9b3d602011612277575b6122628183611e83565b810161226d916131dc565b9c9b9a9998611fee565b503d612258565b630b26f6ab60e01b5f5260045ffd5b6122a6915060203d602011611471576114628183611e83565b5f611fa4565b9060076122b7611ea4565b83546001600160a01b031681529260018101546001600160a01b0316602085015260028101546001600160a01b0316604085015260038101546001600160a01b038116606086015261232e906123249061231b60a082901c60ff1615156080890152565b60a81c60ff1690565b60ff1660a0860152565b60048101546001600160a01b031660c0850152600581015460e085015260068101546101008501520154610120830152565b92989395909499969199612372612cdd565b60ff60fc5460b81c1661061757899788958c9360018060a01b038716936123c36123bc8c60018060a01b038d16986123b58b6123af8c8c3361375d565b9e613191565b908d614889565b9c8a614939565b60038901546001600160a01b03169a8c612542575b50505060209291879160049c878c8a82612511575b50505050505050604051998a8092636f307dc360e01b82525afa9081156114785761242560209260049a5f916124f4575b5088614ee7565b604051636f307dc360e01b815298899182905afa9384156114785761246461213e955f5160206161e35f395f51905f52995f916124d5575b5087614ee7565b5f926127108b146124bd575b505060076124819293015497613191565b60405194859460018060a01b031698339886919260a093969594919660c084019784526020840152604083015260608201525f60808201520152565b61248193506007916124cf9186614f3a565b92612470565b6124ee915060203d60201161218c5761217e8183611e83565b5f61245d565b61250b9150843d861161218c5761217e8183611e83565b5f61241e565b60049690960154612536969061252f906001600160a01b03166106a2565b918d614b0b565b855f8080878c8a6123ed565b919493916001600160a01b038c16803b1561032a578f5f8f986125828f959183978f936040519d8e998a9889976363c5f7df60e11b89526004890161319e565b03925af19182156114785760049c6020958a946125a8575b509c829495508193506123d8565b806118465f6125b693611e83565b5f61259a565b9081602091031261032a575190565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b670de0b6b3a76400000390670de0b6b3a7640000821161260657565b6125d6565b6127100390612710821161260657565b9190820391821161260657565b6040519060c082018281106001600160401b03821117611e7e576040525f60a0838281528260208201528260408201528260608201528260808201520152565b979195969094939296612679612cdd565b60fc5460ff8160b01c166106255760b81c60ff166106175761269a89614060565b6126a386614060565b6126ac87615908565b6126b6878b615970565b8815612919576126c68a8261420f565b670de0b6b3a7640000861090811561290f575b5061290057335f90815260ff602052604090206126fb908890610488908d9082565b94600386019889546127118160ff9060a01c1690565b6128f15789612858987f1a0c0154a1812f03ca760c80647fcdccbb60d42a36bdc83fc64d4c86de73320e8f8f94957f117bd87b0a8f3c1756111674cdb346fa1bf0da5c0f5d1789cf822a7fad73433f9f61280a908f9a88610bf9916128509b61278660018060a01b039160018060a01b031690565b16156128e1575b6127c760078a019661279f8854614052565b8855855460ff60a81b60a89290921b9190911661ffff60a01b1990911617600160a01b178555565b6004890180546001600160a01b0319166001600160a01b03831690811790915598600681018e905584546128059083906001600160a01b0316615b4c565b6137af565b9054604080516001600160a01b039687168152928616602084015282015260608101959095526080850196909652918116941692849284923392909190819060a0820190565b0390a4613a3c565b6128d461287d83610488886104883360018060a01b03165f5260ff60205260405f2090565b60038101546007820154600490920154604080519384526001600160a01b03998a166020850152958916958301959095529387166060820152608081019290925260a08201949094529316923392819060c0820190565b0390a3611eb4600160c955565b6128ec8a8833615993565b61278d565b630dd1bc8b60e31b5f5260045ffd5b633fe89cb960e11b5f5260045ffd5b905085115f6126d9565b63d24a69a560e01b5f5260045ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b909391806040830160408452526060820194905f5b8181106129f8575050506020818503910152808352602083019060208160051b85010193835f91601e1982360301905b84841061299e575050505050505090565b90919293949596601f1982820301875287358381121561032a57840190602082359201916001600160401b03811161032a57803603831361032a576129e96020928392600195612928565b9901970195940192919061298d565b90919394956020806001928735612a0e81610319565b60a085901b859003168152019796950192910161295d565b60405190612a35604083611e83565b601582527461646444534156546f6b656e28616464726573732960581b6020830152565b60ff60019116019060ff821161260657565b15612a7257565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b612af060ff5f5460081c16612ae281614194565b612aeb81614194565b614194565b612af93361370a565b612b0960ff5f5460081c16614194565b6001600160a01b0381169081156106f5576097547f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09290612b56906106ae906001600160a01b03166106a2565b604080516001600160a01b03928316815292909116602083015290a1612b7a6141f4565b611eb4606460fb55565b60405190612b93604083611e83565b601e82527f73657444534156546f6b656e4163746976652875696e74382c626f6f6c2900006020830152565b9081602091031261032a57516108da81611b52565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b0390911681526040602082018190526108da92910190612bd4565b6001600160a01b039182168152911660208201526060604082018190526108da92910190612bd4565b6097546001600160a01b0316602060405180926318c5e8ab60e01b82528180612c70873360048401612bf8565b03915afa908115611478575f91612cae575b5015612c8b5750565b604051634a3fa29360e01b8152908190612caa90303360048501612c1a565b0390fd5b612cd0915060203d602011612cd6575b612cc88183611e83565b810190612bbf565b5f612c82565b503d612cbe565b600260c95414612cee57600260c955565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6001600160a01b03818116921690612d4c82843361375d565b6003810180546040516305eff7ef60e21b81526001600160a01b039091166004820181905291959194929392602090829060249082905f905af1908115611478575f91612f15575b50612f06576004830154612db0906001600160a01b03166106a2565b916001600160a01b03831691612dd6612dc886612fe1565b885460ff60a01b1916909855565b5f60058601558203612e6457505090612e10837f465d1edff781634deddd4d5b4bb03d9b6eea0821bce869aecc62ef750a269a5e9361458c565b9384811115612e5957506007612e28855b809661261b565b915b0154604080519182526020820195909552938401526001600160a01b039091169133919080606081015b0390a3565b612e28600791612e21565b612e739193929550849061458c565b936001600160a01b038416803b1561032a57604051630ede4edd60e41b81526001600160a01b039490941660048501525f908490602490829084905af19283156114785784600792612eec927f465d1edff781634deddd4d5b4bb03d9b6eea0821bce869aecc62ef750a269a5e96612ef2575b5061458c565b91612e2a565b806118465f612f0093611e83565b5f612ee6565b632a00599f60e01b5f5260045ffd5b612f2e915060203d602011611471576114628183611e83565b5f612d94565b6033546001600160a01b03163303612f4857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561260657565b8181029291811591840414171561260657565b8115612fcd570490565b634e487b7160e01b5f52601260045260245ffd5b60038101546001600160a01b0316801561040657600182015461300c906001600160a01b03166106a2565b6004830154909290613026906001600160a01b03166106a2565b6001600160a01b03938416931683146130935750604051633af9e66960e01b81526001600160a01b039091166004820152906020908290815f81602481015b03925af1908115611478575f9161307a575090565b6108da915060203d602011611471576114628183611e83565b60206130cb926130a28361478d565b6040516370a0823160e01b81526001600160a01b03909116600482015292839081906024820190565b0381865afa908115611478576130ed925f9261315d575b50600501549061261b565b9081156131575760205f9160046040518094819363bd6d894d60e01b83525af18015611478576108da92613128925f92613136575b50612fb0565b670de0b6b3a7640000900490565b61315091925060203d602011611471576114628183611e83565b905f613122565b50505f90565b600591925061317a9060203d602011611471576114628183611e83565b91906130e2565b6127100190816127101161260657565b9190820180921161260657565b926108da97959260c0959260018060a01b03168552602085015260018060a01b03166040840152606083015260808201528160a08201520191612928565b9081602091031261032a57516108da81610319565b9298919795969395909391906132146001600160a01b038087169086163361375d565b9661322c8b6132238b8d613191565b6127108b614889565b9a6132378b8a614939565b60038901546001600160a01b0316978c6133a1575b50505087613373575b5050604051636f307dc360e01b815290506020816004816001600160a01b0386165afa801561147857613290915f91613354575b5084614ee7565b604051636f307dc360e01b8152946020866004816001600160a01b0387165afa958615611478576132eb612e54946132f4946132e55f5160206161e35f395f51905f529a6007955f91613335575b5089614ee7565b88614f3a565b95015496613191565b60408051968752612710602088015286019690965260608501959095525f608085015260a08401919091526001600160a01b031692339290819060c0820190565b61334e915060203d60201161218c5761217e8183611e83565b5f6132de565b61336d915060203d60201161218c5761217e8183611e83565b5f613289565b600487015461339993908990613391906001600160a01b03166106a2565b86898b614b0b565b5f8080613255565b6001600160a01b0389163b1561032a57866133d88d928f955f958c9760405198899788976363c5f7df60e11b89526004890161319e565b0381836001600160a01b038c165af18015611478576133f9575b808061324c565b806118465f61340793611e83565b5f6133f2565b9495989196909793929960018060a01b038916926134348460018060a01b0389163361375d565b60038101546040516305eff7ef60e21b81526001600160a01b039091166004820181905299919791906020816024815f8b5af1908115611478575f916136eb575b501561227e578660208f8460049a8f92836127108f6134988e61349d9883614a10565b61505c565b97604051998a8092636f307dc360e01b82525afa978815611478575f986136ca575b506040516370a0823160e01b81526001600160a01b038c81166004830152909e9089168f6024815a93602094fa9e8f15611478575f9f6136a1575b50909d9e9d8792918d613617575b505050600488015461354a9561353795949392918e90613530906001600160a01b03166106a2565b8d8c615121565b99613542838b613191565b908488615375565b604051636f307dc360e01b8152916020836004816001600160a01b0389165afa928315611478575f5160206161e35f395f51905f5298612e54966135a96007946135a36135b8986135af965f916135f8575b508c614ee7565b8a614ee7565b86614f3a565b93015497613191565b6040805197885261271060208901528701526060860193909352608085019590955260a08401919091526001600160a01b031692339290819060c0820190565b613611915060203d60201161218c5761217e8183611e83565b5f61359c565b919594939250906001600160a01b038c163b1561032a578b8f968f928f9161365d8f91925f979388946040519d8e998a9889976363c5f7df60e11b89526004890161319e565b03926001600160a01b03165af180156114785761354a9561353795889261368d575b819750829394959650613508565b806118465f61369b93611e83565b5f61367f565b909f9e50879291906136c09060203d8111611471576114628183611e83565b9e9f9091926134fa565b6136e491985060203d60201161218c5761217e8183611e83565b965f6134bf565b613704915060203d602011611471576114628183611e83565b5f613475565b606580546001600160a01b0319908116909155603380549182166001600160a01b0393841690811790915591167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6001600160a01b039081165f90815260ff60209081526040808320939094168252919091522061378d9190610488565b9060ff600383015460a01c16156137a057565b63a8a168bf60e01b5f5260045ffd5b600181015490926001600160a01b039283169290911682146139ef575b60038301546040516370a0823160e01b81526001600160a01b03909116600482018190529290602081602481855afa908115611478575f916139d0575b50604051636f307dc360e01b8152602081600481865afa80156114785783859161384f935f916139b1575b506001600160a01b031661384a83303384615419565b615462565b6040516323323e0360e01b81526001600160a01b0385166004820152602481018490526020816044815f875af1908115611478575f91613992575b508061398057506040516370a0823160e01b81526001600160a01b038516600482015290602082602481865afa8015611478576138cd925f91613961575061261b565b92831561395257612e547f7fc8a73e75360994e7dae4aee9f34765e11ec58a5cddc99d287f103fcbe7fdfc9361390860058801968754613191565b865586546007906001600160a01b03169701549554604080519788526001600160a01b03958616602089015287019190915260608601529082169491909116929081906080820190565b631777bc0d60e01b5f5260045ffd5b61397a915060203d602011611471576114628183611e83565b5f6113e1565b631f32531d60e21b5f5260045260245ffd5b6139ab915060203d602011611471576114628183611e83565b5f61388a565b6139ca915060203d60201161218c5761217e8183611e83565b5f613834565b6139e9915060203d602011611471576114628183611e83565b5f613809565b6139f88361478d565b6137cc565b6001600160a01b0391821681525f6020820152911660408201526060810191909152608081019190915260c060a082018190526108da93910191612928565b9194939092948015613b7e576001600160a01b03848116949084169390613a6486863361375d565b613a6d8161437a565b8411613b6f57600301546001600160a01b0316968792833b1561032a57613aaf5f969287936040519c8d9889978896633a8f8c4360e01b8852600488016139fd565b03925af190811561147857600494602092613b5b575b50604051636f307dc360e01b815294859182905afa90811561147857613af76020926004955f91613b44575084614ee7565b604051636f307dc360e01b815293849182905afa90811561147857611eb4925f92613b23575b50614ee7565b613b3d91925060203d60201161218c5761217e8183611e83565b905f613b1d565b61336d9150843d861161218c5761217e8183611e83565b806118465f613b6993611e83565b5f613ac5565b6342a9987560e01b5f5260045ffd5b636784cb8760e01b5f5260045ffd5b95949193959290928115613b7e576001600160a01b03848116959082169490613bb787873361375d565b6004810154909190613bd1906001600160a01b03166106a2565b9080613be3575b5050613a6d8161437a565b613bed91836137af565b5f80613bd8565b9081606091031261032a578051613c0a81611b52565b91604060208301519201516108da81611b52565b90613c27612628565b60018301805491939091613c43906001600160a01b03166106a2565b90613c4d8161558c565b6004820154909190613c67906001600160a01b03166106a2565b604051638e8f294b60e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169590946060866024818a5afa958615611478575f96613e5f575b50604051638e8f294b60e01b81526001600160a01b039091166004820152949593949360609085908180602481015b03915afa93841561147857613dd196606095613dc895613dbe95613d9e958d955f94613e15575b5054613d7692613128929091600691613d39916001600160a01b03165b9061420f565b9101549080821015613e0d5750925b60a086019384526020613d6a818d0195613d628751612f8c565b905190615895565b96019586528a51612fb0565b90519080821115613e0457613d8a9161261b565b905b81613dd8575b505088519051906158b4565b6040880190808252613db5604087019182516158c0565b8092525161261b565b8083880152612f8c565b91015190612fc3565b6080830152565b80613dee57505060408601515b89525f80613d92565b613dfa613dff92612f8c565b615895565b613de5565b50505f90613d8c565b905092613d48565b613d7693919450613d3961312893613d33613e486006948f3d606011613e58575b613e408183611e83565b810190613bf4565b5090509794965050935050613d16565b503d613e36565b613cef95965090613e7e606092833d8511613e5857613e408183611e83565b50905096955090613cc0565b919091811561404d57604051636f307dc360e01b81526001600160a01b03919091169190602081600481865afa908115611478575f9161402e575b506040516370a0823160e01b81523060048201526001600160a01b0391909116929091602083602481875afa928315611478575f93614004575b50604051636f9d28b760e11b81526001600160a01b03861660048201526024810191909152906020908290815f81604481015b03925af1908115611478575f91613fe5575b5080613fd357506040516370a0823160e01b815230600482015290602082602481865afa801561147857613f7e925f91613961575061261b565b9081613f8957505050565b613f948233836158cc565b60405191825233926001600160a01b0316917f390fcb074435a3f8b188b03b4dddf11fee4fe8c9a018b9f4f9a8196117b5cf429080602081015b0390a4565b636083d26960e01b5f5260045260245ffd5b613ffe915060203d602011611471576114628183611e83565b5f613f44565b60209193505f92614024613f3292843d8611611471576114628183611e83565b9492509250613eff565b614047915060203d60201161218c5761217e8183611e83565b5f613ec5565b505050565b5f1981146126065760010190565b6001600160a01b03811690811561040657604051638e8f294b60e01b81526001600160a01b039091166004820152606081806024810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611478575f91614173575b5015614164576040516333e1567f60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611478575f91614145575b506001600160a01b03161461413657565b63baeccefd60e01b5f5260045ffd5b61415e915060203d60201161218c5761217e8183611e83565b5f614125565b63b77e1e0f60e01b5f5260045ffd5b61418c915060603d606011613e5857613e408183611e83565b50505f6140d2565b1561419b57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b61420860ff5f5460081c16612aeb81614194565b600160c955565b604051638e8f294b60e01b81526001600160a01b03918216600482015291907f000000000000000000000000000000000000000000000000000000000000000016606083602481845afa928315611478575f93614356575b50670de0b6b3a764000083101561432557604051638e8f294b60e01b81526001600160a01b03929092166004830152606090829060249082905afa908115611478575f91614334575b50670de0b6b3a7640000811015614325576142e46131286142ef926142e96142e46142dc60fb54612f8c565b612710900490565b6125ea565b90612fb0565b80156143255761430161430692612f8c565b612fc3565b90670de0b6b3a7640000821061431857565b670de0b6b3a76400009150565b6302f22cad60e61b5f5260045ffd5b61434d915060603d606011613e5857613e408183611e83565b5090505f6142b0565b61437091935060603d606011613e5857613e408183611e83565b509050915f614267565b61439961312861438983613c1e565b60a0606082015191015190612fb0565b6040516307dc0d1d60e41b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561147857614427936020925f92614475575b50600201546001600160a01b03165b60405163fc57d4df60e01b81526001600160a01b03909116600482015293849190829081906024820190565b03916001600160a01b03165afa908115611478576108da925f92614450575b5061430190612f8c565b61430191925061446e9060203d602011611471576114628183611e83565b9190614446565b6143fb919250614493600291853d871161218c5761217e8183611e83565b9291506143ec565b60038101546001600160a01b03169081156104065760018101546144c7906001600160a01b03166106a2565b60048201549091906144e3906106a2906001600160a01b031681565b916001600160a01b038084169116146145255750604051633af9e66960e01b81526001600160a01b0390921660048301526020908290815f8160248101613065565b915060205f916145348461478d565b60046040518094819363bd6d894d60e01b83525af18015611478576108da92613128925f92614568575b5060050154612fb0565b60059192506145859060203d602011611471576114628183611e83565b919061455e565b6040516370a0823160e01b81526001600160a01b03838116600483015291909116929190602081602481875afa908115611478575f9161476e575b50801561476757604051636f307dc360e01b8152602081600481885afa908115611478575f91614748575b506040516370a0823160e01b81523060048201526001600160a01b0391909116949091602083602481895afa928315611478575f9361471e575b50604051631085e02960e11b81526001600160a01b03851660048201526024810191909152906020908290815f81604481015b03925af1908115611478575f916146ff575b5080613fd357506040516370a0823160e01b815230600482015290602082602481885afa8015611478576146ab925f91613961575061261b565b92836146b5575050565b6146c08433836158cc565b60405184815233926001600160a01b031691907f390fcb074435a3f8b188b03b4dddf11fee4fe8c9a018b9f4f9a8196117b5cf42908060208101613fce565b614718915060203d602011611471576114628183611e83565b5f614671565b60209193505f9261473e61465f92843d8611611471576114628183611e83565b949250925061462c565b614761915060203d60201161218c5761217e8183611e83565b5f6145f2565b505f925050565b614787915060203d602011611471576114628183611e83565b5f6145c7565b60048101546147a6906106a2906001600160a01b031681565b6003820180546040516370a0823160e01b81526001600160a01b039091166004820152909291602090829060249082905afa908115611478575f9161486a575b5060058201908154928184116147fe575b5050505050565b9181905590547f7fcf93aba163f50ea109c9f881a402a5e66da22692600b77c2b2b26d15258a4b9190614842906001600160a01b031694546001600160a01b031690565b6040805194855260208501929092526001600160a01b03908116941692a35f808080806147f7565b614883915060203d602011611471576114628183611e83565b5f6147e6565b8161489691949294615c52565b96939592959190911580614930575b614921578210918215614917575b5050614908578215159182908490826148fe575b50506148ef576127101490816148e7575b50156148e2575090565b905090565b90505f6148d8565b63f1fd3b7f60e01b5f5260045ffd5b109050835f6148c7565b630cd4e19160e21b5f5260045ffd5b1190505f806148b3565b63022e1ca760e11b5f5260045ffd5b508215156148a5565b60048101546001600160a01b0316600182015461495e906001600160a01b03166106a2565b6001600160a01b0390911603614a0c57604051629df3ab60e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611478575f916149ed575b5082151592836149ce575b5050506114a657565b6149e4929350906149de91615d8b565b91612fe1565b105f80806149c5565b614a06915060203d602011611471576114628183611e83565b5f6149ba565b5050565b60048101549091906001600160a01b03166001830154614a38906001600160a01b03166106a2565b6001600160a01b039091160361404d57604051629df3ab60e31b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215611478575f92614aea575b50818115159182614acf575b50506114a6578215159283614ab9575050506114a657565b6149e492935090614ac991615d8b565b9161449b565b614ad99250615d8b565b614ae283612fe1565b10815f614aa1565b614b0491925060203d602011611471576114628183611e83565b905f614a95565b604051636f307dc360e01b8152909794969195946001600160a01b03909316929190602081600481875afa908115611478575f91614ec8575b50604051636f307dc360e01b81526001600160a01b039586169691909516946020816004818a5afa908115611478575f91614ea9575b506001600160a01b031694808603614c57575050505050509060205f9260046040518095819363bd6d894d60e01b83525af1801561147857614bec614c0c917f67ee20c33a9e1ffbd750948dca58485a94b45a47a92bf0485fdb7932eb37215a945f91614c38575b5061430186612f8c565b945b614bfd60058201968754613191565b8655546001600160a01b031690565b93546040805194855260208501919091526001600160a01b039182169491909116929081908101612e54565b614c51915060203d602011611471576114628183611e83565b5f614be2565b6040516370a0823160e01b8152306004820152979997602081602481855afa958615611478578a915f97614e81575b50604051636f9d28b760e11b81526001600160a01b038d16600482015260248101929092526020908290815f81604481015b03925af1908115611478575f91614e62575b5080613fd357506040516370a0823160e01b815230600482015290602082602481845afa91821561147857614d11968893614d0b925f91613961575061261b565b90615e47565b6040516370a0823160e01b81526001600160a01b0387166004820152602081602481875afa9283156114785784915f94614e32575b5091614d5881602093614d8895615462565b6040516323323e0360e01b81526001600160a01b0389166004820152602481019190915291829081906044820190565b03815f875af1908115611478575f91614e13575b508061398057506040516370a0823160e01b81526001600160a01b038616600482015291602090839060249082905afa801561147857614de2925f91613961575061261b565b92831561395257614c0c7f67ee20c33a9e1ffbd750948dca58485a94b45a47a92bf0485fdb7932eb37215a92614bee565b614e2c915060203d602011611471576114628183611e83565b5f614d9c565b83614d8894929550602093614e56614d5893863d8811611471576114628183611e83565b96935093509350614d46565b614e7b915060203d602011611471576114628183611e83565b5f614cca565b602091975091614ea0614cb893833d8511611471576114628183611e83565b97915091614c86565b614ec2915060203d60201161218c5761217e8183611e83565b5f614b7a565b614ee1915060203d60201161218c5761217e8183611e83565b5f614b44565b6001600160a01b031690813b1561032a5760405163c204371f60e01b81526001600160a01b039091166004820152905f908290602490829084905af1801561147857614f305750565b5f611eb491611e83565b60038101546040516305eff7ef60e21b81526001600160a01b03918216600482018190529395949293929091602091839160249183915f91165af1908115611478575f9161503d575b50612f06576004820154614f9f906001600160a01b03166106a2565b6001600160a01b03808616959116850361502f5750906020614ff292614fc483612fe1565b6040516370a0823160e01b81526001600160a01b039092166004830152959093849190829081906024820190565b03915afa918215611478575f9261500b575b5060050155565b60059192506150289060203d602011611471576114628183611e83565b9190615004565b9091506108da92935061458c565b615056915060203d602011611471576114628183611e83565b5f614f83565b909194928094106148ef578415908180615118575b614921578261507f91615c52565b989394909294159081615100575b506149215782109182156150f6575b505061490857808411156150b65750505011614908575f90565b919350916150c39161261b565b8092106150e757612710146150d55790565b6142dc6108da916142e960fb54613181565b63f7faf59760e01b5f5260045ffd5b1190505f8061509c565b8015915061510f575b5f61508d565b50861515615109565b50841515615071565b98979694929590958315615368576040516370a0823160e01b81526001600160a01b038881166004830152848116999083168a14979195949392916020876024818e5afa968715611478575f97615347575b5088156152e1575050506001600160a01b038716929050823b1561032a5760405163636692fb60e11b81526001600160a01b039290921660048301526024820152905f908290604490829084905af18015611478576152cd575b505b6040516370a0823160e01b81526001600160a01b038516600482015290602082602481895afa9081156114785761520c925f92611447575061261b565b9082156152c5575060405163bd6d894d60e01b81526020816004815f895af1801561147857613128615249916005935f916152a6575b5084612fb0565b96019081548082115f146152955750505f90555b15615266575050565b602060049260405193848092636f307dc360e01b82525afa90811561147857611eb4925f92613b235750614ee7565b9061529f9161261b565b905561525d565b6152bf915060203d602011611471576114628183611e83565b5f615242565b600590615249565b806118465f6152db93611e83565b5f6151cd565b929391926001600160a01b038a1692833b1561032a5761531e89935f979388946040519a8b998a9889976363c5f7df60e11b89526004890161319e565b03925af1801561147857615333575b506151cf565b806118465f61534193611e83565b5f61532d565b61536191975060203d602011611471576114628183611e83565b955f615173565b505f985050505050505050565b6040516370a0823160e01b81526001600160a01b039182166004820152929160209184916024918391165afa918215611478575f926153f8575b50808211156153e9576153c86142dc916153d39361261b565b925b60fb5490612fb0565b106153da57565b63676f955d60e01b5f5260045ffd5b50506153d36142dc5f926153ca565b61541291925060203d602011611471576114628183611e83565b905f6153af565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152611eb49161545d608483611e83565b615fc8565b60405163095ea7b360e01b602082019081526001600160a01b038416602483015260448083019590955293815291926154cf906154a0606485611e83565b83516001600160a01b038416915f91829182855af1906154be615e09565b82615520575b508161551957501590565b6154d857505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f6044840152611eb49261545d906155138160648101610948565b82615fc8565b3b15919050565b80519192508115918215615538575b5050905f6154c4565b61554b9250602080918301019101612bbf565b5f8061552f565b6040519060a082018281106001600160401b03821117611e7e576040525f6080838281528260208201528260408201528260608201520152565b9061562f615598615552565b60018401549093906155b2906001600160a01b03166106a2565b60028201549091906155cc906001600160a01b03166106a2565b60048201546155e3906001600160a01b03166106a2565b60038301549092906001600160a01b031690602061560082612fe1565b6040516305eff7ef60e21b81526001600160a01b03948516600482015297909490931692879081906024820190565b03815f865af1958615611478575f96615870575b5061564d9061449b565b6040516307dc0d1d60e41b8152939092906020856004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa948515611478576156d2956020915f91615853575b5060405163fc57d4df60e01b81526001600160a01b03988916600482015297169695869081906024820190565b0381895afa92831561147857615716955f94615831575b5060405163fc57d4df60e01b81526001600160a01b03909116600482015294602090869081906024820190565b0381895afa948515611478575f95615809575b506080890194855260405163fc57d4df60e01b81526001600160a01b039091166004820152939492939260209084908180602481015b03915afa928315611478575f936157e8575b50606088019280845282159081156157de575b81156157d5575b506157c7576157c095613128956157ab6131286157b49561312895612fb0565b8a525190612fb0565b60208701525190612fb0565b6040830152565b62fc7cad60e51b5f5260045ffd5b9050155f61578b565b8651159150615784565b61580291935060203d602011611471576114628183611e83565b915f615771565b61575f94955090615828602092833d8511611471576114628183611e83565b95945090615729565b602091945061584c90823d8411611471576114628183611e83565b93906156e9565b61586a9150823d841161218c5761217e8183611e83565b5f6156a5565b61564d91965061588e9060203d602011611471576114628183611e83565b9590615643565b90808201809211612606575f198201918211612606576108da91612fc3565b908082106148e2575090565b908082116148e2575090565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152611eb49161545d606483611e83565b60ff8060fc5460a81c16911690811015611c75575f90815260fd60209081526040808320546001600160a01b031680845260fe9092529091205490919060ff1615615961576001600160a01b03821691611eb490614060565b63a253c44f60e01b5f5260045ffd5b6001600160a01b0390811691161461598457565b637dca69f560e11b5f5260045ffd5b60fc54919290916001600160a01b031680156109c357604051606084811b6bffffffffffffffffffffffff199081166020840190815287831b821660348501529185901b1660488301526159f892916159ef81605c8101610948565b519020906160b0565b906001600160a01b03821690813b1561032a5760405163c0c53b8b60e01b81526001600160a01b038581166004830152868116602483015282166044820152915f908390606490829084905af1908115611478577f97e62b3b4d3262870e06c3fa81144cddc49397df3f55f6e903bcc656eaaae02b92613fce92615b38575b50615b13816002615aa0826104888b6104888c60018060a01b03165f5260ff60205260405f2090565b6003810180546001600160a01b0319166001600160a01b038a1617905580546001600160a01b0319166001600160a01b038a161781556001810180546001600160a01b0319166001600160a01b038c161790550180546001600160a01b0319166001600160a01b03909216919091179055565b6040516001600160a01b03948516815290841695841694909316929081906020820190565b806118465f615b4693611e83565b5f615a77565b60405163929fe9a160e01b81526001600160a01b03828116600483015283811660248301527f000000000000000000000000000000000000000000000000000000000000000016929190602081604481875afa908115611478575f91615c33575b5015615bb857505050565b604051636ac2e1e360e11b81526001600160a01b0391821660048201529116602482015290602090829060449082905f905af1908115611478575f91615c14575b5080615c025750565b631957d10560e31b5f5260045260245ffd5b615c2d915060203d602011611471576114628183611e83565b5f615bf9565b615c4c915060203d602011612cd657612cc88183611e83565b5f615bad565b919091600183108015615d80575b615d71575f926020615cce615c7484612fe1565b93615ca26003615c936106a26106a2600286015460018060a01b031690565b9201546001600160a01b031690565b6040516305eff7ef60e21b81526001600160a01b03909116600482015296879283919082906024820190565b03925af1938415611478575f94615d48575b506142dc81615cf56142dc615cfb9486612fb0565b95612fb0565b9160fb54906108da6142dc615d42615d3c615d216142dc615d1b8861260b565b8b612fb0565b96615d376142dc615d3189613181565b8c612fb0565b6158c0565b94613181565b86612fb0565b615cfb919450615d696142dc9160203d602011611471576114628183611e83565b949150615ce0565b6340c6b88d60e01b5f5260045ffd5b506127108311615c60565b908115808015615df4575b615def57670de0b6b3a76400008302928304670de0b6b3a764000014171561260657670de0b6b3a764000003670de0b6b3a7640000811161260657808201809211612606575f198201918211612606576108da91612fc3565b505090565b508115615d96565b908092918237015f815290565b3d15615e42573d906001600160401b038211611e7e5760405191615e37601f8201601f191660200184611e83565b82523d5f602084013e565b606090565b6040516303f1a84760e21b815293969594939092916020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561147857615eb1925f91615fa9575b506001600160a01b03169384906158cc565b6040516370a0823160e01b81523060048201526001600160a01b0391909116939092602084602481885afa938415611478575f94615f7e575b50915f9291838093615f0160405180948193615dfc565b03925af1615f0d615e09565b9015615f6257506040516370a0823160e01b815230600482015291602090839060249082905afa801561147857615f4a925f91613961575061261b565b918210615f5357565b638199f5f360e01b5f5260045ffd5b80519081615f795763428c0cc760e01b5f5260045ffd5b602001fd5b5f8094929550615f9e81949260203d602011611471576114628183611e83565b959294505091615eea565b615fc2915060203d60201161218c5761217e8183611e83565b5f615e9f565b906160289160018060a01b03165f8060405193615fe6604086611e83565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1616022615e09565b91616149565b8051908115918215616096575b50501561603e57565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b6160a99250602080918301019101612bbf565b5f80616035565b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561610457565b60405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606490fd5b919290156161ab575081511561615d575090565b3b156161665790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156161be5750805190602001fd5b60405162461bcd60e51b815260206004820152908190612caa906024830190612bd456fe5c765816d4de5b4e42262520f0ad4bf3f86b1850224ac9c79da48eb4179508eaa264697066735822122040c78b39e3050c78972b1945c83623612b5ff363039bbb39b0a782398df2ac1a64736f6c634300081c0033",
2019
+ "linkReferences": {},
2020
+ "deployedLinkReferences": {}
2021
+ }