@ensuro/core 2.0.0-beta3 → 2.0.0-beta6

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 (40) hide show
  1. package/build/contracts/AccessManager.sol/AccessManager.json +487 -0
  2. package/build/contracts/EToken.sol/EToken.json +4 -4
  3. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +4 -4
  4. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +2 -2
  5. package/build/contracts/PolicyPool.sol/PolicyPool.json +148 -15
  6. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +2 -2
  7. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +4 -4
  8. package/build/contracts/Reserve.sol/Reserve.json +2 -2
  9. package/build/contracts/RiskModule.sol/RiskModule.json +2 -2
  10. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +4 -4
  11. package/build/contracts/interfaces/{IPolicyPoolConfig.sol/IPolicyPoolConfig.json → IAccessManager.sol/IAccessManager.json} +2 -67
  12. package/build/contracts/interfaces/IPolicyPool.sol/IPolicyPool.json +15 -2
  13. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +2 -2
  14. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +19 -6
  15. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +6 -6
  16. package/contracts/AccessManager.sol +72 -0
  17. package/contracts/EToken.sol +6 -13
  18. package/contracts/PolicyNFT.sol +3 -3
  19. package/contracts/PolicyPool.sol +108 -43
  20. package/contracts/PolicyPoolComponent.sol +11 -11
  21. package/contracts/PremiumsAccount.sol +1 -1
  22. package/contracts/RiskModule.sol +4 -8
  23. package/contracts/interfaces/{IPolicyPoolConfig.sol → IAccessManager.sol} +2 -21
  24. package/contracts/interfaces/IPolicyPool.sol +10 -5
  25. package/contracts/mocks/PolicyPoolMock.sol +15 -13
  26. package/js/test-utils.js +178 -122
  27. package/package.json +1 -1
  28. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +0 -890
  29. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +0 -665
  30. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +0 -63
  31. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +0 -370
  32. package/build/contracts/upgraded/IPolicyNFTv1.sol/IPolicyNFTv1.json +0 -322
  33. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +0 -584
  34. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +0 -615
  35. package/contracts/FlightDelayRiskModule.sol +0 -217
  36. package/contracts/PolicyPoolConfig.sol +0 -185
  37. package/contracts/dependencies/ChainlinkClientUpgradeable.sol +0 -371
  38. package/contracts/mocks/LinkTokenMock.sol +0 -30
  39. package/contracts/upgraded/IPolicyNFTv1.sol +0 -15
  40. package/contracts/upgraded/PolicyNFTv1.sol +0 -126
