@ensuro/core 1.2.7 → 2.0.0-beta10

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 (109) hide show
  1. package/README.md +63 -27
  2. package/build/contracts/AccessManager.sol/AccessManager.json +559 -0
  3. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +219 -0
  4. package/build/contracts/EToken.sol/EToken.json +217 -190
  5. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +17 -4
  6. package/build/contracts/{extras/IPriceRiskModule.sol/IPriceRiskModule.json → LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json} +81 -131
  7. package/build/contracts/Policy.sol/Policy.json +2 -2
  8. package/build/contracts/PolicyPool.sol/PolicyPool.json +425 -295
  9. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +15 -2
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +868 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +37 -166
  12. package/build/contracts/RiskModule.sol/RiskModule.json +85 -312
  13. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +960 -0
  14. package/build/contracts/{DataTypes.sol/DataTypes.json → TimeScaled.sol/TimeScaled.json} +4 -4
  15. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +134 -336
  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/contracts/{WadRayMath.sol → dependencies/WadRayMath.sol}/WadRayMath.json +3 -3
  19. package/build/{interfaces/IPolicyPoolConfig.sol/IPolicyPoolConfig.json → contracts/interfaces/IAccessManager.sol/IAccessManager.json} +79 -77
  20. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +109 -0
  21. package/build/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +39 -91
  22. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  23. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +137 -100
  25. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  26. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +315 -0
  27. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  28. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +736 -0
  29. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  30. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  31. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +228 -0
  32. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +702 -0
  34. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  35. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +764 -0
  36. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  37. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  38. package/contracts/AccessManager.sol +103 -0
  39. package/contracts/ERC4626AssetManager.sol +52 -0
  40. package/contracts/EToken.sol +254 -299
  41. package/contracts/LPManualWhitelist.sol +4 -4
  42. package/contracts/LiquidityThresholdAssetManager.sol +160 -0
  43. package/contracts/Policy.sol +49 -45
  44. package/contracts/PolicyPool.sol +379 -514
  45. package/contracts/PolicyPoolComponent.sol +41 -41
  46. package/contracts/PremiumsAccount.sol +480 -0
  47. package/contracts/Reserve.sol +213 -0
  48. package/contracts/RiskModule.sol +233 -174
  49. package/contracts/SignedQuoteRiskModule.sol +241 -0
  50. package/contracts/TimeScaled.sol +138 -0
  51. package/contracts/TrustfulRiskModule.sol +85 -23
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/dependencies/WadRayMath.sol +126 -0
  55. package/contracts/interfaces/IAccessManager.sol +148 -0
  56. package/contracts/interfaces/IAssetManager.sol +84 -0
  57. package/contracts/interfaces/IEToken.sol +195 -0
  58. package/contracts/interfaces/ILPWhitelist.sol +40 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  60. package/contracts/interfaces/IPolicyPool.sol +145 -0
  61. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +3 -0
  62. package/contracts/interfaces/IPremiumsAccount.sol +76 -0
  63. package/contracts/interfaces/IRiskModule.sol +123 -0
  64. package/contracts/mocks/FixedRateVault.sol +85 -0
  65. package/contracts/mocks/ForwardProxy.sol +66 -0
  66. package/contracts/mocks/IMintableERC20.sol +13 -0
  67. package/contracts/mocks/PolicyHolderMock.sol +89 -0
  68. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  69. package/contracts/mocks/PolicyPoolMock.sol +148 -0
  70. package/contracts/mocks/RiskModuleMock.sol +75 -0
  71. package/contracts/mocks/TestCurrency.sol +35 -0
  72. package/contracts/mocks/TestNFT.sol +23 -0
  73. package/js/test-utils.js +356 -0
  74. package/package.json +2 -2
  75. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -742
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -591
  77. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +0 -1112
  78. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +0 -570
  79. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +0 -686
  80. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +0 -50
  81. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1055
  82. package/build/contracts/upgraded/IPolicyNFTv1.sol/IPolicyNFTv1.json +0 -322
  83. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +0 -571
  84. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +0 -602
  85. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  86. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  87. package/build/interfaces/IPolicyNFT.sol/IPolicyNFT.json +0 -321
  88. package/contracts/AaveAssetManager.sol +0 -298
  89. package/contracts/BaseAssetManager.sol +0 -301
  90. package/contracts/DataTypes.sol +0 -287
  91. package/contracts/Exchange.sol +0 -189
  92. package/contracts/FlightDelayRiskModule.sol +0 -208
  93. package/contracts/PolicyNFT.sol +0 -96
  94. package/contracts/PolicyPoolConfig.sol +0 -247
  95. package/contracts/WadRayMath.sol +0 -135
  96. package/contracts/dependencies/ChainlinkClientUpgradeable.sol +0 -371
  97. package/contracts/extras/IPriceRiskModule.sol +0 -41
  98. package/contracts/extras/PriceRiskModule.sol +0 -243
  99. package/contracts/upgraded/IPolicyNFTv1.sol +0 -15
  100. package/contracts/upgraded/PolicyNFTv1.sol +0 -126
  101. package/interfaces/IAssetManager.sol +0 -23
  102. package/interfaces/IEToken.sol +0 -48
  103. package/interfaces/IExchange.sol +0 -59
  104. package/interfaces/IInsolvencyHook.sol +0 -27
  105. package/interfaces/ILPWhitelist.sol +0 -23
  106. package/interfaces/IPolicyNFT.sol +0 -15
  107. package/interfaces/IPolicyPool.sol +0 -44
  108. package/interfaces/IPolicyPoolConfig.sol +0 -87
  109. package/interfaces/IRiskModule.sol +0 -29
