@ensuro/core 1.2.5 → 2.0.0-beta1

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 (92) hide show
  1. package/README.md +44 -17
  2. package/build/contracts/EToken.sol/EToken.json +141 -177
  3. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +112 -315
  4. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +34 -2
  5. package/build/contracts/Policy.sol/Policy.json +2 -2
  6. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +16 -3
  7. package/build/contracts/PolicyPool.sol/PolicyPool.json +105 -351
  8. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +32 -0
  9. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +77 -72
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +761 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +23 -191
  12. package/build/contracts/RiskModule.sol/RiskModule.json +94 -302
  13. package/build/contracts/TimeScaled.sol/TimeScaled.json +24 -0
  14. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +142 -325
  15. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +15 -2
  16. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +64 -0
  17. package/build/{interfaces/IExchange.sol/IExchange.json → contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json} +83 -79
  18. package/build/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +32 -97
  19. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  20. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  21. package/build/{interfaces → contracts/interfaces}/IPolicyNFT.sol/IPolicyNFT.json +1 -1
  22. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +121 -108
  23. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol/IPolicyPoolConfig.json +20 -36
  25. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +302 -0
  26. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  27. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  28. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  29. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +370 -0
  30. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +202 -0
  31. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  32. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +603 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  34. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  35. package/build/contracts/mocks/TestCurrencyUUPS.sol/TestCurrencyUUPS.json +353 -0
  36. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  37. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +16 -3
  38. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +16 -3
  39. package/contracts/EToken.sol +188 -273
  40. package/contracts/FlightDelayRiskModule.sol +30 -21
  41. package/contracts/LPManualWhitelist.sol +3 -3
  42. package/contracts/Policy.sol +48 -44
  43. package/contracts/PolicyNFT.sol +2 -2
  44. package/contracts/PolicyPool.sol +114 -467
  45. package/contracts/PolicyPoolComponent.sol +14 -3
  46. package/contracts/PolicyPoolConfig.sol +30 -73
  47. package/contracts/PremiumsAccount.sol +274 -0
  48. package/contracts/Reserve.sol +34 -0
  49. package/contracts/RiskModule.sol +216 -164
  50. package/contracts/TimeScaled.sol +134 -0
  51. package/contracts/TrustfulRiskModule.sol +23 -21
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/interfaces/IEToken.sol +172 -0
  55. package/{interfaces → contracts/interfaces}/ILPWhitelist.sol +0 -0
  56. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  57. package/{interfaces → contracts/interfaces}/IPolicyNFT.sol +0 -0
  58. package/contracts/interfaces/IPolicyPool.sol +138 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +0 -0
  60. package/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol +31 -20
  61. package/contracts/interfaces/IPremiumsAccount.sol +71 -0
  62. package/contracts/interfaces/IRiskModule.sol +60 -0
  63. package/contracts/mocks/ForwardProxy.sol +66 -0
  64. package/contracts/mocks/IMintableERC20.sol +13 -0
  65. package/contracts/mocks/LinkTokenMock.sol +30 -0
  66. package/contracts/mocks/PolicyHolderMock.sol +68 -0
  67. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  68. package/contracts/mocks/PolicyPoolMock.sol +122 -0
  69. package/contracts/mocks/TestCurrency.sol +35 -0
  70. package/contracts/mocks/TestNFT.sol +23 -0
  71. package/contracts/upgraded/PolicyNFTv1.sol +1 -1
  72. package/js/test-utils.js +278 -0
  73. package/package.json +2 -2
  74. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -723
  75. package/build/contracts/DataTypes.sol/DataTypes.json +0 -10
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -546
  77. package/build/contracts/extras/IPriceRiskModule.sol/IPriceRiskModule.json +0 -253
  78. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1036
  79. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  80. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  81. package/contracts/AaveAssetManager.sol +0 -298
  82. package/contracts/BaseAssetManager.sol +0 -301
  83. package/contracts/DataTypes.sol +0 -287
  84. package/contracts/Exchange.sol +0 -173
  85. package/contracts/extras/IPriceRiskModule.sol +0 -41
  86. package/contracts/extras/PriceRiskModule.sol +0 -243
  87. package/interfaces/IAssetManager.sol +0 -23
  88. package/interfaces/IEToken.sol +0 -48
  89. package/interfaces/IExchange.sol +0 -59
  90. package/interfaces/IInsolvencyHook.sol +0 -27
  91. package/interfaces/IPolicyPool.sol +0 -44
  92. package/interfaces/IRiskModule.sol +0 -29
@@ -67,7 +67,7 @@
67
67
  },
68
68
  {
69
69
  "indexed": false,
70
- "internalType": "enum DataTypes.ETokenStatus",
70
+ "internalType": "enum PolicyPool.ETokenStatus",
71
71
  "name": "newStatus",
72
72
  "type": "uint8"
73
73
  }
@@ -75,6 +75,19 @@
75
75
  "name": "ETokenStatusChanged",
76
76
  "type": "event"
77
77
  },
78
+ {
79
+ "anonymous": false,
80
+ "inputs": [
81
+ {
82
+ "indexed": false,
83
+ "internalType": "uint8",
84
+ "name": "version",
85
+ "type": "uint8"
86
+ }
87
+ ],
88
+ "name": "Initialized",
89
+ "type": "event"
90
+ },
78
91
  {
79
92
  "anonymous": false,
80
93
  "inputs": [
@@ -103,7 +116,12 @@
103
116
  },
104
117
  {
105
118
  "internalType": "uint256",
106
- "name": "scr",
119
+ "name": "jrScr",
120
+ "type": "uint256"
121
+ },
122
+ {
123
+ "internalType": "uint256",
124
+ "name": "srScr",
107
125
  "type": "uint256"
108
126
  },
109
127
  {
@@ -118,17 +136,22 @@
118
136
  },
119
137
  {
120
138
  "internalType": "uint256",
121
- "name": "premiumForEnsuro",
139
+ "name": "ensuroCommission",
140
+ "type": "uint256"
141
+ },
142
+ {
143
+ "internalType": "uint256",
144
+ "name": "partnerCommission",
122
145
  "type": "uint256"
123
146
  },
124
147
  {
125
148
  "internalType": "uint256",
126
- "name": "premiumForRm",
149
+ "name": "jrCoc",
127
150
  "type": "uint256"
128
151
  },
129
152
  {
130
153
  "internalType": "uint256",
131
- "name": "premiumForLps",
154
+ "name": "srCoc",
132
155
  "type": "uint256"
133
156
  },
134
157
  {
@@ -183,9 +206,15 @@
183
206
  "internalType": "uint256",
184
207
  "name": "policyId",
185
208
  "type": "uint256"
209
+ },
210
+ {
211
+ "indexed": false,
212
+ "internalType": "uint256",
213
+ "name": "payout",
214
+ "type": "uint256"
186
215
  }
187
216
  ],
188
- "name": "PolicyRebalanced",
217
+ "name": "PolicyResolved",
189
218
  "type": "event"
190
219
  },
191
220
  {
@@ -193,24 +222,18 @@
193
222
  "inputs": [
194
223
  {
195
224
  "indexed": true,
196
- "internalType": "contract IRiskModule",
197
- "name": "riskModule",
225
+ "internalType": "contract IPremiumsAccount",
226
+ "name": "premiumsAccount",
198
227
  "type": "address"
199
228
  },
200
- {
201
- "indexed": true,
202
- "internalType": "uint256",
203
- "name": "policyId",
204
- "type": "uint256"
205
- },
206
229
  {
207
230
  "indexed": false,
208
- "internalType": "uint256",
209
- "name": "payout",
210
- "type": "uint256"
231
+ "internalType": "enum PolicyPool.ETokenStatus",
232
+ "name": "newStatus",
233
+ "type": "uint8"
211
234
  }
212
235
  ],
213
- "name": "PolicyResolved",
236
+ "name": "PremiumsAccountStatusChanged",
214
237
  "type": "event"
215
238
  },
216
239
  {
@@ -239,25 +262,6 @@
239
262
  "name": "Upgraded",
240
263
  "type": "event"
241
264
  },
242
- {
243
- "anonymous": false,
244
- "inputs": [
245
- {
246
- "indexed": false,
247
- "internalType": "bool",
248
- "name": "moneyIn",
249
- "type": "bool"
250
- },
251
- {
252
- "indexed": false,
253
- "internalType": "uint256",
254
- "name": "value",
255
- "type": "uint256"
256
- }
257
- ],
258
- "name": "WonPremiumsInOut",
259
- "type": "event"
260
- },
261
265
  {
262
266
  "inputs": [],
263
267
  "name": "GUARDIAN_ROLE",
@@ -310,58 +314,6 @@
310
314
  "stateMutability": "view",
311
315
  "type": "function"
312
316
  },