@@ -0,0 +1,487 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "AccessManager",
4
+ "sourceName": "contracts/AccessManager.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": "beacon",
32
+ "type": "address"
33
+ }
34
+ ],
35
+ "name": "BeaconUpgraded",
36
+ "type": "event"
37
+ },
38
+ {
39
+ "anonymous": false,
40
+ "inputs": [
41
+ {
42
+ "indexed": false,
43
+ "internalType": "uint8",
44
+ "name": "version",
45
+ "type": "uint8"
46
+ }
47
+ ],
48
+ "name": "Initialized",
49
+ "type": "event"
50
+ },
51
+ {
52
+ "anonymous": false,
53
+ "inputs": [
54
+ {
55
+ "indexed": true,
56
+ "internalType": "bytes32",
57
+ "name": "role",
58
+ "type": "bytes32"
59
+ },
60
+ {
61
+ "indexed": true,
62
+ "internalType": "bytes32",
63
+ "name": "previousAdminRole",
64
+ "type": "bytes32"
65
+ },
66
+ {
67
+ "indexed": true,
68
+ "internalType": "bytes32",
69
+ "name": "newAdminRole",
70
+ "type": "bytes32"
71
+ }
72
+ ],
73
+ "name": "RoleAdminChanged",
74
+ "type": "event"
75
+ },
76
+ {
77
+ "anonymous": false,
78
+ "inputs": [
79
+ {
80
+ "indexed": true,
81
+ "internalType": "bytes32",
82
+ "name": "role",
83
+ "type": "bytes32"
84
+ },
85
+ {
86
+ "indexed": true,
87
+ "internalType": "address",
88
+ "name": "account",
89
+ "type": "address"
90
+ },
91
+ {
92
+ "indexed": true,
93
+ "internalType": "address",
94
+ "name": "sender",
95
+ "type": "address"
96
+ }
97
+ ],
98
+ "name": "RoleGranted",
99
+ "type": "event"
100
+ },
101
+ {
102
+ "anonymous": false,
103
+ "inputs": [
104
+ {
105
+ "indexed": true,
106
+ "internalType": "bytes32",
107
+ "name": "role",
108
+ "type": "bytes32"
109
+ },
110
+ {
111
+ "indexed": true,
112
+ "internalType": "address",
113
+ "name": "account",
114
+ "type": "address"
115
+ },
116
+ {
117
+ "indexed": true,
118
+ "internalType": "address",
119
+ "name": "sender",
120
+ "type": "address"
121
+ }
122
+ ],
123
+ "name": "RoleRevoked",
124
+ "type": "event"
125
+ },
126
+ {
127
+ "anonymous": false,
128
+ "inputs": [
129
+ {
130
+ "indexed": true,
131
+ "internalType": "address",
132
+ "name": "implementation",
133
+ "type": "address"
134
+ }
135
+ ],
136
+ "name": "Upgraded",
137
+ "type": "event"
138
+ },
139
+ {
140
+ "inputs": [],
141
+ "name": "DEFAULT_ADMIN_ROLE",
142
+ "outputs": [
143
+ {
144
+ "internalType": "bytes32",
145
+ "name": "",
146
+ "type": "bytes32"
147
+ }
148
+ ],
149
+ "stateMutability": "view",
150
+ "type": "function"
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
+ "name": "LEVEL2_ROLE",
181
+ "outputs": [
182
+ {
183
+ "internalType": "bytes32",
184
+ "name": "",
185
+ "type": "bytes32"
186
+ }
187
+ ],
188
+ "stateMutability": "view",
189
+ "type": "function"
190
+ },
191
+ {
192
+ "inputs": [],
193
+ "name": "LEVEL3_ROLE",
194
+ "outputs": [
195
+ {
196
+ "internalType": "bytes32",
197
+ "name": "",
198
+ "type": "bytes32"
199
+ }
200
+ ],
201
+ "stateMutability": "view",
202
+ "type": "function"
203
+ },
204
+ {
205
+ "inputs": [
206
+ {
207
+ "internalType": "address",
208
+ "name": "component",
209
+ "type": "address"
210
+ },
211
+ {
212
+ "internalType": "bytes32",
213
+ "name": "role",
214
+ "type": "bytes32"
215
+ },
216
+ {
217
+ "internalType": "address",
218
+ "name": "account",
219
+ "type": "address"
220
+ }
221
+ ],
222
+ "name": "checkComponentRole",
223
+ "outputs": [],
224
+ "stateMutability": "view",
225
+ "type": "function"
226
+ },
227
+ {
228
+ "inputs": [
229
+ {
230
+ "internalType": "bytes32",
231
+ "name": "role",
232
+ "type": "bytes32"
233
+ },
234
+ {
235
+ "internalType": "address",
236
+ "name": "account",
237
+ "type": "address"
238
+ }
239
+ ],
240
+ "name": "checkRole",
241
+ "outputs": [],
242
+ "stateMutability": "view",
243
+ "type": "function"
244
+ },
245
+ {
246
+ "inputs": [
247
+ {
248
+ "internalType": "bytes32",
249
+ "name": "role1",
250
+ "type": "bytes32"
251
+ },
252
+ {
253
+ "internalType": "bytes32",
254
+ "name": "role2",
255
+ "type": "bytes32"
256
+ },
257
+ {
258
+ "internalType": "address",
259
+ "name": "account",
260
+ "type": "address"
261
+ }
262
+ ],
263
+ "name": "checkRole2",
264
+ "outputs": [],
265
+ "stateMutability": "view",
266
+ "type": "function"
267
+ },
268
+ {
269
+ "inputs": [
270
+ {
271
+ "internalType": "address",
272
+ "name": "component",
273
+ "type": "address"
274
+ },
275
+ {
276
+ "internalType": "bytes32",
277
+ "name": "role",
278
+ "type": "bytes32"
279
+ }
280
+ ],
281
+ "name": "getComponentRole",
282
+ "outputs": [
283
+ {
284
+ "internalType": "bytes32",
285
+ "name": "",
286
+ "type": "bytes32"
287
+ }
288
+ ],
289
+ "stateMutability": "pure",
290
+ "type": "function"
291
+ },
292
+ {
293
+ "inputs": [
294
+ {
295
+ "internalType": "bytes32",
296
+ "name": "role",
297
+ "type": "bytes32"
298
+ }
299
+ ],
300
+ "name": "getRoleAdmin",
301
+ "outputs": [
302
+ {
303
+ "internalType": "bytes32",
304
+ "name": "",
305
+ "type": "bytes32"
306
+ }
307
+ ],
308
+ "stateMutability": "view",
309
+ "type": "function"
310
+ },
311
+ {
312
+ "inputs": [
313
+ {
314
+ "internalType": "address",
315
+ "name": "component",
316
+ "type": "address"
317
+ },
318
+ {
319
+ "internalType": "bytes32",
320
+ "name": "role",
321
+ "type": "bytes32"
322
+ },
323
+ {
324
+ "internalType": "address",
325
+ "name": "account",
326
+ "type": "address"
327
+ }
328
+ ],
329
+ "name": "grantComponentRole",
330
+ "outputs": [],
331
+ "stateMutability": "nonpayable",
332
+ "type": "function"
333
+ },
334
+ {
335
+ "inputs": [
336
+ {
337
+ "internalType": "bytes32",
338
+ "name": "role",
339
+ "type": "bytes32"
340
+ },
341
+ {
342
+ "internalType": "address",
343
+ "name": "account",
344
+ "type": "address"
345
+ }
346
+ ],
347
+ "name": "grantRole",
348
+ "outputs": [],
349
+ "stateMutability": "nonpayable",
350
+ "type": "function"
351
+ },
352
+ {
353
+ "inputs": [
354
+ {
355
+ "internalType": "bytes32",
356
+ "name": "role",
357
+ "type": "bytes32"
358
+ },
359
+ {
360
+ "internalType": "address",
361
+ "name": "account",
362
+ "type": "address"
363
+ }
364
+ ],
365
+ "name": "hasRole",
366
+ "outputs": [
367
+ {
368
+ "internalType": "bool",
369
+ "name": "",
370
+ "type": "bool"
371
+ }
372
+ ],
373
+ "stateMutability": "view",
374
+ "type": "function"
375
+ },
376
+ {
377
+ "inputs": [],
378
+ "name": "initialize",
379
+ "outputs": [],
380
+ "stateMutability": "nonpayable",
381
+ "type": "function"
382
+ },
383
+ {
384
+ "inputs": [],
385
+ "name": "proxiableUUID",
386
+ "outputs": [
387
+ {
388
+ "internalType": "bytes32",
389
+ "name": "",
390
+ "type": "bytes32"
391
+ }
392
+ ],
393
+ "stateMutability": "view",
394
+ "type": "function"
395
+ },
396
+ {
397
+ "inputs": [
398
+ {
399
+ "internalType": "bytes32",
400
+ "name": "role",
401
+ "type": "bytes32"
402
+ },
403
+ {
404
+ "internalType": "address",
405
+ "name": "account",
406
+ "type": "address"
407
+ }
408
+ ],
409
+ "name": "renounceRole",
410
+ "outputs": [],
411
+ "stateMutability": "nonpayable",
412
+ "type": "function"
413
+ },
414
+ {
415
+ "inputs": [
416
+ {
417
+ "internalType": "bytes32",
418
+ "name": "role",
419
+ "type": "bytes32"
420
+ },
421
+ {
422
+ "internalType": "address",
423
+ "name": "account",
424
+ "type": "address"
425
+ }
426
+ ],
427
+ "name": "revokeRole",
428
+ "outputs": [],
429
+ "stateMutability": "nonpayable",
430
+ "type": "function"
431
+ },
432
+ {
433
+ "inputs": [
434
+ {
435
+ "internalType": "bytes4",
436
+ "name": "interfaceId",
437
+ "type": "bytes4"
438
+ }
439
+ ],
440
+ "name": "supportsInterface",
441
+ "outputs": [
442
+ {
443
+ "internalType": "bool",
444
+ "name": "",
445
+ "type": "bool"
446
+ }
447
+ ],
448
+ "stateMutability": "view",
449
+ "type": "function"
450
+ },
451
+ {
452
+ "inputs": [
453
+ {
454
+ "internalType": "address",
455
+ "name": "newImplementation",
456
+ "type": "address"
457
+ }
458
+ ],
459
+ "name": "upgradeTo",
460
+ "outputs": [],
461
+ "stateMutability": "nonpayable",
462
+ "type": "function"
463
+ },
464
+ {
465
+ "inputs": [
466
+ {
467
+ "internalType": "address",
468
+ "name": "newImplementation",
469
+ "type": "address"
470
+ },
471
+ {
472
+ "internalType": "bytes",
473
+ "name": "data",
474
+ "type": "bytes"
475
+ }
476
+ ],
477
+ "name": "upgradeToAndCall",
478
+ "outputs": [],
479
+ "stateMutability": "payable",
480
+ "type": "function"
481
+ }
482
+ ],
483
+ "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c6115e66100526000396000818161050301528181610543015281816105e30152818161062301526106b201526115e66000f3fe60806040526004361061011f5760003560e01c806352d1902d116100a0578063a217fddf11610064578063a217fddf14610361578063c5b8f5cf14610376578063d547741f14610396578063f67b2bad146103b6578063f6a421fc146103ea57600080fd5b806352d1902d146102c35780635b494dd5146102d85780638129fc1c1461030c57806391d14854146103215780639fc094021461034157600080fd5b806336568abe116100e757806336568abe1461020d5780633659cfe61461022d578063374c96c81461024d5780634a47a3e01461027c5780634f1ef286146102b057600080fd5b806301ffc9a71461012457806312d9a6ad14610159578063248a9ca31461017b57806324ea54f4146101b95780632f2ff15d146101ed575b600080fd5b34801561013057600080fd5b5061014461013f3660046112d9565b61040a565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004611281565b610441565b005b34801561018757600080fd5b506101ab61019636600461124f565b60009081526065602052604090206001015490565b604051908152602001610150565b3480156101c557600080fd5b506101ab7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b3480156101f957600080fd5b50610179610208366004611281565b61044f565b34801561021957600080fd5b50610179610228366004611281565b610479565b34801561023957600080fd5b5061017961024836600461110c565b6104f8565b34801561025957600080fd5b506101ab610268366004611127565b60609190911b6001600160601b0319161890565b34801561028857600080fd5b506101ab7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6101796102be36600461118d565b6105d8565b3480156102cf57600080fd5b506101ab6106a5565b3480156102e457600080fd5b506101ab7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561031857600080fd5b50610179610758565b34801561032d57600080fd5b5061014461033c366004611281565b610831565b34801561034d57600080fd5b5061017961035c366004611151565b61085c565b34801561036d57600080fd5b506101ab600081565b34801561038257600080fd5b506101796103913660046112ad565b610876565b3480156103a257600080fd5b506101796103b1366004611281565b61088e565b3480156103c257600080fd5b506101ab7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b3480156103f657600080fd5b50610179610405366004611151565b6108b3565b60006001600160e01b03198216637965db0b60e01b148061043b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61044b82826108f5565b5050565b60008281526065602052604090206001015461046a81610959565b6104748383610963565b505050565b6001600160a01b03811633146104ee5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61044b82826109e9565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156105415760405162461bcd60e51b81526004016104e5906113c7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058a60008051602061156a833981519152546001600160a01b031690565b6001600160a01b0316146105b05760405162461bcd60e51b81526004016104e590611413565b6105b981610a50565b604080516000808252602082019092526105d591839190610aaa565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156106215760405162461bcd60e51b81526004016104e5906113c7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661066a60008051602061156a833981519152546001600160a01b031690565b6001600160a01b0316146106905760405162461bcd60e51b81526004016104e590611413565b61069982610a50565b61044b82826001610aaa565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107455760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104e5565b5060008051602061156a83398151915290565b600054610100900460ff16158080156107785750600054600160ff909116105b806107925750303b158015610792575060005460ff166001145b6107ae5760405162461bcd60e51b81526004016104e59061145f565b6000805460ff1916600117905580156107d1576000805461ff0019166101001790555b6107d9610c24565b6107e1610c24565b6107e9610c91565b80156105d5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6104746001600160601b0319606085901b168318826108f5565b6108808382610831565b6104745761047482826108f5565b6000828152606560205260409020600101546108a981610959565b61047483836109e9565b6108cc6001600160601b0319606085901b168318610196565b6108d581610959565b6108ef6001600160601b0319606086901b16841883610963565b50505050565b6108ff8282610831565b61044b57610917816001600160a01b03166014610d15565b610922836020610d15565b60405160200161093392919061131f565b60408051601f198184030181529082905262461bcd60e51b82526104e591600401611394565b6105d581336108f5565b61096d8282610831565b61044b5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556109a53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6109f38282610831565b1561044b5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2610a9c8233610831565b6104745761047481336108f5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610add5761047483610eb8565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1657600080fd5b505afa925050508015610b46575060408051601f3d908101601f19168201909252610b4391810190611268565b60015b610ba95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104e5565b60008051602061156a8339815191528114610c185760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104e5565b50610474838383610f54565b600054610100900460ff16610c8f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016104e5565b565b600054610100900460ff1615808015610cb15750600054600160ff909116105b80610ccb5750303b158015610ccb575060005460ff166001145b610ce75760405162461bcd60e51b81526004016104e59061145f565b6000805460ff191660011790558015610d0a576000805461ff0019166101001790555b6107e9600033610f79565b60606000610d248360026114c5565b610d2f9060026114ad565b67ffffffffffffffff811115610d4757610d47611553565b6040519080825280601f01601f191660200182016040528015610d71576020820181803683370190505b509050600360fc1b81600081518110610d8c57610d8c61153d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610dbb57610dbb61153d565b60200101906001600160f81b031916908160001a9053506000610ddf8460026114c5565b610dea9060016114ad565b90505b6001811115610e62576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610e1e57610e1e61153d565b1a60f81b828281518110610e3457610e3461153d565b60200101906001600160f81b031916908160001a90535060049490941c93610e5b81611510565b9050610ded565b508315610eb15760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104e5565b9392505050565b6001600160a01b0381163b610f255760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104e5565b60008051602061156a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610f5d83610f83565b600082511180610f6a5750805b15610474576108ef8383610fc3565b61044b8282610963565b610f8c81610eb8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b61102b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016104e5565b600080846001600160a01b0316846040516110469190611303565b600060405180830381855af49150503d8060008114611081576040519150601f19603f3d011682016040523d82523d6000602084013e611086565b606091505b50915091506110ae828260405180606001604052806027815260200161158a602791396110b7565b95945050505050565b606083156110c6575081610eb1565b8251156110d65782518084602001fd5b8160405162461bcd60e51b81526004016104e59190611394565b80356001600160a01b038116811461110757600080fd5b919050565b60006020828403121561111e57600080fd5b610eb1826110f0565b6000806040838503121561113a57600080fd5b611143836110f0565b946020939093013593505050565b60008060006060848603121561116657600080fd5b61116f846110f0565b925060208401359150611184604085016110f0565b90509250925092565b600080604083850312156111a057600080fd5b6111a9836110f0565b9150602083013567ffffffffffffffff808211156111c657600080fd5b818501915085601f8301126111da57600080fd5b8135818111156111ec576111ec611553565b604051601f8201601f19908116603f0116810190838211818310171561121457611214611553565b8160405282815288602084870101111561122d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561126157600080fd5b5035919050565b60006020828403121561127a57600080fd5b5051919050565b6000806040838503121561129457600080fd5b823591506112a4602084016110f0565b90509250929050565b6000806000606084860312156112c257600080fd5b8335925060208401359150611184604085016110f0565b6000602082840312156112eb57600080fd5b81356001600160e01b031981168114610eb157600080fd5b600082516113158184602087016114e4565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516113578160178501602088016114e4565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516113888160288401602088016114e4565b01602801949350505050565b60208152600082518060208401526113b38160408501602087016114e4565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600082198211156114c0576114c0611527565b500190565b60008160001904831182151516156114df576114df611527565b500290565b60005b838110156114ff5781810151838201526020016114e7565b838111156108ef5750506000910152565b60008161151f5761151f611527565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e5500c9fe5abe2e511edbc49305756c0441631f25e7b8029aacf91271419a86364736f6c63430008060033",
484
+ "deployedBytecode": "0x60806040526004361061011f5760003560e01c806352d1902d116100a0578063a217fddf11610064578063a217fddf14610361578063c5b8f5cf14610376578063d547741f14610396578063f67b2bad146103b6578063f6a421fc146103ea57600080fd5b806352d1902d146102c35780635b494dd5146102d85780638129fc1c1461030c57806391d14854146103215780639fc094021461034157600080fd5b806336568abe116100e757806336568abe1461020d5780633659cfe61461022d578063374c96c81461024d5780634a47a3e01461027c5780634f1ef286146102b057600080fd5b806301ffc9a71461012457806312d9a6ad14610159578063248a9ca31461017b57806324ea54f4146101b95780632f2ff15d146101ed575b600080fd5b34801561013057600080fd5b5061014461013f3660046112d9565b61040a565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004611281565b610441565b005b34801561018757600080fd5b506101ab61019636600461124f565b60009081526065602052604090206001015490565b604051908152602001610150565b3480156101c557600080fd5b506101ab7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b3480156101f957600080fd5b50610179610208366004611281565b61044f565b34801561021957600080fd5b50610179610228366004611281565b610479565b34801561023957600080fd5b5061017961024836600461110c565b6104f8565b34801561025957600080fd5b506101ab610268366004611127565b60609190911b6001600160601b0319161890565b34801561028857600080fd5b506101ab7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b6101796102be36600461118d565b6105d8565b3480156102cf57600080fd5b506101ab6106a5565b3480156102e457600080fd5b506101ab7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561031857600080fd5b50610179610758565b34801561032d57600080fd5b5061014461033c366004611281565b610831565b34801561034d57600080fd5b5061017961035c366004611151565b61085c565b34801561036d57600080fd5b506101ab600081565b34801561038257600080fd5b506101796103913660046112ad565b610876565b3480156103a257600080fd5b506101796103b1366004611281565b61088e565b3480156103c257600080fd5b506101ab7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b3480156103f657600080fd5b50610179610405366004611151565b6108b3565b60006001600160e01b03198216637965db0b60e01b148061043b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61044b82826108f5565b5050565b60008281526065602052604090206001015461046a81610959565b6104748383610963565b505050565b6001600160a01b03811633146104ee5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61044b82826109e9565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156105415760405162461bcd60e51b81526004016104e5906113c7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661058a60008051602061156a833981519152546001600160a01b031690565b6001600160a01b0316146105b05760405162461bcd60e51b81526004016104e590611413565b6105b981610a50565b604080516000808252602082019092526105d591839190610aaa565b50565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156106215760405162461bcd60e51b81526004016104e5906113c7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661066a60008051602061156a833981519152546001600160a01b031690565b6001600160a01b0316146106905760405162461bcd60e51b81526004016104e590611413565b61069982610a50565b61044b82826001610aaa565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107455760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104e5565b5060008051602061156a83398151915290565b600054610100900460ff16158080156107785750600054600160ff909116105b806107925750303b158015610792575060005460ff166001145b6107ae5760405162461bcd60e51b81526004016104e59061145f565b6000805460ff1916600117905580156107d1576000805461ff0019166101001790555b6107d9610c24565b6107e1610c24565b6107e9610c91565b80156105d5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6104746001600160601b0319606085901b168318826108f5565b6108808382610831565b6104745761047482826108f5565b6000828152606560205260409020600101546108a981610959565b61047483836109e9565b6108cc6001600160601b0319606085901b168318610196565b6108d581610959565b6108ef6001600160601b0319606086901b16841883610963565b50505050565b6108ff8282610831565b61044b57610917816001600160a01b03166014610d15565b610922836020610d15565b60405160200161093392919061131f565b60408051601f198184030181529082905262461bcd60e51b82526104e591600401611394565b6105d581336108f5565b61096d8282610831565b61044b5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556109a53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6109f38282610831565b1561044b5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2610a9c8233610831565b6104745761047481336108f5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610add5761047483610eb8565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1657600080fd5b505afa925050508015610b46575060408051601f3d908101601f19168201909252610b4391810190611268565b60015b610ba95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104e5565b60008051602061156a8339815191528114610c185760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104e5565b50610474838383610f54565b600054610100900460ff16610c8f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016104e5565b565b600054610100900460ff1615808015610cb15750600054600160ff909116105b80610ccb5750303b158015610ccb575060005460ff166001145b610ce75760405162461bcd60e51b81526004016104e59061145f565b6000805460ff191660011790558015610d0a576000805461ff0019166101001790555b6107e9600033610f79565b60606000610d248360026114c5565b610d2f9060026114ad565b67ffffffffffffffff811115610d4757610d47611553565b6040519080825280601f01601f191660200182016040528015610d71576020820181803683370190505b509050600360fc1b81600081518110610d8c57610d8c61153d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610dbb57610dbb61153d565b60200101906001600160f81b031916908160001a9053506000610ddf8460026114c5565b610dea9060016114ad565b90505b6001811115610e62576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610e1e57610e1e61153d565b1a60f81b828281518110610e3457610e3461153d565b60200101906001600160f81b031916908160001a90535060049490941c93610e5b81611510565b9050610ded565b508315610eb15760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016104e5565b9392505050565b6001600160a01b0381163b610f255760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104e5565b60008051602061156a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610f5d83610f83565b600082511180610f6a5750805b15610474576108ef8383610fc3565b61044b8282610963565b610f8c81610eb8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b61102b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016104e5565b600080846001600160a01b0316846040516110469190611303565b600060405180830381855af49150503d8060008114611081576040519150601f19603f3d011682016040523d82523d6000602084013e611086565b606091505b50915091506110ae828260405180606001604052806027815260200161158a602791396110b7565b95945050505050565b606083156110c6575081610eb1565b8251156110d65782518084602001fd5b8160405162461bcd60e51b81526004016104e59190611394565b80356001600160a01b038116811461110757600080fd5b919050565b60006020828403121561111e57600080fd5b610eb1826110f0565b6000806040838503121561113a57600080fd5b611143836110f0565b946020939093013593505050565b60008060006060848603121561116657600080fd5b61116f846110f0565b925060208401359150611184604085016110f0565b90509250925092565b600080604083850312156111a057600080fd5b6111a9836110f0565b9150602083013567ffffffffffffffff808211156111c657600080fd5b818501915085601f8301126111da57600080fd5b8135818111156111ec576111ec611553565b604051601f8201601f19908116603f0116810190838211818310171561121457611214611553565b8160405282815288602084870101111561122d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561126157600080fd5b5035919050565b60006020828403121561127a57600080fd5b5051919050565b6000806040838503121561129457600080fd5b823591506112a4602084016110f0565b90509250929050565b6000806000606084860312156112c257600080fd5b8335925060208401359150611184604085016110f0565b6000602082840312156112eb57600080fd5b81356001600160e01b031981168114610eb157600080fd5b600082516113158184602087016114e4565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516113578160178501602088016114e4565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516113888160288401602088016114e4565b01602801949350505050565b60208152600082518060208401526113b38160408501602087016114e4565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600082198211156114c0576114c0611527565b500190565b60008160001904831182151516156114df576114df611527565b500290565b60005b838110156114ff5781810151838201526020016114e7565b838111156108ef5750506000910152565b60008161151f5761151f611527565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e5500c9fe5abe2e511edbc49305756c0441631f25e7b8029aacf91271419a86364736f6c63430008060033",
485
+ "linkReferences": {},
486
+ "deployedLinkReferences": {}
487
+ }