@ensuro/core 1.2.6 → 2.0.0-beta2

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