313
- {
314
- "inputs": [],
315
- "name": "MAX_ETOKENS",
316
- "outputs": [
317
- {
318
- "internalType": "uint256",
319
- "name": "",
320
- "type": "uint256"
321
- }
322
- ],
323
- "stateMutability": "view",
324
- "type": "function"
325
- },
326
- {
327
- "inputs": [],
328
- "name": "NEGLIGIBLE_AMOUNT",
329
- "outputs": [
330
- {
331
- "internalType": "uint256",
332
- "name": "",
333
- "type": "uint256"
334
- }
335
- ],
336
- "stateMutability": "view",
337
- "type": "function"
338
- },
339
- {
340
- "inputs": [],
341
- "name": "WITHDRAW_WON_PREMIUMS_ROLE",
342
- "outputs": [
343
- {
344
- "internalType": "bytes32",
345
- "name": "",
346
- "type": "bytes32"
347
- }
348
- ],
349
- "stateMutability": "view",
350
- "type": "function"
351
- },
352
- {
353
- "inputs": [],
354
- "name": "activePurePremiums",
355
- "outputs": [
356
- {
357
- "internalType": "uint256",
358
- "name": "",
359
- "type": "uint256"
360
- }
361
- ],
362
- "stateMutability": "view",
363
- "type": "function"
364
- },
365
317
  {
366
318
  "inputs": [
367
319
  {
@@ -378,34 +330,16 @@
378
330
  {
379
331
  "inputs": [
380
332
  {
381
- "internalType": "uint256",
382
- "name": "amount",
383
- "type": "uint256"
384
- },
385
- {
386
- "internalType": "bool",
387
- "name": "positive",
388
- "type": "bool"
333
+ "internalType": "contract IPremiumsAccount",
334
+ "name": "pa",
335
+ "type": "address"
389
336
  }
390
337
  ],
391
- "name": "assetEarnings",
338
+ "name": "addPremiumsAccount",
392
339
  "outputs": [],
393
340
  "stateMutability": "nonpayable",
394
341
  "type": "function"
395
342
  },
396
- {
397
- "inputs": [],
398
- "name": "borrowedActivePP",
399
- "outputs": [
400
- {
401
- "internalType": "uint256",
402
- "name": "",
403
- "type": "uint256"
404
- }
405
- ],
406
- "stateMutability": "view",
407
- "type": "function"
408
- },
409
343
  {
410
344
  "inputs": [
411
345
  {
@@ -414,7 +348,7 @@
414
348
  "type": "address"
415
349
  },
416
350
  {
417
- "internalType": "enum DataTypes.ETokenStatus",
351
+ "internalType": "enum PolicyPool.ETokenStatus",
418
352
  "name": "newStatus",
419
353
  "type": "uint8"
420
354
  }
@@ -489,7 +423,12 @@
489
423
  },
490
424
  {
491
425
  "internalType": "uint256",
492
- "name": "scr",
426
+ "name": "jrScr",
427
+ "type": "uint256"
428
+ },
429
+ {
430
+ "internalType": "uint256",
431
+ "name": "srScr",
493
432
  "type": "uint256"
494
433
  },
495
434
  {
@@ -504,17 +443,22 @@
504
443
  },
505
444
  {
506
445
  "internalType": "uint256",
507
- "name": "premiumForEnsuro",
446
+ "name": "ensuroCommission",
508
447
  "type": "uint256"
509
448
  },
510
449
  {
511
450
  "internalType": "uint256",
512
- "name": "premiumForRm",
451
+ "name": "partnerCommission",
513
452
  "type": "uint256"
514
453
  },
515
454
  {
516
455
  "internalType": "uint256",
517
- "name": "premiumForLps",
456
+ "name": "jrCoc",
457
+ "type": "uint256"
458
+ },
459
+ {
460
+ "internalType": "uint256",
461
+ "name": "srCoc",
518
462
  "type": "uint256"
519
463
  },
520
464
  {
@@ -543,38 +487,6 @@
543
487
  "stateMutability": "nonpayable",
544
488
  "type": "function"
545
489
  },
546
- {
547
- "inputs": [
548
- {
549
- "internalType": "uint256",
550
- "name": "index",
551
- "type": "uint256"
552
- }
553
- ],
554
- "name": "getETokenAt",
555
- "outputs": [
556
- {
557
- "internalType": "contract IEToken",
558
- "name": "",
559
- "type": "address"
560
- }
561
- ],
562
- "stateMutability": "view",
563
- "type": "function"
564
- },
565
- {
566
- "inputs": [],
567
- "name": "getETokenCount",
568
- "outputs": [
569
- {
570
- "internalType": "uint256",
571
- "name": "",
572
- "type": "uint256"
573
- }
574
- ],
575
- "stateMutability": "view",
576
- "type": "function"
577
- },
578
490
  {
579
491
  "inputs": [
580
492
  {
@@ -586,7 +498,7 @@
586
498
  "name": "getETokenStatus",
587
499
  "outputs": [
588
500
  {
589
- "internalType": "enum DataTypes.ETokenStatus",
501
+ "internalType": "enum PolicyPool.ETokenStatus",
590
502
  "name": "",
591
503
  "type": "uint8"
592
504
  }
@@ -594,91 +506,6 @@
594
506
  "stateMutability": "view",
595
507
  "type": "function"
596
508
  },
597
- {
598
- "inputs": [],
599
- "name": "getInvestable",
600
- "outputs": [
601
- {
602
- "internalType": "uint256",
603
- "name": "",
604
- "type": "uint256"
605
- }
606
- ],
607
- "stateMutability": "view",
608
- "type": "function"
609
- },
610
- {
611
- "inputs": [
612
- {
613
- "internalType": "uint256",
614
- "name": "policyId",
615
- "type": "uint256"
616
- },
617
- {
618
- "internalType": "contract IEToken",
619
- "name": "etoken",
620
- "type": "address"
621
- }
622
- ],
623
- "name": "getPolicyFund",
624
- "outputs": [
625
- {
626
- "internalType": "uint256",
627
- "name": "",
628
- "type": "uint256"
629
- }
630
- ],
631
- "stateMutability": "view",
632
- "type": "function"
633
- },
634
- {
635
- "inputs": [
636
- {
637
- "internalType": "uint256",
638
- "name": "policyId",
639
- "type": "uint256"
640
- },
641
- {
642
- "internalType": "uint256",
643
- "name": "index",
644
- "type": "uint256"
645
- }
646
- ],
647
- "name": "getPolicyFundAt",
648
- "outputs": [
649
- {
650
- "internalType": "contract IEToken",
651
- "name": "",
652
- "type": "address"
653
- },
654
- {
655
- "internalType": "uint256",
656
- "name": "",
657
- "type": "uint256"
658
- }
659
- ],
660
- "stateMutability": "view",
661
- "type": "function"
662
- },
663
- {
664
- "inputs": [
665
- {
666
- "internalType": "uint256",
667
- "name": "policyId",
668
- "type": "uint256"
669
- }
670
- ],
671
- "name": "getPolicyFundCount",
672
- "outputs": [
673
- {
674
- "internalType": "uint256",
675
- "name": "",
676
- "type": "uint256"
677
- }
678
- ],
679
- "stateMutability": "view",
680
- "type": "function"
681
- },
682
509
  {
683
510
  "inputs": [],
684
511
  "name": "initialize",
@@ -707,7 +534,12 @@
707
534
  },
708
535
  {
709
536
  "internalType": "uint256",
710
- "name": "scr",
537
+ "name": "jrScr",
538
+ "type": "uint256"
539
+ },
540
+ {
541
+ "internalType": "uint256",
542
+ "name": "srScr",
711
543
  "type": "uint256"
712
544
  },
713
545
  {
@@ -722,17 +554,22 @@
722
554
  },
723
555
  {
724
556
  "internalType": "uint256",
725
- "name": "premiumForEnsuro",
557
+ "name": "ensuroCommission",
558
+ "type": "uint256"
559
+ },
560
+ {
561
+ "internalType": "uint256",
562
+ "name": "partnerCommission",
726
563
  "type": "uint256"
727
564
  },
728
565
  {
729
566
  "internalType": "uint256",
730
- "name": "premiumForRm",
567
+ "name": "jrCoc",
731
568
  "type": "uint256"
732
569
  },
733
570
  {
734
571
  "internalType": "uint256",
735
- "name": "premiumForLps",
572
+ "name": "srCoc",
736
573
  "type": "uint256"
737
574
  },
738
575
  {
@@ -823,32 +660,6 @@
823
660
  "stateMutability": "view",
824
661
  "type": "function"
825
662
  },
826
- {
827
- "inputs": [],
828
- "name": "purePremiums",
829
- "outputs": [
830
- {
831
- "internalType": "uint256",
832
- "name": "",
833
- "type": "uint256"
834
- }
835
- ],
836
- "stateMutability": "view",
837
- "type": "function"
838
- },
839
- {
840
- "inputs": [
841
- {
842
- "internalType": "uint256",
843
- "name": "amount",
844
- "type": "uint256"
845
- }
846
- ],
847
- "name": "receiveGrant",
848
- "outputs": [],
849
- "stateMutability": "nonpayable",
850
- "type": "function"
851
- },
852
663
  {
853
664
  "inputs": [
854
665
  {
@@ -862,25 +673,6 @@
862
673
  "stateMutability": "nonpayable",
863
674
  "type": "function"
864
675
  },
865
- {
866
- "inputs": [
867
- {
868
- "internalType": "contract IEToken",
869
- "name": "eToken",
870
- "type": "address"
871
- }
872
- ],
873
- "name": "repayETokenLoan",
874
- "outputs": [
875
- {
876
- "internalType": "uint256",
877
- "name": "",
878
- "type": "uint256"
879
- }
880
- ],
881
- "stateMutability": "nonpayable",
882
- "type": "function"
883
- },
884
676
  {
885
677
  "inputs": [
886
678
  {
@@ -902,7 +694,12 @@
902
694
  },
903
695
  {
904
696
  "internalType": "uint256",
905
- "name": "scr",
697
+ "name": "jrScr",
698
+ "type": "uint256"
699
+ },
700
+ {
701
+ "internalType": "uint256",
702
+ "name": "srScr",
906
703
  "type": "uint256"
907
704
  },
908
705
  {
@@ -917,17 +714,22 @@
917
714
  },
918
715
  {
919
716
  "internalType": "uint256",
920
- "name": "premiumForEnsuro",
717
+ "name": "ensuroCommission",
718
+ "type": "uint256"
719
+ },
720
+ {
721
+ "internalType": "uint256",
722
+ "name": "partnerCommission",
921
723
  "type": "uint256"
922
724
  },
923
725
  {
924
726
  "internalType": "uint256",
925
- "name": "premiumForRm",
727
+ "name": "jrCoc",
926
728
  "type": "uint256"
927
729
  },
928
730
  {
929
731
  "internalType": "uint256",
930
- "name": "premiumForLps",
732
+ "name": "srCoc",
931
733
  "type": "uint256"
932
734
  },
933
735
  {
@@ -982,7 +784,12 @@
982
784
  },
983
785
  {
984
786
  "internalType": "uint256",
985
- "name": "scr",
787
+ "name": "jrScr",
788
+ "type": "uint256"
789
+ },
790
+ {
791
+ "internalType": "uint256",
792
+ "name": "srScr",
986
793
  "type": "uint256"
987
794
  },
988
795
  {
@@ -997,17 +804,22 @@
997
804
  },
998
805
  {
999
806
  "internalType": "uint256",
1000
- "name": "premiumForEnsuro",
807
+ "name": "ensuroCommission",
808
+ "type": "uint256"
809
+ },
810
+ {
811
+ "internalType": "uint256",
812
+ "name": "partnerCommission",
1001
813
  "type": "uint256"
1002
814
  },
1003
815
  {
1004
816
  "internalType": "uint256",
1005
- "name": "premiumForRm",
817
+ "name": "jrCoc",
1006
818
  "type": "uint256"
1007
819
  },
1008
820
  {
1009
821
  "internalType": "uint256",
1010
- "name": "premiumForLps",
822
+ "name": "srCoc",
1011
823
  "type": "uint256"
1012
824
  },
1013
825
  {
@@ -1041,32 +853,6 @@
1041
853
  "stateMutability": "nonpayable",
1042
854
  "type": "function"
1043
855
  },
1044
- {
1045
- "inputs": [
1046
- {
1047
- "internalType": "contract IAssetManager",
1048
- "name": "newAssetManager",
1049
- "type": "address"
1050
- }
1051
- ],
1052
- "name": "setAssetManager",
1053
- "outputs": [],
1054
- "stateMutability": "nonpayable",
1055
- "type": "function"
1056
- },
1057
- {
1058
- "inputs": [],
1059
- "name": "totalETokenSupply",
1060
- "outputs": [
1061
- {
1062
- "internalType": "uint256",
1063
- "name": "",
1064
- "type": "uint256"
1065
- }
1066
- ],
1067
- "stateMutability": "view",
1068
- "type": "function"
1069
- },
1070
856
  {
1071
857
  "inputs": [],
1072
858
  "name": "unpause",
@@ -1128,42 +914,10 @@
1128
914
  ],
1129
915
  "stateMutability": "nonpayable",
1130
916
  "type": "function"
1131
- },
1132
- {
1133
- "inputs": [
1134
- {
1135
- "internalType": "uint256",
1136
- "name": "amount",
1137
- "type": "uint256"
1138
- }
1139
- ],
1140
- "name": "withdrawWonPremiums",
1141
- "outputs": [
1142
- {
1143
- "internalType": "uint256",
1144
- "name": "",
1145
- "type": "uint256"
1146
- }
1147
- ],
1148
- "stateMutability": "nonpayable",
1149
- "type": "function"
1150
- },
1151
- {
1152
- "inputs": [],
1153
- "name": "wonPurePremiums",
1154
- "outputs": [
1155
- {
1156
- "internalType": "uint256",
1157
- "name": "",
1158
- "type": "uint256"
1159
- }
1160
- ],
1161
- "stateMutability": "view",
1162
- "type": "function"
1163
917
  }
1164
918
  ],
1165
- "bytecode": "0x6101206040523060601b6080523480156200001957600080fd5b50604051620060a2380380620060a28339810160408190526200003c9162000105565b6001600160601b0319606084811b821660c05283811b82166101005282901b1660e0526040805163313ce56760e01b815290516003916001600160a01b0384169163313ce56791600480820192602092909190829003018186803b158015620000a457600080fd5b505afa158015620000b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000df919062000159565b620000eb91906200028f565b620000f890600a620001ce565b60a05250620002e4915050565b6000806000606084860312156200011b57600080fd5b83516200012881620002cb565b60208501519093506200013b81620002cb565b60408501519092506200014e81620002cb565b809150509250925092565b6000602082840312156200016c57600080fd5b815160ff811681146200017e57600080fd5b9392505050565b600181815b80851115620001c6578160001904821115620001aa57620001aa620002b5565b80851615620001b857918102915b93841c93908002906200018a565b509250929050565b60006200017e60ff841683600082620001ea5750600162000289565b81620001f95750600062000289565b81600181146200021257600281146200021d576200023d565b600191505062000289565b60ff841115620002315762000231620002b5565b50506001821b62000289565b5060208310610133831016604e8410600b841016171562000262575081810a62000289565b6200026e838362000185565b8060001904821115620002855762000285620002b5565b0290505b92915050565b600060ff821660ff841680821015620002ac57620002ac620002b5565b90039392505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114620002e157600080fd5b50565b60805160601c60a05160c05160601c60e05160601c6101005160601c615c39620004696000396000818161067101528181610a140152818161349201528181613a52015281816141a701526143a501526000818161077a01528181610a9601528181610b6201528181610ca90152818161130b01528181611481015281816115a001528181611b6801528181613959015261496701526000818161052c0152818161092401528181610ac401528181611088015281816110f501528181611189015281816112280152818161133a0152818161180d01528181611c0201528181611cb401528181611d8c01528181611f40015281816120ea0152818161262a015281816127210152818161293f01528181612fc10152818161330701528181613385015281816135ea0152818161369d01528181613799015261384c01526000818161039401528181612a3101528181612a650152613e64015260008181610f6801528181610fa80152818161165a0152818161169a01526117290152615c396000f3fe60806040526004361061025c5760003560e01c806365e29c7e11610144578063b0ec4bcf116100b6578063dea167d51161007a578063dea167d514610756578063e5a6b10f1461076b578063e823584a1461079e578063f3fef3a3146107b3578063f67b2bad146107d3578063fcbb17fe146107f557600080fd5b8063b0ec4bcf14610695578063b63d382e146106b5578063b77ddfea146106d5578063ca143d18146106ea578063ce937e7b1461071757600080fd5b8063846253d111610108578063846253d1146105ae5780638a9defff146105ce5780638ca23bc9146105ee5780639e556b2b14610622578063ab60016914610642578063af02808a1461066257600080fd5b806365e29c7e1461050857806379502c551461051d5780638129fc1c1461056457806381ced71f146105795780638456cb591461059957600080fd5b80633f4ba83a116101dd57806352d1902d116101a157806352d1902d14610452578063536c9a43146104675780635b494dd51461047c5780635c975abb146104b057806363c0f4b1146104d357806365b71008146104e857600080fd5b80633f4ba83a146103b657806343060237146103cb57806347e7ef24146103eb5780634a47a3e01461040b5780634f1ef2861461043f57600080fd5b806324ea54f41161022457806324ea54f41461030b57806326ccbd221461032d5780632a2be82d146103425780633659cfe614610362578063396512fd1461038257600080fd5b8063066dda0e1461026157806319704a3a146102835780631a548a27146102b65780631c5c4aea146102cb578063220c262b146102eb575b600080fd5b34801561026d57600080fd5b5061028161027c3660046155d7565b610815565b005b34801561028f57600080fd5b506102a361029e366004615650565b610870565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b5060ce546102a3565b3480156102d757600080fd5b506102a36102e63660046156ae565b610d1e565b3480156102f757600080fd5b506102a36103063660046156ec565b610d3b565b34801561031757600080fd5b506102a3600080516020615be483398151915281565b34801561033957600080fd5b506102a3610d7d565b34801561034e57600080fd5b506102a361035d36600461540f565b610da1565b34801561036e57600080fd5b5061028161037d36600461540f565b610f5d565b34801561038e57600080fd5b506102a37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c257600080fd5b5061028161103d565b3480156103d757600080fd5b506102816103e636600461540f565b6110ea565b3480156103f757600080fd5b5061028161040636600461558e565b6114fd565b34801561041757600080fd5b506102a37fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b61028161044d366004615449565b61164f565b34801561045e57600080fd5b506102a361171c565b34801561047357600080fd5b5060d0546102a3565b34801561048857600080fd5b506102a37f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156104bc57600080fd5b5060335460ff1660405190151581526020016102ad565b3480156104df57600080fd5b506102a3600a81565b3480156104f457600080fd5b5061028161050336600461540f565b6117cf565b34801561051457600080fd5b506102a36119ec565b34801561052957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102ad565b34801561057057600080fd5b50610281611ad2565b34801561058557600080fd5b506102816105943660046156ae565b611b5b565b3480156105a557600080fd5b50610281611bd6565b3480156105ba57600080fd5b506102a36105c93660046156ae565b611c6c565b3480156105da57600080fd5b506102816105e93660046155ba565b611e62565b3480156105fa57600080fd5b506102a37fa23b11d346b90fc279e0a917152caf41f3c1247b12211b7cbc0e0e3f8b79405781565b34801561062e57600080fd5b5061028161063d366004615606565b611f01565b34801561064e57600080fd5b5061028161065d3660046156c7565b611f3e565b34801561066e57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061054c565b3480156106a157600080fd5b5061054c6106b03660046156ae565b612080565b3480156106c157600080fd5b506102816106d036600461540f565b6120be565b3480156106e157600080fd5b506102a361236d565b3480156106f657600080fd5b5061070a61070536600461540f565b61242a565b6040516102ad919061576a565b34801561072357600080fd5b50610737610732366004615711565b612437565b604080516001600160a01b0390931683526020830191909152016102ad565b34801561076257600080fd5b506102a361245d565b34801561077757600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061054c565b3480156107aa57600080fd5b5060cf546102a3565b3480156107bf57600080fd5b506102a36107ce36600461558e565b612469565b3480156107df57600080fd5b506102a3600080516020615b9d83398151915281565b34801561080157600080fd5b50610281610810366004615551565b6125df565b60335460ff16156108415760405162461bcd60e51b81526004016108389061585d565b60405180910390fd5b61086c61085336849003840184615633565b8261085f576000610865565b83602001355b600061284d565b5050565b600061087e60335460ff1690565b1561089b5760405162461bcd60e51b81526004016108389061585d565b6101208401516001600160a01b03811633146109055760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b6064820152608401610838565b604051635dfdc5d760e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063bbfb8bae9060240160006040518083038186803b15801561096657600080fd5b505afa15801561097a573d6000803e3d6000fd5b50505050826bffffffffffffffffffffffff166060826001600160a01b0316901b6109a59190615a24565b85526109b085612c1b565b8551600090815260cc602052604081209190915560a086015160ce8054919290916109dc908490615a24565b909155506109eb905085612c4b565b8451604051632851206560e21b81526001600160a01b03868116600483015260248201929092527f00000000000000000000000000000000000000000000000000000000000000009091169063a144819490604401600060405180830381600087803b158015610a5a57600080fd5b505af1158015610a6e573d6000803e3d6000fd5b50505050610abe84308761010001518860a00151610a8c9190615a24565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612e09565b610b8a847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1b57600080fd5b505afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b53919061542c565b60c08801516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612e09565b60008560e00151118015610c205750806001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b158015610bd257600080fd5b505afa158015610be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0a919061542c565b6001600160a01b0316846001600160a01b031614155b15610cd157610cd184826001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6257600080fd5b505afa158015610c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9a919061542c565b60e08801516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612e09565b806001600160a01b03167ff8da20dc84e4c9850943fcd1a0587142b2bac3fef70840ccee41f5edd22bc47786604051610d0a9190615920565b60405180910390a2505082515b9392505050565b600081815260cd60205260408120610d3590612e7a565b92915050565b600082815260cd6020526040812081908190610d579085612e85565b915091508115610d6a579150610d359050565b600092505050610d35565b505092915050565b600060cf5460d05460ce54610d929190615a24565b610d9c9190615a7d565b905090565b6000610daf60335460ff1690565b15610dcc5760405162461bcd60e51b81526004016108389061585d565b600080610dda60c985612ea1565b91509150818015610e1757506001816003811115610dfa57610dfa615b17565b1480610e1757506002816003811115610e1557610e15615b17565b145b610e5a5760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610838565b6000846001600160a01b03166352a2783b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e9557600080fd5b505afa158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecd919061550e565b90506000610eda82612ed4565b90506001600160a01b038616631c0f4f81610ef58385615a7d565b6040518263ffffffff1660e01b8152600401610f1391815260200190565b600060405180830381600087803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b505050508082610f519190615a7d565b9450505050505b919050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610fa65760405162461bcd60e51b8152600401610838906157c5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fef600080516020615b7d833981519152546001600160a01b031690565b6001600160a01b0316146110155760405162461bcd60e51b815260040161083890615811565b61101e81612f76565b6040805160008082526020820190925261103a91839190613017565b50565b60405163c5b8f5cf60e01b8152600080516020615be483398151915260048201819052600080516020615b9d8339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b1580156110ca57600080fd5b505afa1580156110de573d6000803e3d6000fd5b5050505061086c613191565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461117c5760405162461bcd60e51b815260206004820152603160248201527f4f6e6c792074686520506f6c696379506f6f6c436f6e6669672063616e20636860448201527030b733b29030b9b9b2ba26b0b730b3b2b960791b6064820152608401610838565b60006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611218919061542c565b6001600160a01b03161461144b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b15801561127f57600080fd5b505afa158015611293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b7919061542c565b6001600160a01b031663cec16f3f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156112f157600080fd5b505af1158015611305573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663095ea7b37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b15801561139157600080fd5b505afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c9919061542c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260006024820152604401602060405180830381600087803b15801561141157600080fd5b505af1158015611425573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144991906154f1565b505b6001600160a01b0381161561103a5760405163095ea7b360e01b81526001600160a01b03828116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390604401602060405180830381600087803b1580156114c557600080fd5b505af11580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c91906154f1565b60335460ff16156115205760405162461bcd60e51b81526004016108389061585d565b60008061152e60c985612ea1565b915091508180156115505750600181600381111561154e5761154e615b17565b145b6115935760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610838565b6115c86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086612e09565b6040516311f9fbc960e21b8152336004820152602481018490526001600160a01b038516906347e7ef2490604401602060405180830381600087803b15801561161057600080fd5b505af1158015611624573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611648919061550e565b5050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156116985760405162461bcd60e51b8152600401610838906157c5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116e1600080516020615b7d833981519152546001600160a01b031690565b6001600160a01b0316146117075760405162461bcd60e51b815260040161083890615811565b61171082612f76565b61086c82826001613017565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117bc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610838565b50600080516020615b7d83398151915290565b6040516312d9a6ad60e01b81527f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2760048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561185757600080fd5b505afa15801561186b573d6000803e3d6000fd5b5060029250611878915050565b61188360c984613224565b600381111561189457611894615b17565b146118d95760405162461bcd60e51b815260206004820152601560248201527411551bdad95b881b9bdd0819195c1c9958d85d1959605a1b6044820152606401610838565b816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561191257600080fd5b505afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a919061550e565b156119a65760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b6064820152608401610838565b816001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c60006040516119e0919061576a565b60405180910390a25050565b600080805b6119fb60c9612e7a565b811015611aa3576000611a0f60c983613241565b509050806001600160a01b03166352a2783b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a4b57600080fd5b505afa158015611a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a83919061550e565b611a8d9084615a24565b9250508080611a9b90615ae6565b9150506119f1565b506000611aae610d7d565b905081811115611ac957611ac28282615a7d565b9250505090565b60009250505090565b600054610100900460ff16611aed5760005460ff1615611af1565b303b155b611b0d5760405162461bcd60e51b815260040161083890615887565b600054610100900460ff16158015611b2f576000805461ffff19166101011790555b611b37613250565b611b3f613279565b611b476132a8565b801561103a576000805461ff001916905550565b611b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612e09565b611b9981613517565b6040805160018152602081018390527fd60d524f1cae273480bb0a4ddfb992b6ac0b61c8e12ffbe2e4e31463f9e90199910160405180910390a150565b6040516312d9a6ad60e01b8152600080516020615be483398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015611c4c57600080fd5b505afa158015611c60573d6000803e3d6000fd5b5050505061103a61357c565b6040516312d9a6ad60e01b81527fa23b11d346b90fc279e0a917152caf41f3c1247b12211b7cbc0e0e3f8b794057600482018190523360248301526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906312d9a6ad9060440160006040518083038186803b158015611cf657600080fd5b505afa158015611d0a573d6000803e3d6000fd5b5050505060d054831115611d1e5760d05492505b60008311611d6e5760405162461bcd60e51b815260206004820152601760248201527f4e6f207072656d69756d7320746f2077697468647261770000000000000000006044820152606401610838565b8260d06000828254611d809190615a7d565b92505081905550611e217f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015611de357600080fd5b505afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b919061542c565b846135d4565b6040805160008152602081018590527fd60d524f1cae273480bb0a4ddfb992b6ac0b61c8e12ffbe2e4e31463f9e90199910160405180910390a15090919050565b60335460ff1615611e855760405162461bcd60e51b81526004016108389061585d565b42611e9861018083016101608401615733565b64ffffffffff161115611ee65760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610838565b61103a611ef836839003830183615633565b6000600161284d565b60335460ff1615611f245760405162461bcd60e51b81526004016108389061585d565b61086c611f3636849003840184615633565b82600061284d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9757600080fd5b505afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf919061542c565b6001600160a01b0316336001600160a01b0316146120405760405162461bcd60e51b815260206004820152602860248201527f4f6e6c792061737365744d616e616765722063616e2063616c6c207468697320604482015267333ab731ba34b7b760c11b6064820152608401610838565b60335460ff16156120635760405162461bcd60e51b81526004016108389061585d565b80156120725761086c82613517565b61207b82612ed4565b505050565b6000808061208f60c985613241565b909250905060008160038111156120a8576120a8615b17565b146120b4575092915050565b5060009392505050565b6040516312d9a6ad60e01b8152600080516020615b9d83398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561213457600080fd5b505afa158015612148573d6000803e3d6000fd5b50505050600a61215860c9612e7a565b106121af5760405162461bcd60e51b815260206004820152602160248201527f4d6178696d756d206e756d626572206f662045546f6b656e73207265616368656044820152601960fa1b6064820152608401610838565b6121ba60c983613980565b156122075760405162461bcd60e51b815260206004820152601a60248201527f65546f6b656e20616c726561647920696e2074686520706f6f6c0000000000006044820152606401610838565b6001600160a01b0382166122545760405162461bcd60e51b815260206004820152601460248201527365546f6b656e2063616e2774206265207a65726f60601b6044820152606401610838565b306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b15801561229757600080fd5b505afa1580156122ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cf919061542c565b6001600160a01b0316146123255760405162461bcd60e51b815260206004820152601e60248201527f45546f6b656e206e6f74206c696e6b656420746f207468697320706f6f6c00006044820152606401610838565b61233260c983600161398c565b50816001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c60016040516119e0919061576a565b600080805b61237c60c9612e7a565b81101561242457600061239060c983613241565b509050806001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123cc57600080fd5b505afa1580156123e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612404919061550e565b61240e9084615a24565b925050808061241c90615ae6565b915050612372565b50919050565b6000610d3560c983613224565b600082815260cd60205260408120819061245190846139b2565b915091505b9250929050565b6000610d9c60c9612e7a565b600061247760335460ff1690565b156124945760405162461bcd60e51b81526004016108389061585d565b6000806124a260c986612ea1565b915091508180156124df575060018160038111156124c2576124c2615b17565b14806124df575060028160038111156124dd576124dd615b17565b145b61253d5760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b6064820152608401610838565b60405163f3fef3a360e01b8152336004820181905260248201869052906000906001600160a01b0388169063f3fef3a390604401602060405180830381600087803b15801561258b57600080fd5b505af115801561259f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c3919061550e565b905080156125d5576125d582826135d4565b9695505050505050565b60405163c5b8f5cf60e01b8152600080516020615be483398151915260048201819052600080516020615b9d8339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561266c57600080fd5b505afa158015612680573d6000803e3d6000fd5b505050506126988460c961398090919063ffffffff16565b6126dc5760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b6044820152606401610838565b60038360038111156126f0576126f0615b17565b1415806127a35750604051632474521560e21b8152600080516020615be483398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b15801561276b57600080fd5b505afa15801561277f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a391906154f1565b6127f95760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e642065546f6b656e6044820152607360f81b6064820152608401610838565b61280560c9858561398c565b50836001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c8460405161283f919061576a565b60405180910390a250505050565b612856836139c1565b610120830151818061287057506001600160a01b03811633145b6128bc5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c69636965736044820152606401610838565b8215806128d457504284610160015164ffffffffff16115b6129205760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610838565b6040516310f199ef60e31b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063878ccf789060240160006040518083038186803b15801561298157600080fd5b505afa158015612995573d6000803e3d6000fd5b5050505083602001518311156129e65760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610838565b600080841190508460a0015160ce6000828254612a039190615a7d565b909155506000905080612a17878488613a27565b915091508215612af0576000612a2d8884613b81565b90507f0000000000000000000000000000000000000000000000000000000000000000811115612a6357612a6081613d8d565b90505b7f0000000000000000000000000000000000000000000000000000000000000000811115612aea5760405162461bcd60e51b815260206004820152602e60248201527f446f6e2774206b6e6f7720776865726520746f2074616b65207468652072657360448201526d74206f6620746865206d6f6e657960901b6064820152608401610838565b50612afd565b612afa8782613eac565b90505b612b0681613517565b6060870151604051634e5de6c960e11b815260048101919091526001600160a01b03851690639cbbcd9290602401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b5050505086600001518761012001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e88604051612bab91815260200190565b60405180910390a38651600090815260cc602090815260408083208390558951835260cd909152812090818181818181612be582826152ff565b50505050505050506000861115612c07578651612c02908761418e565b612c12565b8651612c129061438c565b50505050505050565b600081604051602001612c2e9190615920565b604051602081830303815290604052805190602001209050919050565b8051600090815260cd60205260408120815b612c6760c9612e7a565b811015612df057600080612c7c60c984613241565b90925090506001816003811115612c9557612c95615b17565b14612ca1575050612dde565b610120860151610160870151604051630cd21c5560e21b81526001600160a01b03928316600482015264ffffffffff90911660248201529083169063334871549060440160206040518083038186803b158015612cfd57600080fd5b505afa158015612d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3591906154f1565b612d40575050612dde565b6000826001600160a01b031663e5ae143f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d7b57600080fd5b505afa158015612d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db3919061550e565b905080612dc257505050612dde565b612dcc8187615a24565b9550612dd98584836144d2565b505050505b80612de881615ae6565b915050612c5d565b5061207b8360600151612e02856144df565b8484614539565b6040516001600160a01b0380851660248301528316604482015260648101829052612e749085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261468c565b50505050565b6000610d358261475e565b6000808080612e948686614769565b9097909650945050505050565b6000808080612eb08686614769565b9150915081816003811115612ec757612ec7615b17565b9350935050509250929050565b600060d0548211612efe578160d06000828254612ef19190615a7d565b9091555060009392505050565b60d05415612f1b5760d054612f139083615a7d565b600060d05591505b60cf5460ce541115612f725760cf5460ce54612f379190615a7d565b8211612f4f578160cf6000828254612ef19190615a24565b60cf5460ce54612f5f9190615a7d565b612f699083615a7d565b60ce5460cf5591505b5090565b60405163c5b8f5cf60e01b8152600080516020615be483398151915260048201819052600080516020615b9d8339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561300357600080fd5b505afa158015612c12573d6000803e3d6000fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561304a5761207b836147ac565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561308357600080fd5b505afa9250505080156130b3575060408051601f3d908101601f191682019092526130b09181019061550e565b60015b6131165760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610838565b600080516020615b7d83398151915281146131855760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610838565b5061207b838383614848565b60335460ff166131da5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610838565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000613230838361486d565b6003811115610d1757610d17615b17565b6000808080612eb086866148e7565b600054610100900460ff166132775760405162461bcd60e51b8152600401610838906158d5565b565b600054610100900460ff166132a05760405162461bcd60e51b8152600401610838906158d5565b61327761491c565b600054610100900460ff166132c35760005460ff16156132c7565b303b155b6132e35760405162461bcd60e51b815260040161083890615887565b600054610100900460ff16158015613305576000805461ffff19166101011790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561336057600080fd5b505af1158015613374573d6000803e3d6000fd5b5050505060006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b1580156133dc57600080fd5b505afa1580156133f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613414919061542c565b6001600160a01b0316146134905760405162461bcd60e51b815260206004820152603a60248201527f41737365744d616e616765722063616e277420626520736574206265666f726560448201527f20506f6c696379506f6f6c20696e697469616c697a6174696f6e0000000000006064820152608401610838565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156134eb57600080fd5b505af11580156134ff573d6000803e3d6000fd5b50505050801561103a576000805461ff001916905550565b8061351f5750565b8060cf5410613545578060cf600082825461353a9190615a7d565b9091555061103a9050565b60cf54156135625760cf5461355a9082615a7d565b600060cf5590505b8060d060008282546135749190615a24565b909155505050565b60335460ff161561359f5760405162461bcd60e51b81526004016108389061585d565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586132073390565b806135dd575050565b60006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b15801561364157600080fd5b505afa158015613655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613679919061542c565b6001600160a01b03161415801561369657508061369461494f565b105b1561378c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b1580156136f457600080fd5b505afa158015613708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372c919061542c565b6001600160a01b0316631014a0c2826040518263ffffffff1660e01b815260040161375991815260200190565b600060405180830381600087803b15801561377357600080fd5b505af1158015613787573d6000803e3d6000fd5b505050505b60006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631455cd286040518163ffffffff1660e01b815260040160206040518083038186803b1580156137f057600080fd5b505afa158015613804573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613828919061542c565b6001600160a01b03161415801561384557508061384361494f565b105b1561394c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631455cd286040518163ffffffff1660e01b815260040160206040518083038186803b1580156138a357600080fd5b505afa1580156138b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138db919061542c565b6001600160a01b031663ee842dda6138f161494f565b6138fb9084615a7d565b6040518263ffffffff1660e01b815260040161391991815260200190565b600060405180830381600087803b15801561393357600080fd5b505af1158015613947573d6000803e3d6000fd5b505050505b61086c6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683836149e9565b6000610d178383614a19565b60006139aa84848460038111156139a5576139a5615b17565b614a25565b949350505050565b6000808080612e9486866148e7565b8051158015906139e857508051600090815260cc60205260409020546139e682612c1b565b145b61103a5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610838565b60008060008060008615613b215787516040516331a9108f60e11b8152613adf916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636352211e91613a899160040190815260200190565b60206040518083038186803b158015613aa157600080fd5b505afa158015613ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad9919061542c565b876135d4565b858860a001511115613b0257858860a00151613afb9190615a7d565b9150613b74565b613b1a8860a0015187613b159190615a7d565b612ed4565b9250613b74565b8760a00151915060ce5460cf541115613b7457613b4d60ce5460cf54613b479190615a7d565b83614a4c565b90508060cf6000828254613b619190615a7d565b90915550613b7190508183615a7d565b91505b5090969095509350505050565b60008080613b8e856144df565b9050600080613b9c87614a5b565b8851600090815260cd602052604081209294509092505b613bbc82612e7a565b811015613d8057600080613bd084846139b2565b604051634438bcbb60e01b8152600481018a90526024810182905291935091506001600160a01b03831690634438bcbb90604401600060405180830381600087803b158015613c1e57600080fd5b505af1158015613c32573d6000803e3d6000fd5b50505060608c0151613c4691508290614aa7565b90506001600160a01b03821663aa69d74b613c618784614ba7565b6040516001600160e01b031960e084901b16815260048101919091528815156024820152604401600060405180830381600087803b158015613ca257600080fd5b505af1158015613cb6573d6000803e3d6000fd5b5050505060008a1115613d6b576000613ccf8b83614ba7565b604051630c1ceca560e21b815260048101829052600160248201529091506001600160a01b03841690633073b29490604401602060405180830381600087803b158015613d1b57600080fd5b505af1158015613d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d53919061550e565b613d5d9082615a7d565b613d67908a615a24565b9850505b50508080613d7890615ae6565b915050613bb3565b5093979650505050505050565b6000805b613d9b60c9612e7a565b811015613ea557600080613db060c984613241565b90925090506001816003811115613dc957613dc9615b17565b14613dd5575050613e93565b604051630c1ceca560e21b815260048101869052600060248201526001600160a01b03831690633073b29490604401602060405180830381600087803b158015613e1e57600080fd5b505af1158015613e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e56919061550e565b613e609086615a7d565b94507f00000000000000000000000000000000000000000000000000000000000000008511613e90575050613ea5565b50505b80613e9d81615ae6565b915050613d91565b5090919050565b600080613eb8846144df565b9050600080613ec686614a5b565b8751600090815260cd602052604081209294509092505b613ee682612e7a565b81101561418257600080613efa84846139b2565b604051634438bcbb60e01b8152600481018a90526024810182905291935091506001600160a01b03831690634438bcbb90604401600060405180830381600087803b158015613f4857600080fd5b505af1158015613f5c573d6000803e3d6000fd5b50505060608b0151613f7091508290614aa7565b90506001600160a01b03821663aa69d74b613f8b8784614ba7565b6040516001600160e01b031960e084901b16815260048101919091528815156024820152604401600060405180830381600087803b158015613fcc57600080fd5b505af1158015613fe0573d6000803e3d6000fd5b5050505060008911801561406457506000826001600160a01b03166352a2783b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561402a57600080fd5b505afa15801561403e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614062919061550e565b115b1561416d5760a08a015160009061407b9083614ba7565b90506141008a6140fb856001600160a01b03166352a2783b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156140bd57600080fd5b505afa1580156140d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140f5919061550e565b84614a4c565b614a4c565b604051631c0f4f8160e01b8152600481018290529091506001600160a01b03841690631c0f4f8190602401600060405180830381600087803b15801561414557600080fd5b505af1158015614159573d6000803e3d6000fd5b50505050808a6141699190615a7d565b9950505b5050808061417a90615ae6565b915050613edd565b50949695505050505050565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b1580156141f157600080fd5b505afa158015614205573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614229919061542c565b90506001600160a01b0381163b61423f57505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044810186905260648101859052608401602060405180830381600087803b1580156142a457600080fd5b505af19250505080156142d4575060408051601f3d908101601f191682019092526142d191810190615527565b60015b61431c573d808015614302576040519150601f19603f3d011682016040523d82523d6000602084013e614307565b606091505b5080516143145750505050565b805181602001fd5b6001600160e01b03198116636b140e9f60e11b14612e745760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b6064820152608401610838565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b1580156143ef57600080fd5b505afa158015614403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614427919061542c565b90506001600160a01b0381163b61443c575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401602060405180830381600087803b15801561449a57600080fd5b505af19250505080156144ca575060408051601f3d908101601f191682019092526144c791810190615527565b60015b61207b575050565b60006139aa848484614a25565b6000610d3561453483606001518461014001518561016001516145029190615a94565b64ffffffffff166145139190615a5e565b61010085015161452e906a1a1601fc4ea7109e000000614ba7565b90614aa7565b614c78565b838210156145975760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f75676874206f6365616e20746f20636f7665722074686520706044820152646f6c69637960d81b6064820152608401610838565b8360005b6145a483612e7a565b81101561468457600080806145b986856139b2565b9150915060016145c887612e7a565b6145d29190615a7d565b8410156145ee576145e78761452e8b84614ba7565b92506145f2565b8492505b60405163837c83a360e01b815260048101899052602481018490526001600160a01b0383169063837c83a390604401600060405180830381600087803b15801561463b57600080fd5b505af115801561464f573d6000803e3d6000fd5b506146619250889150849050856144d2565b5061466c8386615a7d565b9450505050808061467c90615ae6565b91505061459b565b505050505050565b60006146e1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614cf69092919063ffffffff16565b80519091501561207b57808060200190518101906146ff91906154f1565b61207b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610838565b6000610d3582614d05565b6001600160a01b03811660009081526002830160205260408120548190806147a1576147958585614a19565b60009250925050612456565b600192509050612456565b6001600160a01b0381163b6148195760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610838565b600080516020615b7d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61485183614d0f565b60008251118061485e5750805b1561207b57612e748383614d4f565b6001600160a01b03811660009081526002830160205260408120548015158061489b575061489b8484614a19565b610d175760405162461bcd60e51b815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610838565b600080806148f58585614e43565b6001600160a01b038116600090815260029690960160205260409095205494959350505050565b600054610100900460ff166149435760405162461bcd60e51b8152600401610838906158d5565b6033805460ff19169055565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156149b157600080fd5b505afa1580156149c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c919061550e565b6040516001600160a01b03831660248201526044810182905261207b90849063a9059cbb60e01b90606401612e3d565b6000610d178383614e4f565b6001600160a01b038216600090815260028401602052604081208290556139aa8484614e71565b6000818310613ea55781610d17565b6000806000614a6984614e86565b90508084610100015110614a9457600181856101000151614a8a9190615a7d565b9250925050915091565b600084610100015182614a8a9190615a7d565b600081614af65760405162461bcd60e51b815260206004820152601860248201527f7761644469763a204469766973696f6e206279207a65726f00000000000000006044820152606401610838565b6000614b03600284615a3c565b9050670de0b6b3a7640000614b1a82600019615a7d565b614b249190615a3c565b841115614b7f5760405162461bcd60e51b8152602060048201526024808201527f7761644469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610838565b8281614b93670de0b6b3a764000087615a5e565b614b9d9190615a24565b6139aa9190615a3c565b6000821580614bb4575081155b15614bc157506000610d35565b81614bd56002670de0b6b3a7640000615a3c565b614be190600019615a7d565b614beb9190615a3c565b831115614c465760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610838565b670de0b6b3a7640000614c5a600282615a3c565b614c648486615a5e565b614c6e9190615a24565b610d179190615a3c565b600080614c89633b9aca0084615a5e565b905082614c9a633b9aca0083615a3c565b14610d355760405162461bcd60e51b815260206004820152602660248201527f776164546f5261643a204d617468204d756c7469706c69636174696f6e204f766044820152656572666c6f7760d01b6064820152608401610838565b60606139aa8484600085614eed565b6000610d35825490565b614d18816147ac565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b614db75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610838565b600080846001600160a01b031684604051614dd2919061574e565b600060405180830381855af49150503d8060008114614e0d576040519150601f19603f3d011682016040523d82523d6000602084013e614e12565b606091505b5091509150614e3a8282604051806060016040528060278152602001615bbd6027913961501e565b95945050505050565b6000610d178383615057565b6001600160a01b03811660009081526001830160205260408120541515610d17565b6000610d17836001600160a01b038416615081565b60008082610140015164ffffffffff1642614ea19190615a7d565b9050610d17614ee86e0612d847b578e7643c28ac00000000614ee2614ec5876144df565b614ecf9086615a5e565b614edc8860600151614c78565b906150d0565b9061518b565b61527f565b606082471015614f4e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610838565b6001600160a01b0385163b614fa55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610838565b600080866001600160a01b03168587604051614fc1919061574e565b60006040518083038185875af1925050503d8060008114614ffe576040519150601f19603f3d011682016040523d82523d6000602084013e615003565b606091505b509150915061501382828661501e565b979650505050505050565b6060831561502d575081610d17565b82511561503d5782518084602001fd5b8160405162461bcd60e51b81526004016108389190615792565b600082600001828154811061506e5761506e615b2d565b9060005260206000200154905092915050565b60008181526001830160205260408120546150c857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d35565b506000610d35565b60008215806150dd575081155b156150ea57506000610d35565b8161510260026b033b2e3c9fd0803ce8000000615a3c565b61510e90600019615a7d565b6151189190615a3c565b8311156151735760405162461bcd60e51b8152602060048201526024808201527f7261794d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610838565b6b033b2e3c9fd0803ce8000000614c5a600282615a3c565b6000816151da5760405162461bcd60e51b815260206004820152601860248201527f7261794469763a204469766973696f6e206279207a65726f00000000000000006044820152606401610838565b60006151e7600284615a3c565b90506b033b2e3c9fd0803ce800000061520282600019615a7d565b61520c9190615a3c565b8411156152675760405162461bcd60e51b8152602060048201526024808201527f7261794469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610838565b8281614b936b033b2e3c9fd0803ce800000087615a5e565b6000806152916002633b9aca00615a3c565b9050600061529f8483615a24565b9050818110156152f15760405162461bcd60e51b815260206004820181905260248201527f726179546f5761643a204d617468204164646974696f6e204f766572666c6f776044820152606401610838565b6139aa633b9aca0082615a3c565b508054600082559060005260206000209081019061103a91905b80821115612f725760008155600101615319565b8035610f5881615b59565b6000610180828403121561242457600080fd5b6000610180828403121561535e57600080fd5b6153666159c9565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101206153cc81840161532d565b908201526101406153de8382016153fa565b908201526101606153f08382016153fa565b9082015292915050565b803564ffffffffff81168114610f5857600080fd5b60006020828403121561542157600080fd5b8135610d1781615b59565b60006020828403121561543e57600080fd5b8151610d1781615b59565b6000806040838503121561545c57600080fd5b823561546781615b59565b915060208381013567ffffffffffffffff8082111561548557600080fd5b818601915086601f83011261549957600080fd5b8135818111156154ab576154ab615b43565b6154bd601f8201601f191685016159f3565b915080825287848285010111156154d357600080fd5b80848401858401376000848284010152508093505050509250929050565b60006020828403121561550357600080fd5b8151610d1781615b6e565b60006020828403121561552057600080fd5b5051919050565b60006020828403121561553957600080fd5b81516001600160e01b031981168114610d1757600080fd5b6000806040838503121561556457600080fd5b823561556f81615b59565b915060208301356004811061558357600080fd5b809150509250929050565b600080604083850312156155a157600080fd5b82356155ac81615b59565b946020939093013593505050565b600061018082840312156155cd57600080fd5b610d178383615338565b6000806101a083850312156155eb57600080fd5b6155f58484615338565b915061018083013561558381615b6e565b6000806101a0838503121561561a57600080fd5b6156248484615338565b94610180939093013593505050565b6000610180828403121561564657600080fd5b610d17838361534b565b60008060006101c0848603121561566657600080fd5b615670858561534b565b925061018084013561568181615b59565b91506101a08401356bffffffffffffffffffffffff811681146156a357600080fd5b809150509250925092565b6000602082840312156156c057600080fd5b5035919050565b600080604083850312156156da57600080fd5b82359150602083013561558381615b6e565b600080604083850312156156ff57600080fd5b82359150602083013561558381615b59565b6000806040838503121561572457600080fd5b50508035926020909101359150565b60006020828403121561574557600080fd5b610d17826153fa565b60008251615760818460208701615aba565b9190910192915050565b602081016004831061578c57634e487b7160e01b600052602160045260246000fd5b91905290565b60208152600082518060208401526157b1816040850160208701615aba565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600061018082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015161599a828501826001600160a01b03169052565b50506101408381015164ffffffffff81168483015250506101608381015164ffffffffff811684830152610d75565b604051610180810167ffffffffffffffff811182821017156159ed576159ed615b43565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715615a1c57615a1c615b43565b604052919050565b60008219821115615a3757615a37615b01565b500190565b600082615a5957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615a7857615a78615b01565b500290565b600082821015615a8f57615a8f615b01565b500390565b600064ffffffffff83811690831681811015615ab257615ab2615b01565b039392505050565b60005b83811015615ad5578181015183820152602001615abd565b83811115612e745750506000910152565b6000600019821415615afa57615afa615b01565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461103a57600080fd5b801515811461103a57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212201ab6e71ff190983488c431c6d49fae9407654bb5c8a6e8bcf67e91fcdba541c164736f6c63430008060033",
1166
- "deployedBytecode": "0x60806040526004361061025c5760003560e01c806365e29c7e11610144578063b0ec4bcf116100b6578063dea167d51161007a578063dea167d514610756578063e5a6b10f1461076b578063e823584a1461079e578063f3fef3a3146107b3578063f67b2bad146107d3578063fcbb17fe146107f557600080fd5b8063b0ec4bcf14610695578063b63d382e146106b5578063b77ddfea146106d5578063ca143d18146106ea578063ce937e7b1461071757600080fd5b8063846253d111610108578063846253d1146105ae5780638a9defff146105ce5780638ca23bc9146105ee5780639e556b2b14610622578063ab60016914610642578063af02808a1461066257600080fd5b806365e29c7e1461050857806379502c551461051d5780638129fc1c1461056457806381ced71f146105795780638456cb591461059957600080fd5b80633f4ba83a116101dd57806352d1902d116101a157806352d1902d14610452578063536c9a43146104675780635b494dd51461047c5780635c975abb146104b057806363c0f4b1146104d357806365b71008146104e857600080fd5b80633f4ba83a146103b657806343060237146103cb57806347e7ef24146103eb5780634a47a3e01461040b5780634f1ef2861461043f57600080fd5b806324ea54f41161022457806324ea54f41461030b57806326ccbd221461032d5780632a2be82d146103425780633659cfe614610362578063396512fd1461038257600080fd5b8063066dda0e1461026157806319704a3a146102835780631a548a27146102b65780631c5c4aea146102cb578063220c262b146102eb575b600080fd5b34801561026d57600080fd5b5061028161027c3660046155d7565b610815565b005b34801561028f57600080fd5b506102a361029e366004615650565b610870565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b5060ce546102a3565b3480156102d757600080fd5b506102a36102e63660046156ae565b610d1e565b3480156102f757600080fd5b506102a36103063660046156ec565b610d3b565b34801561031757600080fd5b506102a3600080516020615be483398151915281565b34801561033957600080fd5b506102a3610d7d565b34801561034e57600080fd5b506102a361035d36600461540f565b610da1565b34801561036e57600080fd5b5061028161037d36600461540f565b610f5d565b34801561038e57600080fd5b506102a37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c257600080fd5b5061028161103d565b3480156103d757600080fd5b506102816103e636600461540f565b6110ea565b3480156103f757600080fd5b5061028161040636600461558e565b6114fd565b34801561041757600080fd5b506102a37fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b61028161044d366004615449565b61164f565b34801561045e57600080fd5b506102a361171c565b34801561047357600080fd5b5060d0546102a3565b34801561048857600080fd5b506102a37f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156104bc57600080fd5b5060335460ff1660405190151581526020016102ad565b3480156104df57600080fd5b506102a3600a81565b3480156104f457600080fd5b5061028161050336600461540f565b6117cf565b34801561051457600080fd5b506102a36119ec565b34801561052957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102ad565b34801561057057600080fd5b50610281611ad2565b34801561058557600080fd5b506102816105943660046156ae565b611b5b565b3480156105a557600080fd5b50610281611bd6565b3480156105ba57600080fd5b506102a36105c93660046156ae565b611c6c565b3480156105da57600080fd5b506102816105e93660046155ba565b611e62565b3480156105fa57600080fd5b506102a37fa23b11d346b90fc279e0a917152caf41f3c1247b12211b7cbc0e0e3f8b79405781565b34801561062e57600080fd5b5061028161063d366004615606565b611f01565b34801561064e57600080fd5b5061028161065d3660046156c7565b611f3e565b34801561066e57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061054c565b3480156106a157600080fd5b5061054c6106b03660046156ae565b612080565b3480156106c157600080fd5b506102816106d036600461540f565b6120be565b3480156106e157600080fd5b506102a361236d565b3480156106f657600080fd5b5061070a61070536600461540f565b61242a565b6040516102ad919061576a565b34801561072357600080fd5b50610737610732366004615711565b612437565b604080516001600160a01b0390931683526020830191909152016102ad565b34801561076257600080fd5b506102a361245d565b34801561077757600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061054c565b3480156107aa57600080fd5b5060cf546102a3565b3480156107bf57600080fd5b506102a36107ce36600461558e565b612469565b3480156107df57600080fd5b506102a3600080516020615b9d83398151915281565b34801561080157600080fd5b50610281610810366004615551565b6125df565b60335460ff16156108415760405162461bcd60e51b81526004016108389061585d565b60405180910390fd5b61086c61085336849003840184615633565b8261085f576000610865565b83602001355b600061284d565b5050565b600061087e60335460ff1690565b1561089b5760405162461bcd60e51b81526004016108389061585d565b6101208401516001600160a01b03811633146109055760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b6064820152608401610838565b604051635dfdc5d760e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063bbfb8bae9060240160006040518083038186803b15801561096657600080fd5b505afa15801561097a573d6000803e3d6000fd5b50505050826bffffffffffffffffffffffff166060826001600160a01b0316901b6109a59190615a24565b85526109b085612c1b565b8551600090815260cc602052604081209190915560a086015160ce8054919290916109dc908490615a24565b909155506109eb905085612c4b565b8451604051632851206560e21b81526001600160a01b03868116600483015260248201929092527f00000000000000000000000000000000000000000000000000000000000000009091169063a144819490604401600060405180830381600087803b158015610a5a57600080fd5b505af1158015610a6e573d6000803e3d6000fd5b50505050610abe84308761010001518860a00151610a8c9190615a24565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612e09565b610b8a847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1b57600080fd5b505afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b53919061542c565b60c08801516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612e09565b60008560e00151118015610c205750806001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b158015610bd257600080fd5b505afa158015610be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0a919061542c565b6001600160a01b0316846001600160a01b031614155b15610cd157610cd184826001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6257600080fd5b505afa158015610c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9a919061542c565b60e08801516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612e09565b806001600160a01b03167ff8da20dc84e4c9850943fcd1a0587142b2bac3fef70840ccee41f5edd22bc47786604051610d0a9190615920565b60405180910390a2505082515b9392505050565b600081815260cd60205260408120610d3590612e7a565b92915050565b600082815260cd6020526040812081908190610d579085612e85565b915091508115610d6a579150610d359050565b600092505050610d35565b505092915050565b600060cf5460d05460ce54610d929190615a24565b610d9c9190615a7d565b905090565b6000610daf60335460ff1690565b15610dcc5760405162461bcd60e51b81526004016108389061585d565b600080610dda60c985612ea1565b91509150818015610e1757506001816003811115610dfa57610dfa615b17565b1480610e1757506002816003811115610e1557610e15615b17565b145b610e5a5760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610838565b6000846001600160a01b03166352a2783b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e9557600080fd5b505afa158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecd919061550e565b90506000610eda82612ed4565b90506001600160a01b038616631c0f4f81610ef58385615a7d565b6040518263ffffffff1660e01b8152600401610f1391815260200190565b600060405180830381600087803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b505050508082610f519190615a7d565b9450505050505b919050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610fa65760405162461bcd60e51b8152600401610838906157c5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fef600080516020615b7d833981519152546001600160a01b031690565b6001600160a01b0316146110155760405162461bcd60e51b815260040161083890615811565b61101e81612f76565b6040805160008082526020820190925261103a91839190613017565b50565b60405163c5b8f5cf60e01b8152600080516020615be483398151915260048201819052600080516020615b9d8339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b1580156110ca57600080fd5b505afa1580156110de573d6000803e3d6000fd5b5050505061086c613191565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461117c5760405162461bcd60e51b815260206004820152603160248201527f4f6e6c792074686520506f6c696379506f6f6c436f6e6669672063616e20636860448201527030b733b29030b9b9b2ba26b0b730b3b2b960791b6064820152608401610838565b60006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611218919061542c565b6001600160a01b03161461144b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b15801561127f57600080fd5b505afa158015611293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b7919061542c565b6001600160a01b031663cec16f3f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156112f157600080fd5b505af1158015611305573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663095ea7b37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b15801561139157600080fd5b505afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c9919061542c565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260006024820152604401602060405180830381600087803b15801561141157600080fd5b505af1158015611425573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144991906154f1565b505b6001600160a01b0381161561103a5760405163095ea7b360e01b81526001600160a01b03828116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390604401602060405180830381600087803b1580156114c557600080fd5b505af11580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c91906154f1565b60335460ff16156115205760405162461bcd60e51b81526004016108389061585d565b60008061152e60c985612ea1565b915091508180156115505750600181600381111561154e5761154e615b17565b145b6115935760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610838565b6115c86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086612e09565b6040516311f9fbc960e21b8152336004820152602481018490526001600160a01b038516906347e7ef2490604401602060405180830381600087803b15801561161057600080fd5b505af1158015611624573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611648919061550e565b5050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156116985760405162461bcd60e51b8152600401610838906157c5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116e1600080516020615b7d833981519152546001600160a01b031690565b6001600160a01b0316146117075760405162461bcd60e51b815260040161083890615811565b61171082612f76565b61086c82826001613017565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117bc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610838565b50600080516020615b7d83398151915290565b6040516312d9a6ad60e01b81527f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2760048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561185757600080fd5b505afa15801561186b573d6000803e3d6000fd5b5060029250611878915050565b61188360c984613224565b600381111561189457611894615b17565b146118d95760405162461bcd60e51b815260206004820152601560248201527411551bdad95b881b9bdd0819195c1c9958d85d1959605a1b6044820152606401610838565b816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561191257600080fd5b505afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a919061550e565b156119a65760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b6064820152608401610838565b816001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c60006040516119e0919061576a565b60405180910390a25050565b600080805b6119fb60c9612e7a565b811015611aa3576000611a0f60c983613241565b509050806001600160a01b03166352a2783b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a4b57600080fd5b505afa158015611a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a83919061550e565b611a8d9084615a24565b9250508080611a9b90615ae6565b9150506119f1565b506000611aae610d7d565b905081811115611ac957611ac28282615a7d565b9250505090565b60009250505090565b600054610100900460ff16611aed5760005460ff1615611af1565b303b155b611b0d5760405162461bcd60e51b815260040161083890615887565b600054610100900460ff16158015611b2f576000805461ffff19166101011790555b611b37613250565b611b3f613279565b611b476132a8565b801561103a576000805461ff001916905550565b611b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612e09565b611b9981613517565b6040805160018152602081018390527fd60d524f1cae273480bb0a4ddfb992b6ac0b61c8e12ffbe2e4e31463f9e90199910160405180910390a150565b6040516312d9a6ad60e01b8152600080516020615be483398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015611c4c57600080fd5b505afa158015611c60573d6000803e3d6000fd5b5050505061103a61357c565b6040516312d9a6ad60e01b81527fa23b11d346b90fc279e0a917152caf41f3c1247b12211b7cbc0e0e3f8b794057600482018190523360248301526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906312d9a6ad9060440160006040518083038186803b158015611cf657600080fd5b505afa158015611d0a573d6000803e3d6000fd5b5050505060d054831115611d1e5760d05492505b60008311611d6e5760405162461bcd60e51b815260206004820152601760248201527f4e6f207072656d69756d7320746f2077697468647261770000000000000000006044820152606401610838565b8260d06000828254611d809190615a7d565b92505081905550611e217f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015611de357600080fd5b505afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b919061542c565b846135d4565b6040805160008152602081018590527fd60d524f1cae273480bb0a4ddfb992b6ac0b61c8e12ffbe2e4e31463f9e90199910160405180910390a15090919050565b60335460ff1615611e855760405162461bcd60e51b81526004016108389061585d565b42611e9861018083016101608401615733565b64ffffffffff161115611ee65760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610838565b61103a611ef836839003830183615633565b6000600161284d565b60335460ff1615611f245760405162461bcd60e51b81526004016108389061585d565b61086c611f3636849003840184615633565b82600061284d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9757600080fd5b505afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf919061542c565b6001600160a01b0316336001600160a01b0316146120405760405162461bcd60e51b815260206004820152602860248201527f4f6e6c792061737365744d616e616765722063616e2063616c6c207468697320604482015267333ab731ba34b7b760c11b6064820152608401610838565b60335460ff16156120635760405162461bcd60e51b81526004016108389061585d565b80156120725761086c82613517565b61207b82612ed4565b505050565b6000808061208f60c985613241565b909250905060008160038111156120a8576120a8615b17565b146120b4575092915050565b5060009392505050565b6040516312d9a6ad60e01b8152600080516020615b9d83398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561213457600080fd5b505afa158015612148573d6000803e3d6000fd5b50505050600a61215860c9612e7a565b106121af5760405162461bcd60e51b815260206004820152602160248201527f4d6178696d756d206e756d626572206f662045546f6b656e73207265616368656044820152601960fa1b6064820152608401610838565b6121ba60c983613980565b156122075760405162461bcd60e51b815260206004820152601a60248201527f65546f6b656e20616c726561647920696e2074686520706f6f6c0000000000006044820152606401610838565b6001600160a01b0382166122545760405162461bcd60e51b815260206004820152601460248201527365546f6b656e2063616e2774206265207a65726f60601b6044820152606401610838565b306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b15801561229757600080fd5b505afa1580156122ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cf919061542c565b6001600160a01b0316146123255760405162461bcd60e51b815260206004820152601e60248201527f45546f6b656e206e6f74206c696e6b656420746f207468697320706f6f6c00006044820152606401610838565b61233260c983600161398c565b50816001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c60016040516119e0919061576a565b600080805b61237c60c9612e7a565b81101561242457600061239060c983613241565b509050806001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123cc57600080fd5b505afa1580156123e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612404919061550e565b61240e9084615a24565b925050808061241c90615ae6565b915050612372565b50919050565b6000610d3560c983613224565b600082815260cd60205260408120819061245190846139b2565b915091505b9250929050565b6000610d9c60c9612e7a565b600061247760335460ff1690565b156124945760405162461bcd60e51b81526004016108389061585d565b6000806124a260c986612ea1565b915091508180156124df575060018160038111156124c2576124c2615b17565b14806124df575060028160038111156124dd576124dd615b17565b145b61253d5760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b6064820152608401610838565b60405163f3fef3a360e01b8152336004820181905260248201869052906000906001600160a01b0388169063f3fef3a390604401602060405180830381600087803b15801561258b57600080fd5b505af115801561259f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c3919061550e565b905080156125d5576125d582826135d4565b9695505050505050565b60405163c5b8f5cf60e01b8152600080516020615be483398151915260048201819052600080516020615b9d8339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561266c57600080fd5b505afa158015612680573d6000803e3d6000fd5b505050506126988460c961398090919063ffffffff16565b6126dc5760405162461bcd60e51b8152602060048201526015602482015274149a5cdac8135bd91d5b19481b9bdd08199bdd5b99605a1b6044820152606401610838565b60038360038111156126f0576126f0615b17565b1415806127a35750604051632474521560e21b8152600080516020615be483398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b15801561276b57600080fd5b505afa15801561277f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a391906154f1565b6127f95760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e642065546f6b656e6044820152607360f81b6064820152608401610838565b61280560c9858561398c565b50836001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c8460405161283f919061576a565b60405180910390a250505050565b612856836139c1565b610120830151818061287057506001600160a01b03811633145b6128bc5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c69636965736044820152606401610838565b8215806128d457504284610160015164ffffffffff16115b6129205760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610838565b6040516310f199ef60e31b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063878ccf789060240160006040518083038186803b15801561298157600080fd5b505afa158015612995573d6000803e3d6000fd5b5050505083602001518311156129e65760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610838565b600080841190508460a0015160ce6000828254612a039190615a7d565b909155506000905080612a17878488613a27565b915091508215612af0576000612a2d8884613b81565b90507f0000000000000000000000000000000000000000000000000000000000000000811115612a6357612a6081613d8d565b90505b7f0000000000000000000000000000000000000000000000000000000000000000811115612aea5760405162461bcd60e51b815260206004820152602e60248201527f446f6e2774206b6e6f7720776865726520746f2074616b65207468652072657360448201526d74206f6620746865206d6f6e657960901b6064820152608401610838565b50612afd565b612afa8782613eac565b90505b612b0681613517565b6060870151604051634e5de6c960e11b815260048101919091526001600160a01b03851690639cbbcd9290602401600060405180830381600087803b158015612b4e57600080fd5b505af1158015612b62573d6000803e3d6000fd5b5050505086600001518761012001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e88604051612bab91815260200190565b60405180910390a38651600090815260cc602090815260408083208390558951835260cd909152812090818181818181612be582826152ff565b50505050505050506000861115612c07578651612c02908761418e565b612c12565b8651612c129061438c565b50505050505050565b600081604051602001612c2e9190615920565b604051602081830303815290604052805190602001209050919050565b8051600090815260cd60205260408120815b612c6760c9612e7a565b811015612df057600080612c7c60c984613241565b90925090506001816003811115612c9557612c95615b17565b14612ca1575050612dde565b610120860151610160870151604051630cd21c5560e21b81526001600160a01b03928316600482015264ffffffffff90911660248201529083169063334871549060440160206040518083038186803b158015612cfd57600080fd5b505afa158015612d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3591906154f1565b612d40575050612dde565b6000826001600160a01b031663e5ae143f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d7b57600080fd5b505afa158015612d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db3919061550e565b905080612dc257505050612dde565b612dcc8187615a24565b9550612dd98584836144d2565b505050505b80612de881615ae6565b915050612c5d565b5061207b8360600151612e02856144df565b8484614539565b6040516001600160a01b0380851660248301528316604482015260648101829052612e749085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261468c565b50505050565b6000610d358261475e565b6000808080612e948686614769565b9097909650945050505050565b6000808080612eb08686614769565b9150915081816003811115612ec757612ec7615b17565b9350935050509250929050565b600060d0548211612efe578160d06000828254612ef19190615a7d565b9091555060009392505050565b60d05415612f1b5760d054612f139083615a7d565b600060d05591505b60cf5460ce541115612f725760cf5460ce54612f379190615a7d565b8211612f4f578160cf6000828254612ef19190615a24565b60cf5460ce54612f5f9190615a7d565b612f699083615a7d565b60ce5460cf5591505b5090565b60405163c5b8f5cf60e01b8152600080516020615be483398151915260048201819052600080516020615b9d8339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561300357600080fd5b505afa158015612c12573d6000803e3d6000fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561304a5761207b836147ac565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561308357600080fd5b505afa9250505080156130b3575060408051601f3d908101601f191682019092526130b09181019061550e565b60015b6131165760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610838565b600080516020615b7d83398151915281146131855760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610838565b5061207b838383614848565b60335460ff166131da5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610838565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000613230838361486d565b6003811115610d1757610d17615b17565b6000808080612eb086866148e7565b600054610100900460ff166132775760405162461bcd60e51b8152600401610838906158d5565b565b600054610100900460ff166132a05760405162461bcd60e51b8152600401610838906158d5565b61327761491c565b600054610100900460ff166132c35760005460ff16156132c7565b303b155b6132e35760405162461bcd60e51b815260040161083890615887565b600054610100900460ff16158015613305576000805461ffff19166101011790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561336057600080fd5b505af1158015613374573d6000803e3d6000fd5b5050505060006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b1580156133dc57600080fd5b505afa1580156133f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613414919061542c565b6001600160a01b0316146134905760405162461bcd60e51b815260206004820152603a60248201527f41737365744d616e616765722063616e277420626520736574206265666f726560448201527f20506f6c696379506f6f6c20696e697469616c697a6174696f6e0000000000006064820152608401610838565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156134eb57600080fd5b505af11580156134ff573d6000803e3d6000fd5b50505050801561103a576000805461ff001916905550565b8061351f5750565b8060cf5410613545578060cf600082825461353a9190615a7d565b9091555061103a9050565b60cf54156135625760cf5461355a9082615a7d565b600060cf5590505b8060d060008282546135749190615a24565b909155505050565b60335460ff161561359f5760405162461bcd60e51b81526004016108389061585d565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586132073390565b806135dd575050565b60006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b15801561364157600080fd5b505afa158015613655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613679919061542c565b6001600160a01b03161415801561369657508061369461494f565b105b1561378c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166394217ad16040518163ffffffff1660e01b815260040160206040518083038186803b1580156136f457600080fd5b505afa158015613708573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372c919061542c565b6001600160a01b0316631014a0c2826040518263ffffffff1660e01b815260040161375991815260200190565b600060405180830381600087803b15801561377357600080fd5b505af1158015613787573d6000803e3d6000fd5b505050505b60006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631455cd286040518163ffffffff1660e01b815260040160206040518083038186803b1580156137f057600080fd5b505afa158015613804573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613828919061542c565b6001600160a01b03161415801561384557508061384361494f565b105b1561394c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631455cd286040518163ffffffff1660e01b815260040160206040518083038186803b1580156138a357600080fd5b505afa1580156138b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138db919061542c565b6001600160a01b031663ee842dda6138f161494f565b6138fb9084615a7d565b6040518263ffffffff1660e01b815260040161391991815260200190565b600060405180830381600087803b15801561393357600080fd5b505af1158015613947573d6000803e3d6000fd5b505050505b61086c6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683836149e9565b6000610d178383614a19565b60006139aa84848460038111156139a5576139a5615b17565b614a25565b949350505050565b6000808080612e9486866148e7565b8051158015906139e857508051600090815260cc60205260409020546139e682612c1b565b145b61103a5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610838565b60008060008060008615613b215787516040516331a9108f60e11b8152613adf916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636352211e91613a899160040190815260200190565b60206040518083038186803b158015613aa157600080fd5b505afa158015613ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ad9919061542c565b876135d4565b858860a001511115613b0257858860a00151613afb9190615a7d565b9150613b74565b613b1a8860a0015187613b159190615a7d565b612ed4565b9250613b74565b8760a00151915060ce5460cf541115613b7457613b4d60ce5460cf54613b479190615a7d565b83614a4c565b90508060cf6000828254613b619190615a7d565b90915550613b7190508183615a7d565b91505b5090969095509350505050565b60008080613b8e856144df565b9050600080613b9c87614a5b565b8851600090815260cd602052604081209294509092505b613bbc82612e7a565b811015613d8057600080613bd084846139b2565b604051634438bcbb60e01b8152600481018a90526024810182905291935091506001600160a01b03831690634438bcbb90604401600060405180830381600087803b158015613c1e57600080fd5b505af1158015613c32573d6000803e3d6000fd5b50505060608c0151613c4691508290614aa7565b90506001600160a01b03821663aa69d74b613c618784614ba7565b6040516001600160e01b031960e084901b16815260048101919091528815156024820152604401600060405180830381600087803b158015613ca257600080fd5b505af1158015613cb6573d6000803e3d6000fd5b5050505060008a1115613d6b576000613ccf8b83614ba7565b604051630c1ceca560e21b815260048101829052600160248201529091506001600160a01b03841690633073b29490604401602060405180830381600087803b158015613d1b57600080fd5b505af1158015613d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d53919061550e565b613d5d9082615a7d565b613d67908a615a24565b9850505b50508080613d7890615ae6565b915050613bb3565b5093979650505050505050565b6000805b613d9b60c9612e7a565b811015613ea557600080613db060c984613241565b90925090506001816003811115613dc957613dc9615b17565b14613dd5575050613e93565b604051630c1ceca560e21b815260048101869052600060248201526001600160a01b03831690633073b29490604401602060405180830381600087803b158015613e1e57600080fd5b505af1158015613e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e56919061550e565b613e609086615a7d565b94507f00000000000000000000000000000000000000000000000000000000000000008511613e90575050613ea5565b50505b80613e9d81615ae6565b915050613d91565b5090919050565b600080613eb8846144df565b9050600080613ec686614a5b565b8751600090815260cd602052604081209294509092505b613ee682612e7a565b81101561418257600080613efa84846139b2565b604051634438bcbb60e01b8152600481018a90526024810182905291935091506001600160a01b03831690634438bcbb90604401600060405180830381600087803b158015613f4857600080fd5b505af1158015613f5c573d6000803e3d6000fd5b50505060608b0151613f7091508290614aa7565b90506001600160a01b03821663aa69d74b613f8b8784614ba7565b6040516001600160e01b031960e084901b16815260048101919091528815156024820152604401600060405180830381600087803b158015613fcc57600080fd5b505af1158015613fe0573d6000803e3d6000fd5b5050505060008911801561406457506000826001600160a01b03166352a2783b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561402a57600080fd5b505afa15801561403e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614062919061550e565b115b1561416d5760a08a015160009061407b9083614ba7565b90506141008a6140fb856001600160a01b03166352a2783b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156140bd57600080fd5b505afa1580156140d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140f5919061550e565b84614a4c565b614a4c565b604051631c0f4f8160e01b8152600481018290529091506001600160a01b03841690631c0f4f8190602401600060405180830381600087803b15801561414557600080fd5b505af1158015614159573d6000803e3d6000fd5b50505050808a6141699190615a7d565b9950505b5050808061417a90615ae6565b915050613edd565b50949695505050505050565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b1580156141f157600080fd5b505afa158015614205573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614229919061542c565b90506001600160a01b0381163b61423f57505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044810186905260648101859052608401602060405180830381600087803b1580156142a457600080fd5b505af19250505080156142d4575060408051601f3d908101601f191682019092526142d191810190615527565b60015b61431c573d808015614302576040519150601f19603f3d011682016040523d82523d6000602084013e614307565b606091505b5080516143145750505050565b805181602001fd5b6001600160e01b03198116636b140e9f60e11b14612e745760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b6064820152608401610838565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b1580156143ef57600080fd5b505afa158015614403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614427919061542c565b90506001600160a01b0381163b61443c575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401602060405180830381600087803b15801561449a57600080fd5b505af19250505080156144ca575060408051601f3d908101601f191682019092526144c791810190615527565b60015b61207b575050565b60006139aa848484614a25565b6000610d3561453483606001518461014001518561016001516145029190615a94565b64ffffffffff166145139190615a5e565b61010085015161452e906a1a1601fc4ea7109e000000614ba7565b90614aa7565b614c78565b838210156145975760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f75676874206f6365616e20746f20636f7665722074686520706044820152646f6c69637960d81b6064820152608401610838565b8360005b6145a483612e7a565b81101561468457600080806145b986856139b2565b9150915060016145c887612e7a565b6145d29190615a7d565b8410156145ee576145e78761452e8b84614ba7565b92506145f2565b8492505b60405163837c83a360e01b815260048101899052602481018490526001600160a01b0383169063837c83a390604401600060405180830381600087803b15801561463b57600080fd5b505af115801561464f573d6000803e3d6000fd5b506146619250889150849050856144d2565b5061466c8386615a7d565b9450505050808061467c90615ae6565b91505061459b565b505050505050565b60006146e1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614cf69092919063ffffffff16565b80519091501561207b57808060200190518101906146ff91906154f1565b61207b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610838565b6000610d3582614d05565b6001600160a01b03811660009081526002830160205260408120548190806147a1576147958585614a19565b60009250925050612456565b600192509050612456565b6001600160a01b0381163b6148195760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610838565b600080516020615b7d83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61485183614d0f565b60008251118061485e5750805b1561207b57612e748383614d4f565b6001600160a01b03811660009081526002830160205260408120548015158061489b575061489b8484614a19565b610d175760405162461bcd60e51b815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610838565b600080806148f58585614e43565b6001600160a01b038116600090815260029690960160205260409095205494959350505050565b600054610100900460ff166149435760405162461bcd60e51b8152600401610838906158d5565b6033805460ff19169055565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156149b157600080fd5b505afa1580156149c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c919061550e565b6040516001600160a01b03831660248201526044810182905261207b90849063a9059cbb60e01b90606401612e3d565b6000610d178383614e4f565b6001600160a01b038216600090815260028401602052604081208290556139aa8484614e71565b6000818310613ea55781610d17565b6000806000614a6984614e86565b90508084610100015110614a9457600181856101000151614a8a9190615a7d565b9250925050915091565b600084610100015182614a8a9190615a7d565b600081614af65760405162461bcd60e51b815260206004820152601860248201527f7761644469763a204469766973696f6e206279207a65726f00000000000000006044820152606401610838565b6000614b03600284615a3c565b9050670de0b6b3a7640000614b1a82600019615a7d565b614b249190615a3c565b841115614b7f5760405162461bcd60e51b8152602060048201526024808201527f7761644469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610838565b8281614b93670de0b6b3a764000087615a5e565b614b9d9190615a24565b6139aa9190615a3c565b6000821580614bb4575081155b15614bc157506000610d35565b81614bd56002670de0b6b3a7640000615a3c565b614be190600019615a7d565b614beb9190615a3c565b831115614c465760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610838565b670de0b6b3a7640000614c5a600282615a3c565b614c648486615a5e565b614c6e9190615a24565b610d179190615a3c565b600080614c89633b9aca0084615a5e565b905082614c9a633b9aca0083615a3c565b14610d355760405162461bcd60e51b815260206004820152602660248201527f776164546f5261643a204d617468204d756c7469706c69636174696f6e204f766044820152656572666c6f7760d01b6064820152608401610838565b60606139aa8484600085614eed565b6000610d35825490565b614d18816147ac565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b614db75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610838565b600080846001600160a01b031684604051614dd2919061574e565b600060405180830381855af49150503d8060008114614e0d576040519150601f19603f3d011682016040523d82523d6000602084013e614e12565b606091505b5091509150614e3a8282604051806060016040528060278152602001615bbd6027913961501e565b95945050505050565b6000610d178383615057565b6001600160a01b03811660009081526001830160205260408120541515610d17565b6000610d17836001600160a01b038416615081565b60008082610140015164ffffffffff1642614ea19190615a7d565b9050610d17614ee86e0612d847b578e7643c28ac00000000614ee2614ec5876144df565b614ecf9086615a5e565b614edc8860600151614c78565b906150d0565b9061518b565b61527f565b606082471015614f4e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610838565b6001600160a01b0385163b614fa55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610838565b600080866001600160a01b03168587604051614fc1919061574e565b60006040518083038185875af1925050503d8060008114614ffe576040519150601f19603f3d011682016040523d82523d6000602084013e615003565b606091505b509150915061501382828661501e565b979650505050505050565b6060831561502d575081610d17565b82511561503d5782518084602001fd5b8160405162461bcd60e51b81526004016108389190615792565b600082600001828154811061506e5761506e615b2d565b9060005260206000200154905092915050565b60008181526001830160205260408120546150c857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d35565b506000610d35565b60008215806150dd575081155b156150ea57506000610d35565b8161510260026b033b2e3c9fd0803ce8000000615a3c565b61510e90600019615a7d565b6151189190615a3c565b8311156151735760405162461bcd60e51b8152602060048201526024808201527f7261794d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610838565b6b033b2e3c9fd0803ce8000000614c5a600282615a3c565b6000816151da5760405162461bcd60e51b815260206004820152601860248201527f7261794469763a204469766973696f6e206279207a65726f00000000000000006044820152606401610838565b60006151e7600284615a3c565b90506b033b2e3c9fd0803ce800000061520282600019615a7d565b61520c9190615a3c565b8411156152675760405162461bcd60e51b8152602060048201526024808201527f7261794469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b6064820152608401610838565b8281614b936b033b2e3c9fd0803ce800000087615a5e565b6000806152916002633b9aca00615a3c565b9050600061529f8483615a24565b9050818110156152f15760405162461bcd60e51b815260206004820181905260248201527f726179546f5761643a204d617468204164646974696f6e204f766572666c6f776044820152606401610838565b6139aa633b9aca0082615a3c565b508054600082559060005260206000209081019061103a91905b80821115612f725760008155600101615319565b8035610f5881615b59565b6000610180828403121561242457600080fd5b6000610180828403121561535e57600080fd5b6153666159c9565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101206153cc81840161532d565b908201526101406153de8382016153fa565b908201526101606153f08382016153fa565b9082015292915050565b803564ffffffffff81168114610f5857600080fd5b60006020828403121561542157600080fd5b8135610d1781615b59565b60006020828403121561543e57600080fd5b8151610d1781615b59565b6000806040838503121561545c57600080fd5b823561546781615b59565b915060208381013567ffffffffffffffff8082111561548557600080fd5b818601915086601f83011261549957600080fd5b8135818111156154ab576154ab615b43565b6154bd601f8201601f191685016159f3565b915080825287848285010111156154d357600080fd5b80848401858401376000848284010152508093505050509250929050565b60006020828403121561550357600080fd5b8151610d1781615b6e565b60006020828403121561552057600080fd5b5051919050565b60006020828403121561553957600080fd5b81516001600160e01b031981168114610d1757600080fd5b6000806040838503121561556457600080fd5b823561556f81615b59565b915060208301356004811061558357600080fd5b809150509250929050565b600080604083850312156155a157600080fd5b82356155ac81615b59565b946020939093013593505050565b600061018082840312156155cd57600080fd5b610d178383615338565b6000806101a083850312156155eb57600080fd5b6155f58484615338565b915061018083013561558381615b6e565b6000806101a0838503121561561a57600080fd5b6156248484615338565b94610180939093013593505050565b6000610180828403121561564657600080fd5b610d17838361534b565b60008060006101c0848603121561566657600080fd5b615670858561534b565b925061018084013561568181615b59565b91506101a08401356bffffffffffffffffffffffff811681146156a357600080fd5b809150509250925092565b6000602082840312156156c057600080fd5b5035919050565b600080604083850312156156da57600080fd5b82359150602083013561558381615b6e565b600080604083850312156156ff57600080fd5b82359150602083013561558381615b59565b6000806040838503121561572457600080fd5b50508035926020909101359150565b60006020828403121561574557600080fd5b610d17826153fa565b60008251615760818460208701615aba565b9190910192915050565b602081016004831061578c57634e487b7160e01b600052602160045260246000fd5b91905290565b60208152600082518060208401526157b1816040850160208701615aba565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600061018082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015161599a828501826001600160a01b03169052565b50506101408381015164ffffffffff81168483015250506101608381015164ffffffffff811684830152610d75565b604051610180810167ffffffffffffffff811182821017156159ed576159ed615b43565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715615a1c57615a1c615b43565b604052919050565b60008219821115615a3757615a37615b01565b500190565b600082615a5957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615a7857615a78615b01565b500290565b600082821015615a8f57615a8f615b01565b500390565b600064ffffffffff83811690831681811015615ab257615ab2615b01565b039392505050565b60005b83811015615ad5578181015183820152602001615abd565b83811115612e745750506000910152565b6000600019821415615afa57615afa615b01565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461103a57600080fd5b801515811461103a57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212201ab6e71ff190983488c431c6d49fae9407654bb5c8a6e8bcf67e91fcdba541c164736f6c63430008060033",
919
+ "bytecode": "0x6101006040523060601b6080523480156200001957600080fd5b5060405162003b5938038062003b598339810160408190526200003c9162000064565b6001600160601b0319606093841b811660a05291831b821660e05290911b1660c052620000d1565b6000806000606084860312156200007a57600080fd5b83516200008781620000b8565b60208501519093506200009a81620000b8565b6040850151909250620000ad81620000b8565b809150509250925092565b6001600160a01b0381168114620000ce57600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c613985620001d4600039600081816103ca0152818161139e01528181612391015281816127ec01528181612b670152612d650152600081816104630152818161072c01528181611411015281816114cb015281816115830152818161164f01526117980152600081816103190152818161063d015281816108d301528181610d62015281816110ff015281816111fc015281816115b10152818161183b01528181611c1a01528181611d2901528181611f01015281816122c501526127790152600081816105140152818161055d015281816107e5015281816108250152610c7e01526139856000f3fe6080604052600436106101665760003560e01c806379502c55116100d1578063b63d382e1161008a578063f3fef3a311610064578063f3fef3a314610487578063f67b2bad146104a7578063fcbb17fe146104c9578063ffa600e3146104e957600080fd5b8063b63d382e146103ee578063ca143d181461040e578063e5a6b10f1461045457600080fd5b806379502c551461030a5780637a702b3c146103515780638129fc1c146103715780638456cb5914610386578063917876601461039b578063af02808a146103bb57600080fd5b806352bab1941161012357806352bab1941461023e57806352d1902d1461025e5780635b494dd5146102735780635c975abb146102a757806365b71008146102ca5780636af6f1ef146102ea57600080fd5b806324ea54f41461016b5780633659cfe6146101a05780633f4ba83a146101c257806347e7ef24146101d75780634a47a3e0146101f75780634f1ef2861461022b575b600080fd5b34801561017757600080fd5b5061018d60008051602061393083398151915281565b6040519081526020015b60405180910390f35b3480156101ac57600080fd5b506101c06101bb366004613276565b610509565b005b3480156101ce57600080fd5b506101c06105f2565b3480156101e357600080fd5b506101c06101f23660046133f5565b6106a3565b34801561020357600080fd5b5061018d7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6101c06102393660046132b0565b6107da565b34801561024a57600080fd5b506101c0610259366004613276565b6108a7565b34801561026a57600080fd5b5061018d610c71565b34801561027f57600080fd5b5061018d7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102b357600080fd5b5060335460ff166040519015158152602001610197565b3480156102d657600080fd5b506101c06102e5366004613276565b610d24565b3480156102f657600080fd5b506101c0610305366004613421565b610f53565b34801561031657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610197565b34801561035d57600080fd5b506101c061036c36600461346d565b610fd7565b34801561037d57600080fd5b506101c0610ff9565b34801561039257600080fd5b506101c06110d3565b3480156103a757600080fd5b5061018d6103b63660046134b7565b611169565b3480156103c757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610339565b3480156103fa57600080fd5b506101c0610409366004613276565b61180f565b34801561041a57600080fd5b50610447610429366004613276565b6001600160a01b0316600090815260c9602052604090205460ff1690565b6040516101979190613631565b34801561046057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610339565b34801561049357600080fd5b5061018d6104a23660046133f5565b611a8c565b3480156104b357600080fd5b5061018d6000805160206138e983398151915281565b3480156104d557600080fd5b506101c06104e43660046133b8565b611bcf565b3480156104f557600080fd5b506101c061050436600461343e565b611e83565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561055b5760405162461bcd60e51b81526004016105529061368c565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105a46000805160206138c9833981519152546001600160a01b031690565b6001600160a01b0316146105ca5760405162461bcd60e51b8152600401610552906136d8565b6105d381611eb6565b604080516000808252602082019092526105ef91839190611f60565b50565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561067f57600080fd5b505afa158015610693573d6000803e3d6000fd5b5050505061069f6120df565b5050565b6106ab612131565b6001600160a01b038216600090815260c9602052604090205460ff1660018160038111156106db576106db613879565b1461071f5760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610552565b6107546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338585612179565b6040516311f9fbc960e21b8152336004820152602481018390526001600160a01b038416906347e7ef2490604401602060405180830381600087803b15801561079c57600080fd5b505af11580156107b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d49190613375565b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108235760405162461bcd60e51b81526004016105529061368c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661086c6000805160206138c9833981519152546001600160a01b031690565b6001600160a01b0316146108925760405162461bcd60e51b8152600401610552906136d8565b61089b82611eb6565b61069f82826001611f60565b6040516312d9a6ad60e01b81526000805160206138e983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561091d57600080fd5b505afa158015610931573d6000803e3d6000fd5b505050506001600160a01b03821661098b5760405162461bcd60e51b815260206004820152601d60248201527f5072656d69756d734163636f756e742063616e2774206265207a65726f0000006044820152606401610552565b306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ce57600080fd5b505afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190613293565b6001600160a01b031614610a6c5760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f74206c696e6b656420746f2074686044820152661a5cc81c1bdbdb60ca1b6064820152608401610552565b6000826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf9190613293565b90506001600160a01b03811615610b4c576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050505b826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8557600080fd5b505afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190613293565b90506001600160a01b03811615610c2a576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050505b826001600160a01b03167f834362a634fb37104727a80cf5e936b5b1798edffcf4a89935f19d04eb0e88ec6001604051610c649190613631565b60405180910390a2505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d115760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610552565b506000805160206138c983398151915290565b6040516312d9a6ad60e01b81527f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2760048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015610dac57600080fd5b505afa158015610dc0573d6000803e3d6000fd5b505050506001600160a01b038216600090815260c9602052604090205460ff166002816003811115610df457610df4613879565b14610e395760405162461bcd60e51b815260206004820152601560248201527411551bdad95b881b9bdd0819195c1c9958d85d1959605a1b6044820152606401610552565b826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7257600080fd5b505afa158015610e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaa9190613375565b15610f065760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b6064820152608401610552565b6001600160a01b038316600081815260c96020526040808220805460ff19169055517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610c6491613631565b610f5b612131565b42610f6e6101c083016101a08401613515565b64ffffffffff161115610fbc5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610552565b6105ef610fce3683900383018361349a565b600060016121d3565b610fdf612131565b61069f610ff13684900384018461349a565b8260006121d3565b600054610100900460ff16158080156110195750600054600160ff909116105b806110335750303b158015611033575060005460ff166001145b61104f5760405162461bcd60e51b815260040161055290613724565b6000805460ff191660011790558015611072576000805461ff0019166101001790555b61107a6126a8565b6110826126cf565b61108a6126fe565b80156105ef576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6040516312d9a6ad60e01b815260008051602061393083398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561114957600080fd5b505afa15801561115d573d6000803e3d6000fd5b505050506105ef61289f565b6000611173612131565b6101608401516001600160a01b03811633146111dd5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b6064820152608401610552565b604051635dfdc5d760e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063bbfb8bae9060240160006040518083038186803b15801561123e57600080fd5b505afa158015611252573d6000803e3d6000fd5b50505050826bffffffffffffffffffffffff166060826001600160a01b0316901b61127d9190613827565b8552611288856128dc565b60ca600087600001518152602001908152602001600020819055506000816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156112de57600080fd5b505afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190613293565b60405163e3638ea360e01b81529091506001600160a01b0382169063e3638ea3906113459089906004016137bd565b600060405180830381600087803b15801561135f57600080fd5b505af1158015611373573d6000803e3d6000fd5b50508751604051632851206560e21b81526001600160a01b03898116600483015260248201929092527f0000000000000000000000000000000000000000000000000000000000000000909116925063a14481949150604401600060405180830381600087803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505060c087015161143b91506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169087908490612179565b610140860151156114f3576114f385826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148357600080fd5b505afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190613293565b6101408901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b610120860151156115ab576115ab85826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153b57600080fd5b505afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115739190613293565b6101208901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b611677857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190613293565b60e08901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b600086610100015111801561170e5750816001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f89190613293565b6001600160a01b0316856001600160a01b031614155b156117c0576117c085836001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b15801561175057600080fd5b505afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117889190613293565b6101008901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b876040516117f991906137bd565b60405180910390a25050835190505b9392505050565b6040516312d9a6ad60e01b81526000805160206138e983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b5050506001600160a01b038316600090815260c9602052604081205460ff1691508160038111156118cc576118cc613879565b146119195760405162461bcd60e51b815260206004820152601a60248201527f65546f6b656e20616c726561647920696e2074686520706f6f6c0000000000006044820152606401610552565b6001600160a01b0383166119665760405162461bcd60e51b815260206004820152601460248201527365546f6b656e2063616e2774206265207a65726f60601b6044820152606401610552565b306001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e19190613293565b6001600160a01b031614611a375760405162461bcd60e51b815260206004820152601e60248201527f45546f6b656e206e6f74206c696e6b656420746f207468697320706f6f6c00006044820152606401610552565b6001600160a01b038316600081815260c9602052604090819020805460ff1916600190811790915590517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610c6491613631565b6000611a96612131565b6001600160a01b038316600090815260c9602052604090205460ff166001816003811115611ac657611ac6613879565b1480611ae357506002816003811115611ae157611ae1613879565b145b611b415760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b6064820152608401610552565b60405163f3fef3a360e01b8152336004820181905260248201859052906001600160a01b0386169063f3fef3a390604401602060405180830381600087803b158015611b8c57600080fd5b505af1158015611ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc49190613375565b925050505b92915050565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015611c5c57600080fd5b505afa158015611c70573d6000803e3d6000fd5b5050506001600160a01b038516600090815260c9602052604081205460ff169150816003811115611ca357611ca3613879565b1415611ce45760405162461bcd60e51b815260206004820152601060248201526f11551bdad95b881b9bdd08199bdd5b9960821b6044820152606401610552565b6003846003811115611cf857611cf8613879565b141580611dab5750604051632474521560e21b815260008051602061393083398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b158015611d7357600080fd5b505afa158015611d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dab9190613358565b611e015760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e642065546f6b656e6044820152607360f81b6064820152608401610552565b6001600160a01b038516600090815260c960205260409020805485919060ff19166001836003811115611e3657611e36613879565b0217905550846001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c85604051611e749190613631565b60405180910390a25050505050565b611e8b612131565b61069f611e9d3684900384018461349a565b82611ea9576000611eaf565b83602001355b60006121d3565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015611f4357600080fd5b505afa158015611f57573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611f9857611f938361290c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd157600080fd5b505afa925050508015612001575060408051601f3d908101601f19168201909252611ffe91810190613375565b60015b6120645760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610552565b6000805160206138c983398151915281146120d35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610552565b50611f938383836129a8565b6120e76129cd565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff16156121775760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610552565b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526107d4908590612a16565b6121dc83612ae8565b61016083015181806121f657506001600160a01b03811633145b6122425760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c69636965736044820152606401610552565b82158061225a575042846101a0015164ffffffffff16115b6122a65760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610552565b6040516310f199ef60e31b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063878ccf789060240160006040518083038186803b15801561230757600080fd5b505afa15801561231b573d6000803e3d6000fd5b50505050836020015183111561236c5760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610552565b82158015906124f25784516040516331a9108f60e11b81526000916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636352211e916123c89160040190815260200190565b60206040518083038186803b1580156123e057600080fd5b505afa1580156123f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124189190613293565b9050826001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561245357600080fd5b505afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190613293565b6001600160a01b0316639d8c5ee78288886040518463ffffffff1660e01b81526004016124ba93929190613604565b600060405180830381600087803b1580156124d457600080fd5b505af11580156124e8573d6000803e3d6000fd5b50505050506125c1565b816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561252b57600080fd5b505afa15801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190613293565b6001600160a01b031663c7a9c70d866040518263ffffffff1660e01b815260040161258e91906137bd565b600060405180830381600087803b1580156125a857600080fd5b505af11580156125bc573d6000803e3d6000fd5b505050505b6020850151604051636a448ef160e01b815260048101919091526001600160a01b03831690636a448ef190602401600060405180830381600087803b15801561260957600080fd5b505af115801561261d573d6000803e3d6000fd5b5050505084600001518561016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e8660405161266691815260200190565b60405180910390a38451600090815260ca602052604081205583156126965784516126919085612b4e565b6126a1565b84516126a190612d4c565b5050505050565b600054610100900460ff166121775760405162461bcd60e51b815260040161055290613772565b600054610100900460ff166126f65760405162461bcd60e51b815260040161055290613772565b612177612e92565b600054610100900460ff161580801561271e5750600054600160ff909116105b806127385750303b158015612738575060005460ff166001145b6127545760405162461bcd60e51b815260040161055290613724565b6000805460ff191660011790558015612777576000805461ff0019166101001790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127d257600080fd5b505af11580156127e6573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b5050505080156105ef576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016110c8565b6128a7612131565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121143390565b6000816040516020016128ef91906137bd565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381163b6129795760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610552565b6000805160206138c983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6129b183612ec5565b6000825111806129be5750805b15611f93576107d48383612f05565b60335460ff166121775760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610552565b6000612a6b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ff09092919063ffffffff16565b805190915015611f935780806020019051810190612a899190613358565b611f935760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610552565b805115801590612b0f57508051600090815260ca6020526040902054612b0d826128dc565b145b6105ef5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610552565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b158015612bb157600080fd5b505afa158015612bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be99190613293565b90506001600160a01b0381163b612bff57505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044810186905260648101859052608401602060405180830381600087803b158015612c6457600080fd5b505af1925050508015612c94575060408051601f3d908101601f19168201909252612c919181019061338e565b60015b612cdc573d808015612cc2576040519150601f19603f3d011682016040523d82523d6000602084013e612cc7565b606091505b508051612cd45750505050565b805181602001fd5b6001600160e01b03198116636b140e9f60e11b146107d45760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b6064820152608401610552565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b158015612daf57600080fd5b505afa158015612dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de79190613293565b90506001600160a01b0381163b612dfc575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401602060405180830381600087803b158015612e5a57600080fd5b505af1925050508015612e8a575060408051601f3d908101601f19168201909252612e879181019061338e565b60015b611f93575050565b600054610100900460ff16612eb95760405162461bcd60e51b815260040161055290613772565b6033805460ff19169055565b612ece8161290c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b612f6d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610552565b600080846001600160a01b031684604051612f8891906135e8565b600060405180830381855af49150503d8060008114612fc3576040519150601f19603f3d011682016040523d82523d6000602084013e612fc8565b606091505b5091509150611bc4828260405180606001604052806027815260200161390960279139613007565b6060612fff8484600085613040565b949350505050565b60608315613016575081611808565b8251156130265782518084602001fd5b8160405162461bcd60e51b81526004016105529190613659565b6060824710156130a15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610552565b6001600160a01b0385163b6130f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610552565b600080866001600160a01b0316858760405161311491906135e8565b60006040518083038185875af1925050503d8060008114613151576040519150601f19603f3d011682016040523d82523d6000602084013e613156565b606091505b5091509150613166828286613007565b979650505050505050565b803561317c816138a5565b919050565b60006101c0828403121561319457600080fd5b50919050565b60006101c082840312156131ad57600080fd5b6131b56137cc565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160613233818401613171565b90820152610180613245838201613261565b908201526101a0613257838201613261565b9082015292915050565b803564ffffffffff8116811461317c57600080fd5b60006020828403121561328857600080fd5b8135611808816138a5565b6000602082840312156132a557600080fd5b8151611808816138a5565b600080604083850312156132c357600080fd5b82356132ce816138a5565b915060208381013567ffffffffffffffff808211156132ec57600080fd5b818601915086601f83011261330057600080fd5b8135818111156133125761331261388f565b613324601f8201601f191685016137f6565b9150808252878482850101111561333a57600080fd5b80848401858401376000848284010152508093505050509250929050565b60006020828403121561336a57600080fd5b8151611808816138ba565b60006020828403121561338757600080fd5b5051919050565b6000602082840312156133a057600080fd5b81516001600160e01b03198116811461180857600080fd5b600080604083850312156133cb57600080fd5b82356133d6816138a5565b91506020830135600481106133ea57600080fd5b809150509250929050565b6000806040838503121561340857600080fd5b8235613413816138a5565b946020939093013593505050565b60006101c0828403121561343457600080fd5b6118088383613181565b6000806101e0838503121561345257600080fd5b61345c8484613181565b91506101c08301356133ea816138ba565b6000806101e0838503121561348157600080fd5b61348b8484613181565b946101c0939093013593505050565b60006101c082840312156134ad57600080fd5b611808838361319a565b600080600061020084860312156134cd57600080fd5b6134d7858561319a565b92506101c08401356134e8816138a5565b91506101e08401356bffffffffffffffffffffffff8116811461350a57600080fd5b809150509250925092565b60006020828403121561352757600080fd5b61180882613261565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516135b9828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff8116848301526107d4565b600082516135fa81846020870161384d565b9190910192915050565b6001600160a01b038416815261020081016136226020830185613530565b826101e0830152949350505050565b602081016004831061365357634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261367881604085016020870161384d565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101c08101611bc98284613530565b6040516101c0810167ffffffffffffffff811182821017156137f0576137f061388f565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561381f5761381f61388f565b604052919050565b6000821982111561384857634e487b7160e01b600052601160045260246000fd5b500190565b60005b83811015613868578181015183820152602001613850565b838111156107d45750506000910152565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146105ef57600080fd5b80151581146105ef57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212204c9dccbb67ddc08482365cdf6de8410e8afedcb1481ee9a3b9e305e0055a743864736f6c63430008060033",
920
+ "deployedBytecode": "0x6080604052600436106101665760003560e01c806379502c55116100d1578063b63d382e1161008a578063f3fef3a311610064578063f3fef3a314610487578063f67b2bad146104a7578063fcbb17fe146104c9578063ffa600e3146104e957600080fd5b8063b63d382e146103ee578063ca143d181461040e578063e5a6b10f1461045457600080fd5b806379502c551461030a5780637a702b3c146103515780638129fc1c146103715780638456cb5914610386578063917876601461039b578063af02808a146103bb57600080fd5b806352bab1941161012357806352bab1941461023e57806352d1902d1461025e5780635b494dd5146102735780635c975abb146102a757806365b71008146102ca5780636af6f1ef146102ea57600080fd5b806324ea54f41461016b5780633659cfe6146101a05780633f4ba83a146101c257806347e7ef24146101d75780634a47a3e0146101f75780634f1ef2861461022b575b600080fd5b34801561017757600080fd5b5061018d60008051602061393083398151915281565b6040519081526020015b60405180910390f35b3480156101ac57600080fd5b506101c06101bb366004613276565b610509565b005b3480156101ce57600080fd5b506101c06105f2565b3480156101e357600080fd5b506101c06101f23660046133f5565b6106a3565b34801561020357600080fd5b5061018d7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6101c06102393660046132b0565b6107da565b34801561024a57600080fd5b506101c0610259366004613276565b6108a7565b34801561026a57600080fd5b5061018d610c71565b34801561027f57600080fd5b5061018d7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102b357600080fd5b5060335460ff166040519015158152602001610197565b3480156102d657600080fd5b506101c06102e5366004613276565b610d24565b3480156102f657600080fd5b506101c0610305366004613421565b610f53565b34801561031657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610197565b34801561035d57600080fd5b506101c061036c36600461346d565b610fd7565b34801561037d57600080fd5b506101c0610ff9565b34801561039257600080fd5b506101c06110d3565b3480156103a757600080fd5b5061018d6103b63660046134b7565b611169565b3480156103c757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610339565b3480156103fa57600080fd5b506101c0610409366004613276565b61180f565b34801561041a57600080fd5b50610447610429366004613276565b6001600160a01b0316600090815260c9602052604090205460ff1690565b6040516101979190613631565b34801561046057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610339565b34801561049357600080fd5b5061018d6104a23660046133f5565b611a8c565b3480156104b357600080fd5b5061018d6000805160206138e983398151915281565b3480156104d557600080fd5b506101c06104e43660046133b8565b611bcf565b3480156104f557600080fd5b506101c061050436600461343e565b611e83565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561055b5760405162461bcd60e51b81526004016105529061368c565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105a46000805160206138c9833981519152546001600160a01b031690565b6001600160a01b0316146105ca5760405162461bcd60e51b8152600401610552906136d8565b6105d381611eb6565b604080516000808252602082019092526105ef91839190611f60565b50565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b15801561067f57600080fd5b505afa158015610693573d6000803e3d6000fd5b5050505061069f6120df565b5050565b6106ab612131565b6001600160a01b038216600090815260c9602052604090205460ff1660018160038111156106db576106db613879565b1461071f5760405162461bcd60e51b815260206004820152601460248201527365546f6b656e206973206e6f742061637469766560601b6044820152606401610552565b6107546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338585612179565b6040516311f9fbc960e21b8152336004820152602481018390526001600160a01b038416906347e7ef2490604401602060405180830381600087803b15801561079c57600080fd5b505af11580156107b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d49190613375565b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108235760405162461bcd60e51b81526004016105529061368c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661086c6000805160206138c9833981519152546001600160a01b031690565b6001600160a01b0316146108925760405162461bcd60e51b8152600401610552906136d8565b61089b82611eb6565b61069f82826001611f60565b6040516312d9a6ad60e01b81526000805160206138e983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561091d57600080fd5b505afa158015610931573d6000803e3d6000fd5b505050506001600160a01b03821661098b5760405162461bcd60e51b815260206004820152601d60248201527f5072656d69756d734163636f756e742063616e2774206265207a65726f0000006044820152606401610552565b306001600160a01b0316826001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ce57600080fd5b505afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190613293565b6001600160a01b031614610a6c5760405162461bcd60e51b815260206004820152602760248201527f5072656d69756d734163636f756e74206e6f74206c696e6b656420746f2074686044820152661a5cc81c1bdbdb60ca1b6064820152608401610552565b6000826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf9190613293565b90506001600160a01b03811615610b4c576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050505b826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8557600080fd5b505afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190613293565b90506001600160a01b03811615610c2a576040516338ea38a760e21b81526001600160a01b03848116600483015282169063e3a8e29c90602401600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050505b826001600160a01b03167f834362a634fb37104727a80cf5e936b5b1798edffcf4a89935f19d04eb0e88ec6001604051610c649190613631565b60405180910390a2505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d115760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610552565b506000805160206138c983398151915290565b6040516312d9a6ad60e01b81527f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2760048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b158015610dac57600080fd5b505afa158015610dc0573d6000803e3d6000fd5b505050506001600160a01b038216600090815260c9602052604090205460ff166002816003811115610df457610df4613879565b14610e395760405162461bcd60e51b815260206004820152601560248201527411551bdad95b881b9bdd0819195c1c9958d85d1959605a1b6044820152606401610552565b826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7257600080fd5b505afa158015610e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaa9190613375565b15610f065760405162461bcd60e51b815260206004820152602660248201527f45546f6b656e20686173206c69717569646974792c2063616e27742062652072604482015265195b5bdd995960d21b6064820152608401610552565b6001600160a01b038316600081815260c96020526040808220805460ff19169055517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610c6491613631565b610f5b612131565b42610f6e6101c083016101a08401613515565b64ffffffffff161115610fbc5760405162461bcd60e51b8152602060048201526016602482015275141bdb1a58de481b9bdd08195e1c1a5c9959081e595d60521b6044820152606401610552565b6105ef610fce3683900383018361349a565b600060016121d3565b610fdf612131565b61069f610ff13684900384018461349a565b8260006121d3565b600054610100900460ff16158080156110195750600054600160ff909116105b806110335750303b158015611033575060005460ff166001145b61104f5760405162461bcd60e51b815260040161055290613724565b6000805460ff191660011790558015611072576000805461ff0019166101001790555b61107a6126a8565b6110826126cf565b61108a6126fe565b80156105ef576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6040516312d9a6ad60e01b815260008051602061393083398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561114957600080fd5b505afa15801561115d573d6000803e3d6000fd5b505050506105ef61289f565b6000611173612131565b6101608401516001600160a01b03811633146111dd5760405162461bcd60e51b815260206004820152602360248201527f4f6e6c792074686520524d2063616e20637265617465206e657720706f6c696360448201526269657360e81b6064820152608401610552565b604051635dfdc5d760e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063bbfb8bae9060240160006040518083038186803b15801561123e57600080fd5b505afa158015611252573d6000803e3d6000fd5b50505050826bffffffffffffffffffffffff166060826001600160a01b0316901b61127d9190613827565b8552611288856128dc565b60ca600087600001518152602001908152602001600020819055506000816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156112de57600080fd5b505afa1580156112f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113169190613293565b60405163e3638ea360e01b81529091506001600160a01b0382169063e3638ea3906113459089906004016137bd565b600060405180830381600087803b15801561135f57600080fd5b505af1158015611373573d6000803e3d6000fd5b50508751604051632851206560e21b81526001600160a01b03898116600483015260248201929092527f0000000000000000000000000000000000000000000000000000000000000000909116925063a14481949150604401600060405180830381600087803b1580156113e657600080fd5b505af11580156113fa573d6000803e3d6000fd5b50505060c087015161143b91506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169087908490612179565b610140860151156114f3576114f385826001600160a01b0316637b83037b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148357600080fd5b505afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb9190613293565b6101408901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b610120860151156115ab576115ab85826001600160a01b031663536ebbfc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153b57600080fd5b505afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115739190613293565b6101208901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b611677857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190613293565b60e08901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b600086610100015111801561170e5750816001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f89190613293565b6001600160a01b0316856001600160a01b031614155b156117c0576117c085836001600160a01b031663521eb2736040518163ffffffff1660e01b815260040160206040518083038186803b15801561175057600080fd5b505afa158015611764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117889190613293565b6101008901516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016929190612179565b816001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b876040516117f991906137bd565b60405180910390a25050835190505b9392505050565b6040516312d9a6ad60e01b81526000805160206138e983398151915260048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906312d9a6ad9060440160006040518083038186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b5050506001600160a01b038316600090815260c9602052604081205460ff1691508160038111156118cc576118cc613879565b146119195760405162461bcd60e51b815260206004820152601a60248201527f65546f6b656e20616c726561647920696e2074686520706f6f6c0000000000006044820152606401610552565b6001600160a01b0383166119665760405162461bcd60e51b815260206004820152601460248201527365546f6b656e2063616e2774206265207a65726f60601b6044820152606401610552565b306001600160a01b0316836001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e19190613293565b6001600160a01b031614611a375760405162461bcd60e51b815260206004820152601e60248201527f45546f6b656e206e6f74206c696e6b656420746f207468697320706f6f6c00006044820152606401610552565b6001600160a01b038316600081815260c9602052604090819020805460ff1916600190811790915590517f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c91610c6491613631565b6000611a96612131565b6001600160a01b038316600090815260c9602052604090205460ff166001816003811115611ac657611ac6613879565b1480611ae357506002816003811115611ae157611ae1613879565b145b611b415760405162461bcd60e51b815260206004820152602960248201527f65546f6b656e206e6f7420666f756e64206f7220776974686472617773206e6f6044820152681d08185b1b1bddd95960ba1b6064820152608401610552565b60405163f3fef3a360e01b8152336004820181905260248201859052906001600160a01b0386169063f3fef3a390604401602060405180830381600087803b158015611b8c57600080fd5b505af1158015611ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc49190613375565b925050505b92915050565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015611c5c57600080fd5b505afa158015611c70573d6000803e3d6000fd5b5050506001600160a01b038516600090815260c9602052604081205460ff169150816003811115611ca357611ca3613879565b1415611ce45760405162461bcd60e51b815260206004820152601060248201526f11551bdad95b881b9bdd08199bdd5b9960821b6044820152606401610552565b6003846003811115611cf857611cf8613879565b141580611dab5750604051632474521560e21b815260008051602061393083398151915260048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d148549060440160206040518083038186803b158015611d7357600080fd5b505afa158015611d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dab9190613358565b611e015760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920475541524449414e2063616e2073757370656e642065546f6b656e6044820152607360f81b6064820152608401610552565b6001600160a01b038516600090815260c960205260409020805485919060ff19166001836003811115611e3657611e36613879565b0217905550846001600160a01b03167f84b036748e342a63da09ea533edd13275c8f2eb94ba67374cd3c7f4d6461d52c85604051611e749190613631565b60405180910390a25050505050565b611e8b612131565b61069f611e9d3684900384018461349a565b82611ea9576000611eaf565b83602001355b60006121d3565b60405163c5b8f5cf60e01b8152600080516020613930833981519152600482018190526000805160206138e98339815191526024830181905233604484015290916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5b8f5cf9060640160006040518083038186803b158015611f4357600080fd5b505afa158015611f57573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611f9857611f938361290c565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fd157600080fd5b505afa925050508015612001575060408051601f3d908101601f19168201909252611ffe91810190613375565b60015b6120645760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610552565b6000805160206138c983398151915281146120d35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610552565b50611f938383836129a8565b6120e76129cd565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60335460ff16156121775760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610552565b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526107d4908590612a16565b6121dc83612ae8565b61016083015181806121f657506001600160a01b03811633145b6122425760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792074686520524d2063616e207265736f6c766520706f6c69636965736044820152606401610552565b82158061225a575042846101a0015164ffffffffff16115b6122a65760405162461bcd60e51b815260206004820152601860248201527f43616e277420706179206578706972656420706f6c69637900000000000000006044820152606401610552565b6040516310f199ef60e31b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063878ccf789060240160006040518083038186803b15801561230757600080fd5b505afa15801561231b573d6000803e3d6000fd5b50505050836020015183111561236c5760405162461bcd60e51b81526020600482015260166024820152751c185e5bdd5d080f881c1bdb1a58de4b9c185e5bdd5d60521b6044820152606401610552565b82158015906124f25784516040516331a9108f60e11b81526000916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636352211e916123c89160040190815260200190565b60206040518083038186803b1580156123e057600080fd5b505afa1580156123f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124189190613293565b9050826001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561245357600080fd5b505afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190613293565b6001600160a01b0316639d8c5ee78288886040518463ffffffff1660e01b81526004016124ba93929190613604565b600060405180830381600087803b1580156124d457600080fd5b505af11580156124e8573d6000803e3d6000fd5b50505050506125c1565b816001600160a01b03166373a952e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561252b57600080fd5b505afa15801561253f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125639190613293565b6001600160a01b031663c7a9c70d866040518263ffffffff1660e01b815260040161258e91906137bd565b600060405180830381600087803b1580156125a857600080fd5b505af11580156125bc573d6000803e3d6000fd5b505050505b6020850151604051636a448ef160e01b815260048101919091526001600160a01b03831690636a448ef190602401600060405180830381600087803b15801561260957600080fd5b505af115801561261d573d6000803e3d6000fd5b5050505084600001518561016001516001600160a01b03167f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e8660405161266691815260200190565b60405180910390a38451600090815260ca602052604081205583156126965784516126919085612b4e565b6126a1565b84516126a190612d4c565b5050505050565b600054610100900460ff166121775760405162461bcd60e51b815260040161055290613772565b600054610100900460ff166126f65760405162461bcd60e51b815260040161055290613772565b612177612e92565b600054610100900460ff161580801561271e5750600054600160ff909116105b806127385750303b158015612738575060005460ff166001145b6127545760405162461bcd60e51b815260040161055290613724565b6000805460ff191660011790558015612777576000805461ff0019166101001790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127d257600080fd5b505af11580156127e6573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663948cb7196040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b5050505080156105ef576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016110c8565b6128a7612131565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121143390565b6000816040516020016128ef91906137bd565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381163b6129795760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610552565b6000805160206138c983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6129b183612ec5565b6000825111806129be5750805b15611f93576107d48383612f05565b60335460ff166121775760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610552565b6000612a6b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ff09092919063ffffffff16565b805190915015611f935780806020019051810190612a899190613358565b611f935760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610552565b805115801590612b0f57508051600090815260ca6020526040902054612b0d826128dc565b145b6105ef5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b6044820152606401610552565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b158015612bb157600080fd5b505afa158015612bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be99190613293565b90506001600160a01b0381163b612bff57505050565b6001600160a01b03811663d6281d3e336040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044810186905260648101859052608401602060405180830381600087803b158015612c6457600080fd5b505af1925050508015612c94575060408051601f3d908101601f19168201909252612c919181019061338e565b60015b612cdc573d808015612cc2576040519150601f19603f3d011682016040523d82523d6000602084013e612cc7565b606091505b508051612cd45750505050565b805181602001fd5b6001600160e01b03198116636b140e9f60e11b146107d45760405162461bcd60e51b815260206004820152602760248201527f496e76616c69642072657475726e2076616c75652066726f6d20506f6c696379604482015266102437b63232b960c91b6064820152608401610552565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e9060240160206040518083038186803b158015612daf57600080fd5b505afa158015612dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de79190613293565b90506001600160a01b0381163b612dfc575050565b6001600160a01b03811663e8e617b7336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101859052606401602060405180830381600087803b158015612e5a57600080fd5b505af1925050508015612e8a575060408051601f3d908101601f19168201909252612e879181019061338e565b60015b611f93575050565b600054610100900460ff16612eb95760405162461bcd60e51b815260040161055290613772565b6033805460ff19169055565b612ece8161290c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b612f6d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610552565b600080846001600160a01b031684604051612f8891906135e8565b600060405180830381855af49150503d8060008114612fc3576040519150601f19603f3d011682016040523d82523d6000602084013e612fc8565b606091505b5091509150611bc4828260405180606001604052806027815260200161390960279139613007565b6060612fff8484600085613040565b949350505050565b60608315613016575081611808565b8251156130265782518084602001fd5b8160405162461bcd60e51b81526004016105529190613659565b6060824710156130a15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610552565b6001600160a01b0385163b6130f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610552565b600080866001600160a01b0316858760405161311491906135e8565b60006040518083038185875af1925050503d8060008114613151576040519150601f19603f3d011682016040523d82523d6000602084013e613156565b606091505b5091509150613166828286613007565b979650505050505050565b803561317c816138a5565b919050565b60006101c0828403121561319457600080fd5b50919050565b60006101c082840312156131ad57600080fd5b6131b56137cc565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160613233818401613171565b90820152610180613245838201613261565b908201526101a0613257838201613261565b9082015292915050565b803564ffffffffff8116811461317c57600080fd5b60006020828403121561328857600080fd5b8135611808816138a5565b6000602082840312156132a557600080fd5b8151611808816138a5565b600080604083850312156132c357600080fd5b82356132ce816138a5565b915060208381013567ffffffffffffffff808211156132ec57600080fd5b818601915086601f83011261330057600080fd5b8135818111156133125761331261388f565b613324601f8201601f191685016137f6565b9150808252878482850101111561333a57600080fd5b80848401858401376000848284010152508093505050509250929050565b60006020828403121561336a57600080fd5b8151611808816138ba565b60006020828403121561338757600080fd5b5051919050565b6000602082840312156133a057600080fd5b81516001600160e01b03198116811461180857600080fd5b600080604083850312156133cb57600080fd5b82356133d6816138a5565b91506020830135600481106133ea57600080fd5b809150509250929050565b6000806040838503121561340857600080fd5b8235613413816138a5565b946020939093013593505050565b60006101c0828403121561343457600080fd5b6118088383613181565b6000806101e0838503121561345257600080fd5b61345c8484613181565b91506101c08301356133ea816138ba565b6000806101e0838503121561348157600080fd5b61348b8484613181565b946101c0939093013593505050565b60006101c082840312156134ad57600080fd5b611808838361319a565b600080600061020084860312156134cd57600080fd5b6134d7858561319a565b92506101c08401356134e8816138a5565b91506101e08401356bffffffffffffffffffffffff8116811461350a57600080fd5b809150509250925092565b60006020828403121561352757600080fd5b61180882613261565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516135b9828501826001600160a01b03169052565b50506101808181015164ffffffffff81168483015250506101a08181015164ffffffffff8116848301526107d4565b600082516135fa81846020870161384d565b9190910192915050565b6001600160a01b038416815261020081016136226020830185613530565b826101e0830152949350505050565b602081016004831061365357634e487b7160e01b600052602160045260246000fd5b91905290565b602081526000825180602084015261367881604085016020870161384d565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101c08101611bc98284613530565b6040516101c0810167ffffffffffffffff811182821017156137f0576137f061388f565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561381f5761381f61388f565b604052919050565b6000821982111561384857634e487b7160e01b600052601160045260246000fd5b500190565b60005b83811015613868578181015183820152602001613850565b838111156107d45750506000910152565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146105ef57600080fd5b80151581146105ef57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212204c9dccbb67ddc08482365cdf6de8410e8afedcb1481ee9a3b9e305e0055a743864736f6c63430008060033",
1167
921
  "linkReferences": {},
1168
922
  "deployedLinkReferences": {}
1169
923
  }