@@ -1,571 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "PolicyNFTv1",
4
- "sourceName": "contracts/upgraded/PolicyNFTv1.sol",
5
- "abi": [
6
- {
7
- "anonymous": false,
8
- "inputs": [
9
- {
10
- "indexed": false,
11
- "internalType": "address",
12
- "name": "previousAdmin",
13
- "type": "address"
14
- },
15
- {
16
- "indexed": false,
17
- "internalType": "address",
18
- "name": "newAdmin",
19
- "type": "address"
20
- }
21
- ],
22
- "name": "AdminChanged",
23
- "type": "event"
24
- },
25
- {
26
- "anonymous": false,
27
- "inputs": [
28
- {
29
- "indexed": true,
30
- "internalType": "address",
31
- "name": "owner",
32
- "type": "address"
33
- },
34
- {
35
- "indexed": true,
36
- "internalType": "address",
37
- "name": "approved",
38
- "type": "address"
39
- },
40
- {
41
- "indexed": true,
42
- "internalType": "uint256",
43
- "name": "tokenId",
44
- "type": "uint256"
45
- }
46
- ],
47
- "name": "Approval",
48
- "type": "event"
49
- },
50
- {
51
- "anonymous": false,
52
- "inputs": [
53
- {
54
- "indexed": true,
55
- "internalType": "address",
56
- "name": "owner",
57
- "type": "address"
58
- },
59
- {
60
- "indexed": true,
61
- "internalType": "address",
62
- "name": "operator",
63
- "type": "address"
64
- },
65
- {
66
- "indexed": false,
67
- "internalType": "bool",
68
- "name": "approved",
69
- "type": "bool"
70
- }
71
- ],
72
- "name": "ApprovalForAll",
73
- "type": "event"
74
- },
75
- {
76
- "anonymous": false,
77
- "inputs": [
78
- {
79
- "indexed": true,
80
- "internalType": "address",
81
- "name": "beacon",
82
- "type": "address"
83
- }
84
- ],
85
- "name": "BeaconUpgraded",
86
- "type": "event"
87
- },
88
- {
89
- "anonymous": false,
90
- "inputs": [
91
- {
92
- "indexed": false,
93
- "internalType": "address",
94
- "name": "account",
95
- "type": "address"
96
- }
97
- ],
98
- "name": "Paused",
99
- "type": "event"
100
- },
101
- {
102
- "anonymous": false,
103
- "inputs": [
104
- {
105
- "indexed": true,
106
- "internalType": "address",
107
- "name": "from",
108
- "type": "address"
109
- },
110
- {
111
- "indexed": true,
112
- "internalType": "address",
113
- "name": "to",
114
- "type": "address"
115
- },
116
- {
117
- "indexed": true,
118
- "internalType": "uint256",
119
- "name": "tokenId",
120
- "type": "uint256"
121
- }
122
- ],
123
- "name": "Transfer",
124
- "type": "event"
125
- },
126
- {
127
- "anonymous": false,
128
- "inputs": [
129
- {
130
- "indexed": false,
131
- "internalType": "address",
132
- "name": "account",
133
- "type": "address"
134
- }
135
- ],
136
- "name": "Unpaused",
137
- "type": "event"
138
- },
139
- {
140
- "anonymous": false,
141
- "inputs": [
142
- {
143
- "indexed": true,
144
- "internalType": "address",
145
- "name": "implementation",
146
- "type": "address"
147
- }
148
- ],
149
- "name": "Upgraded",
150
- "type": "event"
151
- },
152
- {
153
- "inputs": [],
154
- "name": "GUARDIAN_ROLE",
155
- "outputs": [
156
- {
157
- "internalType": "bytes32",
158
- "name": "",
159
- "type": "bytes32"
160
- }
161
- ],
162
- "stateMutability": "view",
163
- "type": "function"
164
- },
165
- {
166
- "inputs": [],
167
- "name": "LEVEL1_ROLE",
168
- "outputs": [
169
- {
170
- "internalType": "bytes32",
171
- "name": "",
172
- "type": "bytes32"
173
- }
174
- ],
175
- "stateMutability": "view",
176
- "type": "function"
177
- },
178
- {
179
- "inputs": [
180
- {
181
- "internalType": "address",
182
- "name": "to",
183
- "type": "address"
184
- },
185
- {
186
- "internalType": "uint256",
187
- "name": "tokenId",
188
- "type": "uint256"
189
- }
190
- ],
191
- "name": "approve",
192
- "outputs": [],
193
- "stateMutability": "nonpayable",
194
- "type": "function"
195
- },
196
- {
197
- "inputs": [
198
- {
199
- "internalType": "address",
200
- "name": "owner",
201
- "type": "address"
202
- }
203
- ],
204
- "name": "balanceOf",
205
- "outputs": [
206
- {
207
- "internalType": "uint256",
208
- "name": "",
209
- "type": "uint256"
210
- }
211
- ],
212
- "stateMutability": "view",
213
- "type": "function"
214
- },
215
- {
216
- "inputs": [],
217
- "name": "connect",
218
- "outputs": [],
219
- "stateMutability": "nonpayable",
220
- "type": "function"
221
- },
222
- {
223
- "inputs": [
224
- {
225
- "internalType": "uint256",
226
- "name": "tokenId",
227
- "type": "uint256"
228
- }
229
- ],
230
- "name": "getApproved",
231
- "outputs": [
232
- {
233
- "internalType": "address",
234
- "name": "",
235
- "type": "address"
236
- }
237
- ],
238
- "stateMutability": "view",
239
- "type": "function"
240
- },
241
- {
242
- "inputs": [
243
- {
244
- "internalType": "string",
245
- "name": "name_",
246
- "type": "string"
247
- },
248
- {
249
- "internalType": "string",
250
- "name": "symbol_",
251
- "type": "string"
252
- },
253
- {
254
- "internalType": "contract IPolicyPool",
255
- "name": "policyPool_",
256
- "type": "address"
257
- }
258
- ],
259
- "name": "initialize",
260
- "outputs": [],
261
- "stateMutability": "nonpayable",
262
- "type": "function"
263
- },
264
- {
265
- "inputs": [
266
- {
267
- "internalType": "address",
268
- "name": "owner",
269
- "type": "address"
270
- },
271
- {
272
- "internalType": "address",
273
- "name": "operator",
274
- "type": "address"
275
- }
276
- ],
277
- "name": "isApprovedForAll",
278
- "outputs": [
279
- {
280
- "internalType": "bool",
281
- "name": "",
282
- "type": "bool"
283
- }
284
- ],
285
- "stateMutability": "view",
286
- "type": "function"
287
- },
288
- {
289
- "inputs": [],
290
- "name": "name",
291
- "outputs": [
292
- {
293
- "internalType": "string",
294
- "name": "",
295
- "type": "string"
296
- }
297
- ],
298
- "stateMutability": "view",
299
- "type": "function"
300
- },
301
- {
302
- "inputs": [],
303
- "name": "nextId",
304
- "outputs": [
305
- {
306
- "internalType": "uint256",
307
- "name": "",
308
- "type": "uint256"
309
- }
310
- ],
311
- "stateMutability": "view",
312
- "type": "function"
313
- },
314
- {
315
- "inputs": [
316
- {
317
- "internalType": "uint256",
318
- "name": "tokenId",
319
- "type": "uint256"
320
- }
321
- ],
322
- "name": "ownerOf",
323
- "outputs": [
324
- {
325
- "internalType": "address",
326
- "name": "",
327
- "type": "address"
328
- }
329
- ],
330
- "stateMutability": "view",
331
- "type": "function"
332
- },
333
- {
334
- "inputs": [],
335
- "name": "pause",
336
- "outputs": [],
337
- "stateMutability": "nonpayable",
338
- "type": "function"
339
- },
340
- {
341
- "inputs": [],
342
- "name": "paused",
343
- "outputs": [
344
- {
345
- "internalType": "bool",
346
- "name": "",
347
- "type": "bool"
348
- }
349
- ],
350
- "stateMutability": "view",
351
- "type": "function"
352
- },
353
- {
354
- "inputs": [],
355
- "name": "proxiableUUID",
356
- "outputs": [
357
- {
358
- "internalType": "bytes32",
359
- "name": "",
360
- "type": "bytes32"
361
- }
362
- ],
363
- "stateMutability": "view",
364
- "type": "function"
365
- },
366
- {
367
- "inputs": [
368
- {
369
- "internalType": "address",
370
- "name": "to",
371
- "type": "address"
372
- }
373
- ],
374
- "name": "safeMint",
375
- "outputs": [
376
- {
377
- "internalType": "uint256",
378
- "name": "",
379
- "type": "uint256"
380
- }
381
- ],
382
- "stateMutability": "nonpayable",
383
- "type": "function"
384
- },
385
- {
386
- "inputs": [
387
- {
388
- "internalType": "address",
389
- "name": "from",
390
- "type": "address"
391
- },
392
- {
393
- "internalType": "address",
394
- "name": "to",
395
- "type": "address"
396
- },
397
- {
398
- "internalType": "uint256",
399
- "name": "tokenId",
400
- "type": "uint256"
401
- }
402
- ],
403
- "name": "safeTransferFrom",
404
- "outputs": [],
405
- "stateMutability": "nonpayable",
406
- "type": "function"
407
- },
408
- {
409
- "inputs": [
410
- {
411
- "internalType": "address",
412
- "name": "from",
413
- "type": "address"
414
- },
415
- {
416
- "internalType": "address",
417
- "name": "to",
418
- "type": "address"
419
- },
420
- {
421
- "internalType": "uint256",
422
- "name": "tokenId",
423
- "type": "uint256"
424
- },
425
- {
426
- "internalType": "bytes",
427
- "name": "_data",
428
- "type": "bytes"
429
- }
430
- ],
431
- "name": "safeTransferFrom",
432
- "outputs": [],
433
- "stateMutability": "nonpayable",
434
- "type": "function"
435
- },
436
- {
437
- "inputs": [
438
- {
439
- "internalType": "address",
440
- "name": "operator",
441
- "type": "address"
442
- },
443
- {
444
- "internalType": "bool",
445
- "name": "approved",
446
- "type": "bool"
447
- }
448
- ],
449
- "name": "setApprovalForAll",
450
- "outputs": [],
451
- "stateMutability": "nonpayable",
452
- "type": "function"
453
- },
454
- {
455
- "inputs": [
456
- {
457
- "internalType": "bytes4",
458
- "name": "interfaceId",
459
- "type": "bytes4"
460
- }
461
- ],
462
- "name": "supportsInterface",
463
- "outputs": [
464
- {
465
- "internalType": "bool",
466
- "name": "",
467
- "type": "bool"
468
- }
469
- ],
470
- "stateMutability": "view",
471
- "type": "function"
472
- },
473
- {
474
- "inputs": [],
475
- "name": "symbol",
476
- "outputs": [
477
- {
478
- "internalType": "string",
479
- "name": "",
480
- "type": "string"
481
- }
482
- ],
483
- "stateMutability": "view",
484
- "type": "function"
485
- },
486
- {
487
- "inputs": [
488
- {
489
- "internalType": "uint256",
490
- "name": "tokenId",
491
- "type": "uint256"
492
- }
493
- ],
494
- "name": "tokenURI",
495
- "outputs": [
496
- {
497
- "internalType": "string",
498
- "name": "",
499
- "type": "string"
500
- }
501
- ],
502
- "stateMutability": "view",
503
- "type": "function"
504
- },
505
- {
506
- "inputs": [
507
- {
508
- "internalType": "address",
509
- "name": "from",
510
- "type": "address"
511
- },
512
- {
513
- "internalType": "address",
514
- "name": "to",
515
- "type": "address"
516
- },
517
- {
518
- "internalType": "uint256",
519
- "name": "tokenId",
520
- "type": "uint256"
521
- }
522
- ],
523
- "name": "transferFrom",
524
- "outputs": [],
525
- "stateMutability": "nonpayable",
526
- "type": "function"
527
- },
528
- {
529
- "inputs": [],
530
- "name": "unpause",
531
- "outputs": [],
532
- "stateMutability": "nonpayable",
533
- "type": "function"
534
- },
535
- {
536
- "inputs": [
537
- {
538
- "internalType": "address",
539
- "name": "newImplementation",
540
- "type": "address"
541
- }
542
- ],
543
- "name": "upgradeTo",
544
- "outputs": [],
545
- "stateMutability": "nonpayable",
546
- "type": "function"
547
- },
548
- {
549
- "inputs": [
550
- {
551
- "internalType": "address",
552
- "name": "newImplementation",
553
- "type": "address"
554
- },
555
- {
556
- "internalType": "bytes",
557
- "name": "data",
558
- "type": "bytes"
559
- }
560
- ],
561
- "name": "upgradeToAndCall",
562
- "outputs": [],
563
- "stateMutability": "payable",
564
- "type": "function"
565
- }
566
- ],
567
- "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c6127f46100526000396000818161081e0152818161085e01528181610afe01528181610b3e0152610bcd01526127f46000f3fe6080604052600436106101665760003560e01c806352d1902d116100d1578063948cb7191161008a578063b88d4fde11610064578063b88d4fde146103f5578063c87b56dd14610415578063e985e9c514610435578063f67b2bad1461047e57600080fd5b8063948cb719146103ab57806395d89b41146103c0578063a22cb465146103d557600080fd5b806352d1902d146103145780635c975abb1461032957806361b8ce8c146103415780636352211e1461035657806370a08231146103765780638456cb591461039657600080fd5b806324ea54f41161012357806324ea54f41461025c5780633659cfe61461028c5780633f4ba83a146102ac57806340d097c3146102c157806342842e0e146102e15780634f1ef2861461030157600080fd5b806301ffc9a71461016b57806306fdde03146101a0578063077f224a146101c2578063081812fc146101e4578063095ea7b31461021c57806323b872dd1461023c575b600080fd5b34801561017757600080fd5b5061018b61018636600461224e565b6104b2565b60405190151581526020015b60405180910390f35b3480156101ac57600080fd5b506101b5610504565b60405161019791906123ea565b3480156101ce57600080fd5b506101e26101dd3660046122a5565b610596565b005b3480156101f057600080fd5b506102046101ff36600461231d565b610637565b6040516001600160a01b039091168152602001610197565b34801561022857600080fd5b506101e2610237366004612209565b6106cc565b34801561024857600080fd5b506101e26102573660046120d9565b6107e2565b34801561026857600080fd5b5061027e60008051602061279f83398151915281565b604051908152602001610197565b34801561029857600080fd5b506101e26102a7366004612083565b610813565b3480156102b857600080fd5b506101e26108f3565b3480156102cd57600080fd5b5061027e6102dc366004612083565b610a1d565b3480156102ed57600080fd5b506101e26102fc3660046120d9565b610ad8565b6101e261030f3660046121b9565b610af3565b34801561032057600080fd5b5061027e610bc0565b34801561033557600080fd5b5060fb5460ff1661018b565b34801561034d57600080fd5b5061027e610c73565b34801561036257600080fd5b5061020461037136600461231d565b610c84565b34801561038257600080fd5b5061027e610391366004612083565b610cfb565b3480156103a257600080fd5b506101e2610d82565b3480156103b757600080fd5b506101e2610e75565b3480156103cc57600080fd5b506101b5610efa565b3480156103e157600080fd5b506101e26103f0366004612186565b610f09565b34801561040157600080fd5b506101e261041036600461211a565b610f14565b34801561042157600080fd5b506101b561043036600461231d565b610f46565b34801561044157600080fd5b5061018b6104503660046120a0565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205460ff1690565b34801561048a57600080fd5b5061027e7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006001600160e01b031982166380ac58cd60e01b14806104e357506001600160e01b03198216635b5e139f60e01b145b806104fe57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060c980546105139061266a565b80601f016020809104026020016040519081016040528092919081815260200182805461053f9061266a565b801561058c5780601f106105615761010080835404028352916020019161058c565b820191906000526020600020905b81548152906001019060200180831161056f57829003601f168201915b5050505050905090565b600054610100900460ff166105b15760005460ff16156105b5565b303b155b6105da5760405162461bcd60e51b81526004016105d190612511565b60405180910390fd5b600054610100900460ff161580156105fc576000805461ffff19166101011790555b61060461102e565b61060c611057565b6106168484611086565b61061f826110b7565b8015610631576000805461ff00191690555b50505050565b600081815260cb60205260408120546001600160a01b03166106b05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105d1565b50600090815260cd60205260409020546001600160a01b031690565b60006106d782610c84565b9050806001600160a01b0316836001600160a01b031614156107455760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105d1565b336001600160a01b038216148061076157506107618133610450565b6107d35760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105d1565b6107dd838361114f565b505050565b6107ec33826111bd565b6108085760405162461bcd60e51b81526004016105d19061255f565b6107dd8383836112b4565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561085c5760405162461bcd60e51b81526004016105d19061244f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108a5600080516020612758833981519152546001600160a01b031690565b6001600160a01b0316146108cb5760405162461bcd60e51b81526004016105d19061249b565b6108d48161145b565b604080516000808252602082019092526108f09183919061157e565b50565b60008051602061279f8339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb261012e60009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190612288565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b1580156109f957600080fd5b505afa158015610a0d573d6000803e3d6000fd5b50505050610a196116f8565b5050565b61012e546000906001600160a01b0316336001600160a01b031614610a8e5760405162461bcd60e51b815260206004820152602160248201527f5468652063616c6c6572206d7573742062652074686520506f6c696379506f6f6044820152601b60fa1b60648201526084016105d1565b60fb5460ff1615610ab15760405162461bcd60e51b81526004016105d1906124e7565b6000610abd61012d5490565b9050610ac9838261178b565b6104fe61012d80546001019055565b6107dd83838360405180602001604052806000815250610f14565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610b3c5760405162461bcd60e51b81526004016105d19061244f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b85600080516020612758833981519152546001600160a01b031690565b6001600160a01b031614610bab5760405162461bcd60e51b81526004016105d19061249b565b610bb48261145b565b610a198282600161157e565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016105d1565b5060008051602061275883398151915290565b6000610c7f61012d5490565b905090565b600081815260cb60205260408120546001600160a01b0316806104fe5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016105d1565b60006001600160a01b038216610d665760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016105d1565b506001600160a01b0316600090815260cc602052604090205490565b61012e54604080516379502c5560e01b8152905160008051602061279f833981519152926001600160a01b0316916379502c55916004808301926020929190829003018186803b158015610dd557600080fd5b505afa158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d9190612288565b6040516312d9a6ad60e01b8152600481018390523360248201526001600160a01b0391909116906312d9a6ad9060440160006040518083038186803b158015610e5557600080fd5b505afa158015610e69573d6000803e3d6000fd5b505050506108f06117a5565b61012e546001600160a01b03161580610e99575061012e546001600160a01b031633145b610ee55760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e65637465640000000060448201526064016105d1565b61012e80546001600160a01b03191633179055565b606060ca80546105139061266a565b610a193383836117fd565b610f1e33836111bd565b610f3a5760405162461bcd60e51b81526004016105d19061255f565b610631848484846118cc565b600081815260cb60205260409020546060906001600160a01b0316610fc55760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016105d1565b6000610fdc60408051602081019091526000815290565b90506000815111610ffc5760405180602001604052806000815250611027565b80611006846118ff565b60405160200161101792919061237e565b6040516020818303038152906040525b9392505050565b600054610100900460ff166110555760405162461bcd60e51b81526004016105d1906125b0565b565b600054610100900460ff1661107e5760405162461bcd60e51b81526004016105d1906125b0565b6110556119fd565b600054610100900460ff166110ad5760405162461bcd60e51b81526004016105d1906125b0565b610a198282611a30565b600054610100900460ff166110d25760005460ff16156110d6565b303b155b6110f25760405162461bcd60e51b81526004016105d190612511565b600054610100900460ff16158015611114576000805461ffff19166101011790555b61012e80546001600160a01b0319166001600160a01b03841617905561012d805460010190558015610a19576000805461ff00191690555050565b600081815260cd6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061118482610c84565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081815260cb60205260408120546001600160a01b03166112365760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105d1565b600061124183610c84565b9050806001600160a01b0316846001600160a01b0316148061127c5750836001600160a01b031661127184610637565b6001600160a01b0316145b806112ac57506001600160a01b03808216600090815260ce602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166112c782610c84565b6001600160a01b03161461132b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d1565b6001600160a01b03821661138d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d1565b611398838383611a7e565b6113a360008261114f565b6001600160a01b038316600090815260cc602052604081208054600192906113cc908490612627565b90915550506001600160a01b038216600090815260cc602052604081208054600192906113fa9084906125fb565b9091555050600081815260cb602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008051602061279f8339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb261012e60009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114da57600080fd5b505afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115129190612288565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561156157600080fd5b505afa158015611575573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156115b1576107dd83611aa1565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ea57600080fd5b505afa92505050801561161a575060408051601f3d908101601f1916820190925261161791810190612235565b60015b61167d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016105d1565b60008051602061275883398151915281146116ec5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016105d1565b506107dd838383611b3d565b60fb5460ff166117415760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d1565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610a19828260405180602001604052806000815250611b62565b60fb5460ff16156117c85760405162461bcd60e51b81526004016105d1906124e7565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861176e3390565b816001600160a01b0316836001600160a01b0316141561185f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d1565b6001600160a01b03838116600081815260ce6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6118d78484846112b4565b6118e384848484611b95565b6106315760405162461bcd60e51b81526004016105d1906123fd565b6060816119235750506040805180820190915260018152600360fc1b602082015290565b8160005b811561194d5780611937816126a5565b91506119469050600a83612613565b9150611927565b60008167ffffffffffffffff81111561196857611968612716565b6040519080825280601f01601f191660200182016040528015611992576020820181803683370190505b5090505b84156112ac576119a7600183612627565b91506119b4600a866126c0565b6119bf9060306125fb565b60f81b8183815181106119d4576119d4612700565b60200101906001600160f81b031916908160001a9053506119f6600a86612613565b9450611996565b600054610100900460ff16611a245760405162461bcd60e51b81526004016105d1906125b0565b60fb805460ff19169055565b600054610100900460ff16611a575760405162461bcd60e51b81526004016105d1906125b0565b8151611a6a9060c9906020850190611f5d565b5080516107dd9060ca906020840190611f5d565b60fb5460ff16156107dd5760405162461bcd60e51b81526004016105d1906124e7565b6001600160a01b0381163b611b0e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016105d1565b60008051602061275883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611b4683611ca2565b600082511180611b535750805b156107dd576106318383611ce2565b611b6c8383611dd6565b611b796000848484611b95565b6107dd5760405162461bcd60e51b81526004016105d1906123fd565b60006001600160a01b0384163b15611c9757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bd99033908990889088906004016123ad565b602060405180830381600087803b158015611bf357600080fd5b505af1925050508015611c23575060408051601f3d908101601f19168201909252611c209181019061226b565b60015b611c7d573d808015611c51576040519150601f19603f3d011682016040523d82523d6000602084013e611c56565b606091505b508051611c755760405162461bcd60e51b81526004016105d1906123fd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506112ac565b506001949350505050565b611cab81611aa1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611d4a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016105d1565b600080846001600160a01b031684604051611d659190612362565b600060405180830381855af49150503d8060008114611da0576040519150601f19603f3d011682016040523d82523d6000602084013e611da5565b606091505b5091509150611dcd828260405180606001604052806027815260200161277860279139611f24565b95945050505050565b6001600160a01b038216611e2c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d1565b600081815260cb60205260409020546001600160a01b031615611e915760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d1565b611e9d60008383611a7e565b6001600160a01b038216600090815260cc60205260408120805460019290611ec69084906125fb565b9091555050600081815260cb602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60608315611f33575081611027565b825115611f435782518084602001fd5b8160405162461bcd60e51b81526004016105d191906123ea565b828054611f699061266a565b90600052602060002090601f016020900481019282611f8b5760008555611fd1565b82601f10611fa457805160ff1916838001178555611fd1565b82800160010185558215611fd1579182015b82811115611fd1578251825591602001919060010190611fb6565b50611fdd929150611fe1565b5090565b5b80821115611fdd5760008155600101611fe2565b600082601f83011261200757600080fd5b813567ffffffffffffffff8082111561202257612022612716565b604051601f8301601f19908116603f0116810190828211818310171561204a5761204a612716565b8160405283815286602085880101111561206357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561209557600080fd5b81356110278161272c565b600080604083850312156120b357600080fd5b82356120be8161272c565b915060208301356120ce8161272c565b809150509250929050565b6000806000606084860312156120ee57600080fd5b83356120f98161272c565b925060208401356121098161272c565b929592945050506040919091013590565b6000806000806080858703121561213057600080fd5b843561213b8161272c565b9350602085013561214b8161272c565b925060408501359150606085013567ffffffffffffffff81111561216e57600080fd5b61217a87828801611ff6565b91505092959194509250565b6000806040838503121561219957600080fd5b82356121a48161272c565b9150602083013580151581146120ce57600080fd5b600080604083850312156121cc57600080fd5b82356121d78161272c565b9150602083013567ffffffffffffffff8111156121f357600080fd5b6121ff85828601611ff6565b9150509250929050565b6000806040838503121561221c57600080fd5b82356122278161272c565b946020939093013593505050565b60006020828403121561224757600080fd5b5051919050565b60006020828403121561226057600080fd5b813561102781612741565b60006020828403121561227d57600080fd5b815161102781612741565b60006020828403121561229a57600080fd5b81516110278161272c565b6000806000606084860312156122ba57600080fd5b833567ffffffffffffffff808211156122d257600080fd5b6122de87838801611ff6565b945060208601359150808211156122f457600080fd5b5061230186828701611ff6565b92505060408401356123128161272c565b809150509250925092565b60006020828403121561232f57600080fd5b5035919050565b6000815180845261234e81602086016020860161263e565b601f01601f19169290920160200192915050565b6000825161237481846020870161263e565b9190910192915050565b6000835161239081846020880161263e565b8351908301906123a481836020880161263e565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123e090830184612336565b9695505050505050565b6020815260006110276020830184612336565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000821982111561260e5761260e6126d4565b500190565b600082612622576126226126ea565b500490565b600082821015612639576126396126d4565b500390565b60005b83811015612659578181015183820152602001612641565b838111156106315750506000910152565b600181811c9082168061267e57607f821691505b6020821081141561269f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156126b9576126b96126d4565b5060010190565b6000826126cf576126cf6126ea565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146108f057600080fd5b6001600160e01b0319811681146108f057600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122087a466d5d261a82fc6e49290f08137c71bda9725928155ec7b922b622098756464736f6c63430008060033",
568
- "deployedBytecode": "0x6080604052600436106101665760003560e01c806352d1902d116100d1578063948cb7191161008a578063b88d4fde11610064578063b88d4fde146103f5578063c87b56dd14610415578063e985e9c514610435578063f67b2bad1461047e57600080fd5b8063948cb719146103ab57806395d89b41146103c0578063a22cb465146103d557600080fd5b806352d1902d146103145780635c975abb1461032957806361b8ce8c146103415780636352211e1461035657806370a08231146103765780638456cb591461039657600080fd5b806324ea54f41161012357806324ea54f41461025c5780633659cfe61461028c5780633f4ba83a146102ac57806340d097c3146102c157806342842e0e146102e15780634f1ef2861461030157600080fd5b806301ffc9a71461016b57806306fdde03146101a0578063077f224a146101c2578063081812fc146101e4578063095ea7b31461021c57806323b872dd1461023c575b600080fd5b34801561017757600080fd5b5061018b61018636600461224e565b6104b2565b60405190151581526020015b60405180910390f35b3480156101ac57600080fd5b506101b5610504565b60405161019791906123ea565b3480156101ce57600080fd5b506101e26101dd3660046122a5565b610596565b005b3480156101f057600080fd5b506102046101ff36600461231d565b610637565b6040516001600160a01b039091168152602001610197565b34801561022857600080fd5b506101e2610237366004612209565b6106cc565b34801561024857600080fd5b506101e26102573660046120d9565b6107e2565b34801561026857600080fd5b5061027e60008051602061279f83398151915281565b604051908152602001610197565b34801561029857600080fd5b506101e26102a7366004612083565b610813565b3480156102b857600080fd5b506101e26108f3565b3480156102cd57600080fd5b5061027e6102dc366004612083565b610a1d565b3480156102ed57600080fd5b506101e26102fc3660046120d9565b610ad8565b6101e261030f3660046121b9565b610af3565b34801561032057600080fd5b5061027e610bc0565b34801561033557600080fd5b5060fb5460ff1661018b565b34801561034d57600080fd5b5061027e610c73565b34801561036257600080fd5b5061020461037136600461231d565b610c84565b34801561038257600080fd5b5061027e610391366004612083565b610cfb565b3480156103a257600080fd5b506101e2610d82565b3480156103b757600080fd5b506101e2610e75565b3480156103cc57600080fd5b506101b5610efa565b3480156103e157600080fd5b506101e26103f0366004612186565b610f09565b34801561040157600080fd5b506101e261041036600461211a565b610f14565b34801561042157600080fd5b506101b561043036600461231d565b610f46565b34801561044157600080fd5b5061018b6104503660046120a0565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205460ff1690565b34801561048a57600080fd5b5061027e7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006001600160e01b031982166380ac58cd60e01b14806104e357506001600160e01b03198216635b5e139f60e01b145b806104fe57506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060c980546105139061266a565b80601f016020809104026020016040519081016040528092919081815260200182805461053f9061266a565b801561058c5780601f106105615761010080835404028352916020019161058c565b820191906000526020600020905b81548152906001019060200180831161056f57829003601f168201915b5050505050905090565b600054610100900460ff166105b15760005460ff16156105b5565b303b155b6105da5760405162461bcd60e51b81526004016105d190612511565b60405180910390fd5b600054610100900460ff161580156105fc576000805461ffff19166101011790555b61060461102e565b61060c611057565b6106168484611086565b61061f826110b7565b8015610631576000805461ff00191690555b50505050565b600081815260cb60205260408120546001600160a01b03166106b05760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105d1565b50600090815260cd60205260409020546001600160a01b031690565b60006106d782610c84565b9050806001600160a01b0316836001600160a01b031614156107455760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105d1565b336001600160a01b038216148061076157506107618133610450565b6107d35760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105d1565b6107dd838361114f565b505050565b6107ec33826111bd565b6108085760405162461bcd60e51b81526004016105d19061255f565b6107dd8383836112b4565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561085c5760405162461bcd60e51b81526004016105d19061244f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108a5600080516020612758833981519152546001600160a01b031690565b6001600160a01b0316146108cb5760405162461bcd60e51b81526004016105d19061249b565b6108d48161145b565b604080516000808252602082019092526108f09183919061157e565b50565b60008051602061279f8339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb261012e60009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190612288565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b1580156109f957600080fd5b505afa158015610a0d573d6000803e3d6000fd5b50505050610a196116f8565b5050565b61012e546000906001600160a01b0316336001600160a01b031614610a8e5760405162461bcd60e51b815260206004820152602160248201527f5468652063616c6c6572206d7573742062652074686520506f6c696379506f6f6044820152601b60fa1b60648201526084016105d1565b60fb5460ff1615610ab15760405162461bcd60e51b81526004016105d1906124e7565b6000610abd61012d5490565b9050610ac9838261178b565b6104fe61012d80546001019055565b6107dd83838360405180602001604052806000815250610f14565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610b3c5760405162461bcd60e51b81526004016105d19061244f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b85600080516020612758833981519152546001600160a01b031690565b6001600160a01b031614610bab5760405162461bcd60e51b81526004016105d19061249b565b610bb48261145b565b610a198282600161157e565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c605760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016105d1565b5060008051602061275883398151915290565b6000610c7f61012d5490565b905090565b600081815260cb60205260408120546001600160a01b0316806104fe5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016105d1565b60006001600160a01b038216610d665760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016105d1565b506001600160a01b0316600090815260cc602052604090205490565b61012e54604080516379502c5560e01b8152905160008051602061279f833981519152926001600160a01b0316916379502c55916004808301926020929190829003018186803b158015610dd557600080fd5b505afa158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d9190612288565b6040516312d9a6ad60e01b8152600481018390523360248201526001600160a01b0391909116906312d9a6ad9060440160006040518083038186803b158015610e5557600080fd5b505afa158015610e69573d6000803e3d6000fd5b505050506108f06117a5565b61012e546001600160a01b03161580610e99575061012e546001600160a01b031633145b610ee55760405162461bcd60e51b815260206004820152601c60248201527f506f6c696379506f6f6c20616c726561647920636f6e6e65637465640000000060448201526064016105d1565b61012e80546001600160a01b03191633179055565b606060ca80546105139061266a565b610a193383836117fd565b610f1e33836111bd565b610f3a5760405162461bcd60e51b81526004016105d19061255f565b610631848484846118cc565b600081815260cb60205260409020546060906001600160a01b0316610fc55760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016105d1565b6000610fdc60408051602081019091526000815290565b90506000815111610ffc5760405180602001604052806000815250611027565b80611006846118ff565b60405160200161101792919061237e565b6040516020818303038152906040525b9392505050565b600054610100900460ff166110555760405162461bcd60e51b81526004016105d1906125b0565b565b600054610100900460ff1661107e5760405162461bcd60e51b81526004016105d1906125b0565b6110556119fd565b600054610100900460ff166110ad5760405162461bcd60e51b81526004016105d1906125b0565b610a198282611a30565b600054610100900460ff166110d25760005460ff16156110d6565b303b155b6110f25760405162461bcd60e51b81526004016105d190612511565b600054610100900460ff16158015611114576000805461ffff19166101011790555b61012e80546001600160a01b0319166001600160a01b03841617905561012d805460010190558015610a19576000805461ff00191690555050565b600081815260cd6020526040902080546001600160a01b0319166001600160a01b038416908117909155819061118482610c84565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081815260cb60205260408120546001600160a01b03166112365760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105d1565b600061124183610c84565b9050806001600160a01b0316846001600160a01b0316148061127c5750836001600160a01b031661127184610637565b6001600160a01b0316145b806112ac57506001600160a01b03808216600090815260ce602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166112c782610c84565b6001600160a01b03161461132b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016105d1565b6001600160a01b03821661138d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d1565b611398838383611a7e565b6113a360008261114f565b6001600160a01b038316600090815260cc602052604081208054600192906113cc908490612627565b90915550506001600160a01b038216600090815260cc602052604081208054600192906113fa9084906125fb565b9091555050600081815260cb602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008051602061279f8339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb261012e60009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114da57600080fd5b505afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115129190612288565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561156157600080fd5b505afa158015611575573d6000803e3d6000fd5b50505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156115b1576107dd83611aa1565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ea57600080fd5b505afa92505050801561161a575060408051601f3d908101601f1916820190925261161791810190612235565b60015b61167d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016105d1565b60008051602061275883398151915281146116ec5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016105d1565b506107dd838383611b3d565b60fb5460ff166117415760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d1565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610a19828260405180602001604052806000815250611b62565b60fb5460ff16156117c85760405162461bcd60e51b81526004016105d1906124e7565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861176e3390565b816001600160a01b0316836001600160a01b0316141561185f5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d1565b6001600160a01b03838116600081815260ce6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6118d78484846112b4565b6118e384848484611b95565b6106315760405162461bcd60e51b81526004016105d1906123fd565b6060816119235750506040805180820190915260018152600360fc1b602082015290565b8160005b811561194d5780611937816126a5565b91506119469050600a83612613565b9150611927565b60008167ffffffffffffffff81111561196857611968612716565b6040519080825280601f01601f191660200182016040528015611992576020820181803683370190505b5090505b84156112ac576119a7600183612627565b91506119b4600a866126c0565b6119bf9060306125fb565b60f81b8183815181106119d4576119d4612700565b60200101906001600160f81b031916908160001a9053506119f6600a86612613565b9450611996565b600054610100900460ff16611a245760405162461bcd60e51b81526004016105d1906125b0565b60fb805460ff19169055565b600054610100900460ff16611a575760405162461bcd60e51b81526004016105d1906125b0565b8151611a6a9060c9906020850190611f5d565b5080516107dd9060ca906020840190611f5d565b60fb5460ff16156107dd5760405162461bcd60e51b81526004016105d1906124e7565b6001600160a01b0381163b611b0e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016105d1565b60008051602061275883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611b4683611ca2565b600082511180611b535750805b156107dd576106318383611ce2565b611b6c8383611dd6565b611b796000848484611b95565b6107dd5760405162461bcd60e51b81526004016105d1906123fd565b60006001600160a01b0384163b15611c9757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bd99033908990889088906004016123ad565b602060405180830381600087803b158015611bf357600080fd5b505af1925050508015611c23575060408051601f3d908101601f19168201909252611c209181019061226b565b60015b611c7d573d808015611c51576040519150601f19603f3d011682016040523d82523d6000602084013e611c56565b606091505b508051611c755760405162461bcd60e51b81526004016105d1906123fd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506112ac565b506001949350505050565b611cab81611aa1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611d4a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016105d1565b600080846001600160a01b031684604051611d659190612362565b600060405180830381855af49150503d8060008114611da0576040519150601f19603f3d011682016040523d82523d6000602084013e611da5565b606091505b5091509150611dcd828260405180606001604052806027815260200161277860279139611f24565b95945050505050565b6001600160a01b038216611e2c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d1565b600081815260cb60205260409020546001600160a01b031615611e915760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d1565b611e9d60008383611a7e565b6001600160a01b038216600090815260cc60205260408120805460019290611ec69084906125fb565b9091555050600081815260cb602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60608315611f33575081611027565b825115611f435782518084602001fd5b8160405162461bcd60e51b81526004016105d191906123ea565b828054611f699061266a565b90600052602060002090601f016020900481019282611f8b5760008555611fd1565b82601f10611fa457805160ff1916838001178555611fd1565b82800160010185558215611fd1579182015b82811115611fd1578251825591602001919060010190611fb6565b50611fdd929150611fe1565b5090565b5b80821115611fdd5760008155600101611fe2565b600082601f83011261200757600080fd5b813567ffffffffffffffff8082111561202257612022612716565b604051601f8301601f19908116603f0116810190828211818310171561204a5761204a612716565b8160405283815286602085880101111561206357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561209557600080fd5b81356110278161272c565b600080604083850312156120b357600080fd5b82356120be8161272c565b915060208301356120ce8161272c565b809150509250929050565b6000806000606084860312156120ee57600080fd5b83356120f98161272c565b925060208401356121098161272c565b929592945050506040919091013590565b6000806000806080858703121561213057600080fd5b843561213b8161272c565b9350602085013561214b8161272c565b925060408501359150606085013567ffffffffffffffff81111561216e57600080fd5b61217a87828801611ff6565b91505092959194509250565b6000806040838503121561219957600080fd5b82356121a48161272c565b9150602083013580151581146120ce57600080fd5b600080604083850312156121cc57600080fd5b82356121d78161272c565b9150602083013567ffffffffffffffff8111156121f357600080fd5b6121ff85828601611ff6565b9150509250929050565b6000806040838503121561221c57600080fd5b82356122278161272c565b946020939093013593505050565b60006020828403121561224757600080fd5b5051919050565b60006020828403121561226057600080fd5b813561102781612741565b60006020828403121561227d57600080fd5b815161102781612741565b60006020828403121561229a57600080fd5b81516110278161272c565b6000806000606084860312156122ba57600080fd5b833567ffffffffffffffff808211156122d257600080fd5b6122de87838801611ff6565b945060208601359150808211156122f457600080fd5b5061230186828701611ff6565b92505060408401356123128161272c565b809150509250925092565b60006020828403121561232f57600080fd5b5035919050565b6000815180845261234e81602086016020860161263e565b601f01601f19169290920160200192915050565b6000825161237481846020870161263e565b9190910192915050565b6000835161239081846020880161263e565b8351908301906123a481836020880161263e565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123e090830184612336565b9695505050505050565b6020815260006110276020830184612336565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000821982111561260e5761260e6126d4565b500190565b600082612622576126226126ea565b500490565b600082821015612639576126396126d4565b500390565b60005b83811015612659578181015183820152602001612641565b838111156106315750506000910152565b600181811c9082168061267e57607f821691505b6020821081141561269f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156126b9576126b96126d4565b5060010190565b6000826126cf576126cf6126ea565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146108f057600080fd5b6001600160e01b0319811681146108f057600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122087a466d5d261a82fc6e49290f08137c71bda9725928155ec7b922b622098756464736f6c63430008060033",
569
- "linkReferences": {},
570
- "deployedLinkReferences": {}
571
- }