@mainsail/evm-contracts 0.0.1-evm.10

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.
@@ -0,0 +1,985 @@
1
+ {
2
+ "abi": [
3
+ {
4
+ "type": "function",
5
+ "name": "UPGRADE_INTERFACE_VERSION",
6
+ "inputs": [],
7
+ "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
8
+ "stateMutability": "view"
9
+ },
10
+ {
11
+ "type": "function",
12
+ "name": "activeValidatorsCount",
13
+ "inputs": [],
14
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
15
+ "stateMutability": "view"
16
+ },
17
+ {
18
+ "type": "function",
19
+ "name": "addValidator",
20
+ "inputs": [
21
+ { "name": "addr", "type": "address", "internalType": "address" },
22
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" },
23
+ { "name": "isResigned", "type": "bool", "internalType": "bool" }
24
+ ],
25
+ "outputs": [],
26
+ "stateMutability": "nonpayable"
27
+ },
28
+ {
29
+ "type": "function",
30
+ "name": "addVote",
31
+ "inputs": [
32
+ { "name": "voter", "type": "address", "internalType": "address" },
33
+ { "name": "validator", "type": "address", "internalType": "address" }
34
+ ],
35
+ "outputs": [],
36
+ "stateMutability": "nonpayable"
37
+ },
38
+ {
39
+ "type": "function",
40
+ "name": "calculateActiveValidators",
41
+ "inputs": [{ "name": "n", "type": "uint8", "internalType": "uint8" }],
42
+ "outputs": [],
43
+ "stateMutability": "nonpayable"
44
+ },
45
+ {
46
+ "type": "function",
47
+ "name": "getActiveValidators",
48
+ "inputs": [],
49
+ "outputs": [
50
+ {
51
+ "name": "",
52
+ "type": "tuple[]",
53
+ "internalType": "struct ConsensusV1.Validator[]",
54
+ "components": [
55
+ { "name": "addr", "type": "address", "internalType": "address" },
56
+ {
57
+ "name": "data",
58
+ "type": "tuple",
59
+ "internalType": "struct ConsensusV1.ValidatorData",
60
+ "components": [
61
+ { "name": "votersCount", "type": "uint256", "internalType": "uint256" },
62
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" },
63
+ { "name": "isResigned", "type": "bool", "internalType": "bool" },
64
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }
65
+ ]
66
+ }
67
+ ]
68
+ }
69
+ ],
70
+ "stateMutability": "view"
71
+ },
72
+ {
73
+ "type": "function",
74
+ "name": "getAllValidators",
75
+ "inputs": [],
76
+ "outputs": [
77
+ {
78
+ "name": "",
79
+ "type": "tuple[]",
80
+ "internalType": "struct ConsensusV1.Validator[]",
81
+ "components": [
82
+ { "name": "addr", "type": "address", "internalType": "address" },
83
+ {
84
+ "name": "data",
85
+ "type": "tuple",
86
+ "internalType": "struct ConsensusV1.ValidatorData",
87
+ "components": [
88
+ { "name": "votersCount", "type": "uint256", "internalType": "uint256" },
89
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" },
90
+ { "name": "isResigned", "type": "bool", "internalType": "bool" },
91
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }
92
+ ]
93
+ }
94
+ ]
95
+ }
96
+ ],
97
+ "stateMutability": "view"
98
+ },
99
+ {
100
+ "type": "function",
101
+ "name": "getRounds",
102
+ "inputs": [
103
+ { "name": "offset", "type": "uint256", "internalType": "uint256" },
104
+ { "name": "count", "type": "uint256", "internalType": "uint256" }
105
+ ],
106
+ "outputs": [
107
+ {
108
+ "name": "",
109
+ "type": "tuple[]",
110
+ "internalType": "struct ConsensusV1.Round[]",
111
+ "components": [
112
+ { "name": "round", "type": "uint256", "internalType": "uint256" },
113
+ {
114
+ "name": "validators",
115
+ "type": "tuple[]",
116
+ "internalType": "struct ConsensusV1.RoundValidator[]",
117
+ "components": [
118
+ { "name": "addr", "type": "address", "internalType": "address" },
119
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" }
120
+ ]
121
+ }
122
+ ]
123
+ }
124
+ ],
125
+ "stateMutability": "view"
126
+ },
127
+ {
128
+ "type": "function",
129
+ "name": "getRoundsCount",
130
+ "inputs": [],
131
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
132
+ "stateMutability": "view"
133
+ },
134
+ {
135
+ "type": "function",
136
+ "name": "getValidator",
137
+ "inputs": [{ "name": "addr", "type": "address", "internalType": "address" }],
138
+ "outputs": [
139
+ {
140
+ "name": "",
141
+ "type": "tuple",
142
+ "internalType": "struct ConsensusV1.Validator",
143
+ "components": [
144
+ { "name": "addr", "type": "address", "internalType": "address" },
145
+ {
146
+ "name": "data",
147
+ "type": "tuple",
148
+ "internalType": "struct ConsensusV1.ValidatorData",
149
+ "components": [
150
+ { "name": "votersCount", "type": "uint256", "internalType": "uint256" },
151
+ { "name": "voteBalance", "type": "uint256", "internalType": "uint256" },
152
+ { "name": "isResigned", "type": "bool", "internalType": "bool" },
153
+ { "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }
154
+ ]
155
+ }
156
+ ]
157
+ }
158
+ ],
159
+ "stateMutability": "view"
160
+ },
161
+ {
162
+ "type": "function",
163
+ "name": "getVotes",
164
+ "inputs": [
165
+ { "name": "addr", "type": "address", "internalType": "address" },
166
+ { "name": "count", "type": "uint256", "internalType": "uint256" }
167
+ ],
168
+ "outputs": [
169
+ {
170
+ "name": "",
171
+ "type": "tuple[]",
172
+ "internalType": "struct ConsensusV1.VoteResult[]",
173
+ "components": [
174
+ { "name": "voter", "type": "address", "internalType": "address" },
175
+ { "name": "validator", "type": "address", "internalType": "address" }
176
+ ]
177
+ }
178
+ ],
179
+ "stateMutability": "view"
180
+ },
181
+ {
182
+ "type": "function",
183
+ "name": "getVotesCount",
184
+ "inputs": [],
185
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
186
+ "stateMutability": "view"
187
+ },
188
+ { "type": "function", "name": "initialize", "inputs": [], "outputs": [], "stateMutability": "nonpayable" },
189
+ {
190
+ "type": "function",
191
+ "name": "isValidatorRegistered",
192
+ "inputs": [{ "name": "addr", "type": "address", "internalType": "address" }],
193
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
194
+ "stateMutability": "view"
195
+ },
196
+ {
197
+ "type": "function",
198
+ "name": "owner",
199
+ "inputs": [],
200
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
201
+ "stateMutability": "view"
202
+ },
203
+ {
204
+ "type": "function",
205
+ "name": "proxiableUUID",
206
+ "inputs": [],
207
+ "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
208
+ "stateMutability": "view"
209
+ },
210
+ {
211
+ "type": "function",
212
+ "name": "registerValidator",
213
+ "inputs": [{ "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }],
214
+ "outputs": [],
215
+ "stateMutability": "nonpayable"
216
+ },
217
+ {
218
+ "type": "function",
219
+ "name": "registeredValidatorsCount",
220
+ "inputs": [],
221
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
222
+ "stateMutability": "view"
223
+ },
224
+ {
225
+ "type": "function",
226
+ "name": "renounceOwnership",
227
+ "inputs": [],
228
+ "outputs": [],
229
+ "stateMutability": "nonpayable"
230
+ },
231
+ { "type": "function", "name": "resignValidator", "inputs": [], "outputs": [], "stateMutability": "nonpayable" },
232
+ {
233
+ "type": "function",
234
+ "name": "resignedValidatorsCount",
235
+ "inputs": [],
236
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
237
+ "stateMutability": "view"
238
+ },
239
+ {
240
+ "type": "function",
241
+ "name": "transferOwnership",
242
+ "inputs": [{ "name": "newOwner", "type": "address", "internalType": "address" }],
243
+ "outputs": [],
244
+ "stateMutability": "nonpayable"
245
+ },
246
+ { "type": "function", "name": "unvote", "inputs": [], "outputs": [], "stateMutability": "nonpayable" },
247
+ {
248
+ "type": "function",
249
+ "name": "updateValidator",
250
+ "inputs": [{ "name": "blsPublicKey", "type": "bytes", "internalType": "bytes" }],
251
+ "outputs": [],
252
+ "stateMutability": "nonpayable"
253
+ },
254
+ {
255
+ "type": "function",
256
+ "name": "updateVoters",
257
+ "inputs": [{ "name": "voters", "type": "address[]", "internalType": "address[]" }],
258
+ "outputs": [],
259
+ "stateMutability": "nonpayable"
260
+ },
261
+ {
262
+ "type": "function",
263
+ "name": "upgradeToAndCall",
264
+ "inputs": [
265
+ { "name": "newImplementation", "type": "address", "internalType": "address" },
266
+ { "name": "data", "type": "bytes", "internalType": "bytes" }
267
+ ],
268
+ "outputs": [],
269
+ "stateMutability": "payable"
270
+ },
271
+ {
272
+ "type": "function",
273
+ "name": "version",
274
+ "inputs": [],
275
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
276
+ "stateMutability": "pure"
277
+ },
278
+ {
279
+ "type": "function",
280
+ "name": "vote",
281
+ "inputs": [{ "name": "addr", "type": "address", "internalType": "address" }],
282
+ "outputs": [],
283
+ "stateMutability": "nonpayable"
284
+ },
285
+ {
286
+ "type": "event",
287
+ "name": "Initialized",
288
+ "inputs": [{ "name": "version", "type": "uint64", "indexed": false, "internalType": "uint64" }],
289
+ "anonymous": false
290
+ },
291
+ {
292
+ "type": "event",
293
+ "name": "OwnershipTransferred",
294
+ "inputs": [
295
+ { "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" },
296
+ { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" }
297
+ ],
298
+ "anonymous": false
299
+ },
300
+ {
301
+ "type": "event",
302
+ "name": "Unvoted",
303
+ "inputs": [
304
+ { "name": "voter", "type": "address", "indexed": false, "internalType": "address" },
305
+ { "name": "validator", "type": "address", "indexed": false, "internalType": "address" }
306
+ ],
307
+ "anonymous": false
308
+ },
309
+ {
310
+ "type": "event",
311
+ "name": "Upgraded",
312
+ "inputs": [{ "name": "implementation", "type": "address", "indexed": true, "internalType": "address" }],
313
+ "anonymous": false
314
+ },
315
+ {
316
+ "type": "event",
317
+ "name": "ValidatorRegistered",
318
+ "inputs": [
319
+ { "name": "addr", "type": "address", "indexed": false, "internalType": "address" },
320
+ { "name": "blsPublicKey", "type": "bytes", "indexed": false, "internalType": "bytes" }
321
+ ],
322
+ "anonymous": false
323
+ },
324
+ {
325
+ "type": "event",
326
+ "name": "ValidatorResigned",
327
+ "inputs": [{ "name": "addr", "type": "address", "indexed": false, "internalType": "address" }],
328
+ "anonymous": false
329
+ },
330
+ {
331
+ "type": "event",
332
+ "name": "ValidatorUpdated",
333
+ "inputs": [
334
+ { "name": "addr", "type": "address", "indexed": false, "internalType": "address" },
335
+ { "name": "blsPublicKey", "type": "bytes", "indexed": false, "internalType": "bytes" }
336
+ ],
337
+ "anonymous": false
338
+ },
339
+ {
340
+ "type": "event",
341
+ "name": "Voted",
342
+ "inputs": [
343
+ { "name": "voter", "type": "address", "indexed": false, "internalType": "address" },
344
+ { "name": "validator", "type": "address", "indexed": false, "internalType": "address" }
345
+ ],
346
+ "anonymous": false
347
+ },
348
+ {
349
+ "type": "error",
350
+ "name": "AddressEmptyCode",
351
+ "inputs": [{ "name": "target", "type": "address", "internalType": "address" }]
352
+ },
353
+ { "type": "error", "name": "AlreadyVoted", "inputs": [] },
354
+ { "type": "error", "name": "BellowMinValidators", "inputs": [] },
355
+ { "type": "error", "name": "BlsKeyAlreadyRegistered", "inputs": [] },
356
+ { "type": "error", "name": "BlsKeyIsInvalid", "inputs": [] },
357
+ { "type": "error", "name": "CallerIsNotValidator", "inputs": [] },
358
+ {
359
+ "type": "error",
360
+ "name": "ERC1967InvalidImplementation",
361
+ "inputs": [{ "name": "implementation", "type": "address", "internalType": "address" }]
362
+ },
363
+ { "type": "error", "name": "ERC1967NonPayable", "inputs": [] },
364
+ { "type": "error", "name": "FailedCall", "inputs": [] },
365
+ { "type": "error", "name": "ImportIsNotAllowed", "inputs": [] },
366
+ { "type": "error", "name": "InvalidInitialization", "inputs": [] },
367
+ { "type": "error", "name": "InvalidParameters", "inputs": [] },
368
+ {
369
+ "type": "error",
370
+ "name": "InvalidRange",
371
+ "inputs": [
372
+ { "name": "min", "type": "uint256", "internalType": "uint256" },
373
+ { "name": "max", "type": "uint256", "internalType": "uint256" }
374
+ ]
375
+ },
376
+ { "type": "error", "name": "MissingVote", "inputs": [] },
377
+ { "type": "error", "name": "NoActiveValidators", "inputs": [] },
378
+ { "type": "error", "name": "NotInitializing", "inputs": [] },
379
+ {
380
+ "type": "error",
381
+ "name": "OwnableInvalidOwner",
382
+ "inputs": [{ "name": "owner", "type": "address", "internalType": "address" }]
383
+ },
384
+ {
385
+ "type": "error",
386
+ "name": "OwnableUnauthorizedAccount",
387
+ "inputs": [{ "name": "account", "type": "address", "internalType": "address" }]
388
+ },
389
+ { "type": "error", "name": "UUPSUnauthorizedCallContext", "inputs": [] },
390
+ {
391
+ "type": "error",
392
+ "name": "UUPSUnsupportedProxiableUUID",
393
+ "inputs": [{ "name": "slot", "type": "bytes32", "internalType": "bytes32" }]
394
+ },
395
+ { "type": "error", "name": "ValidatorAlreadyRegistered", "inputs": [] },
396
+ { "type": "error", "name": "ValidatorAlreadyResigned", "inputs": [] },
397
+ { "type": "error", "name": "ValidatorNotRegistered", "inputs": [] },
398
+ { "type": "error", "name": "VoteResignedValidator", "inputs": [] },
399
+ { "type": "error", "name": "VoteSameValidator", "inputs": [] },
400
+ { "type": "error", "name": "VoteValidatorWithoutBlsPublicKey", "inputs": [] }
401
+ ],
402
+ "bytecode": {
403
+ "object": "0x60a0604052306080523480156012575f5ffd5b5060805161387e6100395f395f81816122680152818161229101526123d0015261387e5ff3fe6080604052600436106101af575f3560e01c8063715018a6116100e7578063ad3cb1cc11610087578063eb9019d411610062578063eb9019d4146104a2578063f1bd0b37146104ce578063f2fde38b146104e2578063f3513a3714610501575f5ffd5b8063ad3cb1cc14610422578063b85f5da21461045f578063d04a68c714610473575f5ffd5b8063857861db116100c2578063857861db146103885780638da5cb5b146103a75780639de70258146103ed578063a09686c41461040e575f5ffd5b8063715018a6146103415780637c8a92c3146103555780638129fc1c14610374575f5ffd5b806340f74f471161015257806354fd4d501161012d57806354fd4d50146102d15780635a8eed73146102e4578063602a9eee146103035780636dd7d8ea14610322575f5ffd5b806340f74f471461027e5780634f1ef286146102aa57806352d1902d146102bd575f5ffd5b80631b605b861161018d5780631b605b86146102165780632bdf6d431461022a5780633174b6891461024b5780633d09c2a81461025f575f5ffd5b80630777cbef146101b35780630d2bd909146101d65780631904bb2e146101ea575b5f5ffd5b3480156101be575f5ffd5b506005545b6040519081526020015b60405180910390f35b3480156101e1575f5ffd5b50600d546101c3565b3480156101f5575f5ffd5b50610209610204366004613014565b610515565b6040516101cd91906130d3565b348015610221575f5ffd5b506009546101c3565b348015610235575f5ffd5b506102496102443660046130e5565b610630565b005b348015610256575f5ffd5b5061024961067e565b34801561026a575f5ffd5b50610249610279366004613154565b6106cd565b348015610289575f5ffd5b5061029d610298366004613185565b610918565b6040516101cd91906131a5565b6102496102b8366004613272565b610aab565b3480156102c8575f5ffd5b506101c3610aca565b3480156102dc575f5ffd5b5060016101c3565b3480156102ef575f5ffd5b506102496102fe366004613377565b610ae5565b34801561030e575f5ffd5b5061024961031d366004613377565b610b71565b34801561032d575f5ffd5b5061024961033c366004613014565b610cff565b34801561034c575f5ffd5b50610249610f7d565b348015610360575f5ffd5b5061024961036f3660046133b5565b610f90565b34801561037f575f5ffd5b506102496111cf565b348015610393575f5ffd5b506102496103a236600461341a565b6112db565b3480156103b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101cd565b3480156103f8575f5ffd5b50610401611874565b6040516101cd919061343a565b348015610419575f5ffd5b50600f546101c3565b34801561042d575f5ffd5b50610452604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101cd9190613491565b34801561046a575f5ffd5b50610249611a14565b34801561047e575f5ffd5b5061049261048d366004613014565b611afd565b60405190151581526020016101cd565b3480156104ad575f5ffd5b506104c16104bc3660046134a3565b611b1a565b6040516101cd91906134cb565b3480156104d9575f5ffd5b506004546101c3565b3480156104ed575f5ffd5b506102496104fc366004613014565b611d1b565b34801561050c575f5ffd5b50610401611d5d565b61051d612f1e565b61052682611afd565b6105435760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549394928501936060840191906105a790613525565b80601f01602080910402602001604051908101604052809291908181526020018280546105d390613525565b801561061e5780601f106105f55761010080835404028352916020019161061e565b820191905f5260205f20905b81548152906001019060200180831161060157829003601f168201915b50505091909252505050905292915050565b610638611ef7565b5f5b818110156106795761067183838381811061065757610657613557565b905060200201602081019061066c9190613014565b611f52565b60010161063a565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef336106a8612032565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b6106d5611ef7565b600f54156106f6576040516349625b3b60e01b815260040160405180910390fd5b6106ff81611afd565b61071c5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260066020526040902080549091161561075757604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556007541661081457600780546001600160a01b0385166001600160a01b0319918216811790925560088054909116909117905561086c565b600880546001600160a01b039081165f9081526006602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f61087b8361357f565b90915550506001600160a01b038083165f90815260208190526040812060018101805491938716319290916108b1908490613597565b9091555050805460019082905f906108ca908490613597565b9091555050604080516001600160a01b038087168252851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e2910160405180910390a150505050565b6060610922611ef7565b600f548290841061093457505f610958565b600f546109418486613597565b111561095857600f546109559085906135aa565b90505b5f816001600160401b038111156109715761097161325e565b6040519080825280602002602001820160405280156109b657816020015b604080518082019091525f81526060602082015281526020019060019003908161098f5790505b5090505f5b82811015610aa057604051806040016040528082886109da9190613597565b6109e5906001613597565b8152602001600f6109f6848a613597565b81548110610a0657610a06613557565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610a74575f848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101610a2d565b50505050815250828281518110610a8d57610a8d613557565b60209081029190910101526001016109bb565b509150505b92915050565b610ab361225d565b610abc82612301565b610ac68282612309565b5050565b5f610ad36123c5565b505f5160206138295f395f51905f5290565b610aee33611afd565b610b0b5760405163510b8aad60e11b815260040160405180910390fd5b610b15828261240e565b335f908152602081905260409020600301610b31828483613601565b507f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b65939291906136ba565b60405180910390a15050565b335f9081526001602052604090205460ff1615610ba15760405163132e7efb60e31b815260040160405180910390fd5b610bab828261240e565b5f60405180608001604052805f81526020015f81526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050600480549394509150610c148361357f565b9091555050335f908152600160208181526040808420805460ff19908116851790915584835293819020855181559185015192820192909255908301516002820180549093169015151790915560608201518291906003820190610c7890826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916339081179091556040517f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c9250610cf29190869086906136ba565b60405180910390a1505050565b610d0881611afd565b610d255760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f908152602081905260409020600281015460ff1615610d625760405163510ae2bd60e11b815260040160405180910390fd5b806003018054610d7190613525565b90505f03610d925760405163970c784d60e01b815260040160405180910390fd5b335f90815260066020526040902080546001600160a01b03848116911603610dcd57604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610de757610de5612032565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560075416610e995760078054336001600160a01b03199182168117909255600880549091169091179055610ef0565b600880546001600160a01b039081165f9081526006602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f610eff8361357f565b9190505550336001600160a01b031631826001015f828254610f219190613597565b9091555050815460019083905f90610f3a908490613597565b9091555050604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610cf2565b610f85611ef7565b610f8e5f612482565b565b610f98611ef7565b600f5415610fb9576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff1615610ff25760405163132e7efb60e31b815260040160405180910390fd5b60025f84846040516110059291906137b3565b604080519182900390912082526020820192909252015f205460ff161561103f57604051637e4c066f60e01b815260040160405180910390fd5b811561104f5761104f838361240e565b5f60405180608001604052805f81526020015f8152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506004805493945091506110b88361357f565b90915550506001600160a01b0385165f908152600160208181526040808420805460ff1990811685179091558483529381902085518155918501519282019290925590830151600282018054909316901515179091556060820151829190600382019061112590826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561118d5760058054905f6111878361357f565b91905055505b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c8585856040516111c0939291906136ba565b60405180910390a15050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112135750825b90505f826001600160401b0316600114801561122e5750303b155b90508115801561123c575080155b1561125a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561128457845460ff60401b1916600160401b1785555b61128d336124f2565b6001600e5583156112d457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111c0565b5050505050565b6112e3611ef7565b8060ff165f0361130657604051630e52390960e41b815260040160405180910390fd5b60ff8116600e556113176003612503565b61131f612653565b600c80546001600160a01b03191690556005546004545f916113519160ff851691849161134c91906135aa565b6126a4565b90508060ff165f03611376576040516367c0fced60e01b815260040160405180910390fd5b5f5b600354811015611638575f6003828154811061139657611396613557565b5f9182526020808320909101546001600160a01b031680835290829052604090912060028101549192509060ff16806113dd57508060030180546113d990613525565b1590505b156113e9575050611630565b600c546001600160a01b03166114245750600c80546001600160a01b0319166001600160a01b03929092169190911790556001600d55611630565b8360ff16600d5410156114425761143b82856126f8565b5050611630565b600c546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160808101845285548152600186015481840152600286015460ff16151593810193909352600385018054919461161d949093840192909187916060840191906114b590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546114e190613525565b801561152c5780601f106115035761010080835404028352916020019161152c565b820191905f5260205f20905b81548152906001019060200180831161150f57829003601f168201915b505050919092525050509052604080518082018252600c546001600160a01b031681528151608081018352855481526001860154602082810191909152600287015460ff1615159382019390935260038601805492938401928791606084019161159590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546115c190613525565b801561160c5780601f106115e35761010080835404028352916020019161160c565b820191905f5260205f20905b8154815290600101906020018083116115ef57829003601f168201915b505050505081525050815250612ad4565b1561162c5761162c83866126f8565b5050505b600101611378565b50600d545f0361165b576040516367c0fced60e01b815260040160405180910390fd5b600c54600d546001600160a01b03909116905f906001600160401b038111156116865761168661325e565b6040519080825280602002602001820160405280156116af578160200160208202803683370190505b5090505f5b600d5481101561170957828282815181106116d1576116d1613557565b6001600160a01b039283166020918202929092018101919091529381165f908152600a909452604090932054909216916001016116b4565b5061171381612b18565b600f80546001810182555f9182527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802019061175090600b90612f67565b600e546001600160401b0381111561176a5761176a61325e565b604051908082528060200260200182016040528015611793578160200160208202803683370190505b5080516117a891600b91602090910190612f82565b505f5b600e5481101561186c575f83600d54836117c591906137c2565b815181106117d5576117d5613557565b6020026020010151905080600b83815481106117f3576117f3613557565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832060019081015486840190815288548083018a55898652939094209551600290930290950180549290941691161782555190820155016117ab565b505050505050565b600b546060905f906001600160401b038111156118935761189361325e565b6040519080825280602002602001820160405280156118cc57816020015b6118b9612f1e565b8152602001906001900390816118b15790505b5090505f5b600b54811015611a0e575f600b82815481106118ef576118ef613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff16151595810195909552600382018054939650919490938401929091859160608401919061196490613525565b80601f016020809104026020016040519081016040528092919081815260200182805461199090613525565b80156119db5780601f106119b2576101008083540402835291602001916119db565b820191905f5260205f20905b8154815290600101906020018083116119be57829003601f168201915b5050505050815250508152508484815181106119f9576119f9613557565b602090810291909101015250506001016118d1565b50919050565b611a1d33611afd565b611a3a5760405163668191af60e11b815260040160405180910390fd5b335f908152602081905260409020600281015460ff1615611a6e57604051632d8b5c9760e21b815260040160405180910390fd5b600e54600554600454611a8191906135aa565b11611a9f57604051633b15f1f760e21b815260040160405180910390fd5b60028101805460ff19166001908117909155600580545f90611ac2908490613597565b90915550506040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a541179060200160405180910390a150565b6001600160a01b03165f9081526001602052604090205460ff1690565b6060611b24611ef7565b5f611b32835f6009546126a4565b6001600160401b03811115611b4957611b4961325e565b604051908082528060200260200182016040528015611b8d57816020015b604080518082019091525f8082526020820152815260200190600190039081611b675790505b506007549091506001600160a01b0390811690851615611bc657506001600160a01b038085165f90815260066020526040902060030154165b5f5b6001600160a01b03821615801590611bdf57508481105b15611c54576001600160a01b038083165f818152600660209081526040918290208251808401909352928252825490931692810192909252908483611c238161357f565b945081518110611c3557611c35613557565b6020908102919091010152600301546001600160a01b03169150611bc8565b80835103611c6757829350505050610aa5565b5f816001600160401b03811115611c8057611c8061325e565b604051908082528060200260200182016040528015611cc457816020015b604080518082019091525f8082526020820152815260200190600190039081611c9e5790505b5090505f5b82811015611d1057848181518110611ce357611ce3613557565b6020026020010151828281518110611cfd57611cfd613557565b6020908102919091010152600101611cc9565b509695505050505050565b611d23611ef7565b6001600160a01b038116611d5157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b611d5a81612482565b50565b6003546060905f906001600160401b03811115611d7c57611d7c61325e565b604051908082528060200260200182016040528015611db557816020015b611da2612f1e565b815260200190600190039081611d9a5790505b5090505f5b600354811015611a0e575f60038281548110611dd857611dd8613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff161515958101959095526003820180549396509194909384019290918591606084019190611e4d90613525565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7990613525565b8015611ec45780601f10611e9b57610100808354040283529160200191611ec4565b820191905f5260205f20905b815481529060010190602001808311611ea757829003601f168201915b505050505081525050815250848481518110611ee257611ee2613557565b60209081029190910101525050600101611dba565b33611f297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610f8e5760405163118cdaa760e01b8152336004820152602401611d48565b6001600160a01b038082165f9081526006602052604090208054909116611f77575050565b60018101546001600160a01b03831631811015611fd857611fa2816001600160a01b038516316135aa565b82546001600160a01b03165f9081526020819052604081206001018054909190611fcd908490613597565b9091555061201d9050565b611fec6001600160a01b03841631826135aa565b82546001600160a01b03165f90815260208190526040812060010180549091906120179084906135aa565b90915550505b506001600160a01b0390911631600190910155565b335f90815260066020526040812080546001600160a01b03166120685760405163498ea63d60e01b815260040160405180910390fd5b6008546007546001600160a01b039182169116036120a157600780546001600160a01b03199081169091556008805490911690556121b4565b600854336001600160a01b03909116036120fa576002810180546001600160a01b039081165f90815260066020526040902060030180546001600160a01b031990811690915591546008805490931691161790556121b4565b600754336001600160a01b039091160361215e576008546001600160a01b039081165f9081526006602052604080822060020180546001600160a01b03199081169091556007805480861685529290932060030154911692169190911790556121b4565b60038181018054600280850180546001600160a01b039081165f9081526006602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f8181526020819052604081206001808501549082018054929391929091906121e99084906135aa565b9091555050805460019082905f906122029084906135aa565b9091555050335f90815260066020526040812080546001600160a01b0319908116825560018201839055600282018054821690556003909101805490911690556009805491612250836137e1565b9091555091949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122d75f5160206138295f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610f8e5760405163703e46dd60e11b815260040160405180910390fd5b611d5a611ef7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612363575060408051601f3d908101601f19168201909252612360918101906137f6565b60015b61238b57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611d48565b5f5160206138295f395f51905f5281146123bb57604051632a87526960e21b815260048101829052602401611d48565b6106798383612c2f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8e5760405163703e46dd60e11b815260040160405180910390fd5b5f828260405161241f9291906137b3565b60408051918290039091205f8181526002602052919091205490915060ff161561245c57604051637e4c066f60e01b815260040160405180910390fd5b6124668383612c84565b5f908152600260205260409020805460ff191660011790555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6124fa612ca5565b611d5a81612cee565b80545f819003612511575050565b5f61251d6001836135aa565b90505b8015610679575f612532826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c61256791906137c2565b90505f84838154811061257c5761257c613557565b5f9182526020909120015485546001600160a01b0390911691508590839081106125a8576125a8613557565b905f5260205f20015f9054906101000a90046001600160a01b03168584815481106125d5576125d5613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508085838154811061261357612613613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505050808061264b906137e1565b915050612520565b600c546001600160a01b03165b6001600160a01b0381161561269d576001600160a01b039081165f908152600a6020526040902080546001600160a01b0319811690915516612660565b505f600d55565b5f818311156126d057604051632457cde760e01b81526004810184905260248101839052604401611d48565b828410156126df5750816126f1565b818411156126ee5750806126f1565b50825b9392505050565b6001600160a01b0382165f90815260208181526040808320815160808101835281548152600182015493810193909352600281015460ff1615159183019190915260038101805460608401919061274e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461277a90613525565b80156127c55780601f1061279c576101008083540402835291602001916127c5565b820191905f5260205f20905b8154815290600101906020018083116127a857829003601f168201915b505050919092525050604080518082018252600c546001600160a01b03168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549697506128e49693955091850193929091606084019161283e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461286a90613525565b80156128b55780601f1061288c576101008083540402835291602001916128b5565b820191905f5260205f20905b81548152906001019060200180831161289857829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612ad4565b156128f7576128f283612cf6565b612a75565b600c546001600160a01b039081165f818152600a6020526040902054909116905b6001600160a01b038216612935576129308186612d47565b612a72565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff16151594810194909452600381018054612a4295938501939291606084019161299c90613525565b80601f01602080910402602001604051908101604052809291908181526020018280546129c890613525565b8015612a135780601f106129ea57610100808354040283529160200191612a13565b820191905f5260205f20905b8154815290600101906020018083116129f657829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612ad4565b15612a51576129308186612d47565b506001600160a01b038082165f908152600a60205260409020541690612918565b50505b8160ff16600d54111561067957600c80546001600160a01b039081165f908152600a6020526040812080546001600160a01b03198082169092558454931692168217909255600d80549192612ac9836137e1565b919050555050505050565b5f81602001516020015183602001516020015103612b045750805182516001600160a01b03918216911611610aa5565b506020908101518101519181015101511190565b80515f819003612b26575050565b5f612b326001836135aa565b90505b8015610679575f612b47826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c612b7c91906137c2565b90505f848381518110612b9157612b91613557565b60200260200101519050848281518110612bad57612bad613557565b6020026020010151858481518110612bc757612bc7613557565b60200260200101906001600160a01b031690816001600160a01b03168152505080858381518110612bfa57612bfa613557565b60200260200101906001600160a01b031690816001600160a01b03168152505050508080612c27906137e1565b915050612b35565b612c3882612da5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612c7c576106798282612e08565b610ac6612e7a565b60308114610ac6576040516305db9dbd60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610f8e57604051631afcd79f60e31b815260040160405180910390fd5b611d23612ca5565b600c80546001600160a01b038381165f818152600a602052604081208054939094166001600160a01b031993841617909355835490911617909155600d805491612d3f8361357f565b919050555050565b6001600160a01b038281165f818152600a602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600d805491612d9c8361357f565b91905055505050565b806001600160a01b03163b5f03612dda57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611d48565b5f5160206138295f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612e24919061380d565b5f60405180830381855af49150503d805f8114612e5c576040519150601f19603f3d011682016040523d82523d5f602084013e612e61565b606091505b5091509150612e71858383612e99565b95945050505050565b3415610f8e5760405163b398979f60e01b815260040160405180910390fd5b606082612eae57612ea982612ef5565b6126f1565b8151158015612ec557506001600160a01b0384163b155b15612eee57604051639996b31560e01b81526001600160a01b0385166004820152602401611d48565b50806126f1565b805115612f055780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b03168152602001612f6260405180608001604052805f81526020015f81526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611d5a9190612fe5565b828054828255905f5260205f20908101928215612fd5579160200282015b82811115612fd557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612fa0565b50612fe1929150612fe5565b5090565b5b80821115612fe1575f8155600101612fe6565b80356001600160a01b038116811461300f575f5ffd5b919050565b5f60208284031215613024575f5ffd5b6126f182612ff9565b5f5b8381101561304757818101518382015260200161302f565b50505f910152565b5f815180845261306681602086016020860161302d565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526020810151606085015260408101511515608085015260608101519050608060a08501526130cb60c085018261304f565b949350505050565b602081525f6126f1602083018461307a565b5f5f602083850312156130f6575f5ffd5b82356001600160401b0381111561310b575f5ffd5b8301601f8101851361311b575f5ffd5b80356001600160401b03811115613130575f5ffd5b8560208260051b8401011115613144575f5ffd5b6020919091019590945092505050565b5f5f60408385031215613165575f5ffd5b61316e83612ff9565b915061317c60208401612ff9565b90509250929050565b5f5f60408385031215613196575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b8083101561323a57835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613203565b509650505060209384019391909101906001016131cb565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215613283575f5ffd5b61328c83612ff9565b915060208301356001600160401b038111156132a6575f5ffd5b8301601f810185136132b6575f5ffd5b80356001600160401b038111156132cf576132cf61325e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156132fd576132fd61325e565b604052818152828201602001871015613314575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613343575f5ffd5b5081356001600160401b03811115613359575f5ffd5b602083019150836020828501011115613370575f5ffd5b9250929050565b5f5f60208385031215613388575f5ffd5b82356001600160401b0381111561339d575f5ffd5b6133a985828601613333565b90969095509350505050565b5f5f5f5f606085870312156133c8575f5ffd5b6133d185612ff9565b935060208501356001600160401b038111156133eb575f5ffd5b6133f787828801613333565b9094509250506040850135801515811461340f575f5ffd5b939692955090935050565b5f6020828403121561342a575f5ffd5b813560ff811681146126f1575f5ffd5b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257603f1987860301845261347c85835161307a565b94506020938401939190910190600101613460565b602081525f6126f1602083018461304f565b5f5f604083850312156134b4575f5ffd5b6134bd83612ff9565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b8181101561351a57835180516001600160a01b0390811685526020918201511681850152909301926040909201916001016134e4565b509095945050505050565b600181811c9082168061353957607f821691505b602082108103611a0e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016135905761359061356b565b5060010190565b80820180821115610aa557610aa561356b565b81810381811115610aa557610aa561356b565b601f82111561067957805f5260205f20601f840160051c810160208510156135e25750805b601f840160051c820191505b818110156112d4575f81556001016135ee565b6001600160401b038311156136185761361861325e565b61362c836136268354613525565b836135bd565b5f601f84116001811461365d575f85156136465750838201355b5f19600387901b1c1916600186901b1783556112d4565b5f83815260208120601f198716915b8281101561368c578685013582556020948501946001909201910161366c565b50868210156136a8575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b038111156137125761371261325e565b613726816137208454613525565b846135bd565b6020601f821160018114613758575f83156137415750848201515b5f19600385901b1c1916600184901b1784556112d4565b5f84815260208120601f198516915b828110156137875787850151825560209485019460019092019101613767565b50848210156137a457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b818382375f9101908152919050565b5f826137dc57634e487b7160e01b5f52601260045260245ffd5b500690565b5f816137ef576137ef61356b565b505f190190565b5f60208284031215613806575f5ffd5b5051919050565b5f825161381e81846020870161302d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220983e2d933e18f12cab95985824dc16db07106a30fc15cd31c83493c6e0e0f72b64736f6c634300081b0033",
404
+ "sourceMap": "1266:19289:37:-:0;;;1171:4:25;1128:48;;1266:19289:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
405
+ "linkReferences": {}
406
+ },
407
+ "deployedBytecode": {
408
+ "object": "0x6080604052600436106101af575f3560e01c8063715018a6116100e7578063ad3cb1cc11610087578063eb9019d411610062578063eb9019d4146104a2578063f1bd0b37146104ce578063f2fde38b146104e2578063f3513a3714610501575f5ffd5b8063ad3cb1cc14610422578063b85f5da21461045f578063d04a68c714610473575f5ffd5b8063857861db116100c2578063857861db146103885780638da5cb5b146103a75780639de70258146103ed578063a09686c41461040e575f5ffd5b8063715018a6146103415780637c8a92c3146103555780638129fc1c14610374575f5ffd5b806340f74f471161015257806354fd4d501161012d57806354fd4d50146102d15780635a8eed73146102e4578063602a9eee146103035780636dd7d8ea14610322575f5ffd5b806340f74f471461027e5780634f1ef286146102aa57806352d1902d146102bd575f5ffd5b80631b605b861161018d5780631b605b86146102165780632bdf6d431461022a5780633174b6891461024b5780633d09c2a81461025f575f5ffd5b80630777cbef146101b35780630d2bd909146101d65780631904bb2e146101ea575b5f5ffd5b3480156101be575f5ffd5b506005545b6040519081526020015b60405180910390f35b3480156101e1575f5ffd5b50600d546101c3565b3480156101f5575f5ffd5b50610209610204366004613014565b610515565b6040516101cd91906130d3565b348015610221575f5ffd5b506009546101c3565b348015610235575f5ffd5b506102496102443660046130e5565b610630565b005b348015610256575f5ffd5b5061024961067e565b34801561026a575f5ffd5b50610249610279366004613154565b6106cd565b348015610289575f5ffd5b5061029d610298366004613185565b610918565b6040516101cd91906131a5565b6102496102b8366004613272565b610aab565b3480156102c8575f5ffd5b506101c3610aca565b3480156102dc575f5ffd5b5060016101c3565b3480156102ef575f5ffd5b506102496102fe366004613377565b610ae5565b34801561030e575f5ffd5b5061024961031d366004613377565b610b71565b34801561032d575f5ffd5b5061024961033c366004613014565b610cff565b34801561034c575f5ffd5b50610249610f7d565b348015610360575f5ffd5b5061024961036f3660046133b5565b610f90565b34801561037f575f5ffd5b506102496111cf565b348015610393575f5ffd5b506102496103a236600461341a565b6112db565b3480156103b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101cd565b3480156103f8575f5ffd5b50610401611874565b6040516101cd919061343a565b348015610419575f5ffd5b50600f546101c3565b34801561042d575f5ffd5b50610452604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101cd9190613491565b34801561046a575f5ffd5b50610249611a14565b34801561047e575f5ffd5b5061049261048d366004613014565b611afd565b60405190151581526020016101cd565b3480156104ad575f5ffd5b506104c16104bc3660046134a3565b611b1a565b6040516101cd91906134cb565b3480156104d9575f5ffd5b506004546101c3565b3480156104ed575f5ffd5b506102496104fc366004613014565b611d1b565b34801561050c575f5ffd5b50610401611d5d565b61051d612f1e565b61052682611afd565b6105435760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549394928501936060840191906105a790613525565b80601f01602080910402602001604051908101604052809291908181526020018280546105d390613525565b801561061e5780601f106105f55761010080835404028352916020019161061e565b820191905f5260205f20905b81548152906001019060200180831161060157829003601f168201915b50505091909252505050905292915050565b610638611ef7565b5f5b818110156106795761067183838381811061065757610657613557565b905060200201602081019061066c9190613014565b611f52565b60010161063a565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef336106a8612032565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b6106d5611ef7565b600f54156106f6576040516349625b3b60e01b815260040160405180910390fd5b6106ff81611afd565b61071c5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260066020526040902080549091161561075757604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556007541661081457600780546001600160a01b0385166001600160a01b0319918216811790925560088054909116909117905561086c565b600880546001600160a01b039081165f9081526006602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f61087b8361357f565b90915550506001600160a01b038083165f90815260208190526040812060018101805491938716319290916108b1908490613597565b9091555050805460019082905f906108ca908490613597565b9091555050604080516001600160a01b038087168252851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e2910160405180910390a150505050565b6060610922611ef7565b600f548290841061093457505f610958565b600f546109418486613597565b111561095857600f546109559085906135aa565b90505b5f816001600160401b038111156109715761097161325e565b6040519080825280602002602001820160405280156109b657816020015b604080518082019091525f81526060602082015281526020019060019003908161098f5790505b5090505f5b82811015610aa057604051806040016040528082886109da9190613597565b6109e5906001613597565b8152602001600f6109f6848a613597565b81548110610a0657610a06613557565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610a74575f848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101610a2d565b50505050815250828281518110610a8d57610a8d613557565b60209081029190910101526001016109bb565b509150505b92915050565b610ab361225d565b610abc82612301565b610ac68282612309565b5050565b5f610ad36123c5565b505f5160206138295f395f51905f5290565b610aee33611afd565b610b0b5760405163510b8aad60e11b815260040160405180910390fd5b610b15828261240e565b335f908152602081905260409020600301610b31828483613601565b507f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b65939291906136ba565b60405180910390a15050565b335f9081526001602052604090205460ff1615610ba15760405163132e7efb60e31b815260040160405180910390fd5b610bab828261240e565b5f60405180608001604052805f81526020015f81526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050600480549394509150610c148361357f565b9091555050335f908152600160208181526040808420805460ff19908116851790915584835293819020855181559185015192820192909255908301516002820180549093169015151790915560608201518291906003820190610c7890826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916339081179091556040517f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c9250610cf29190869086906136ba565b60405180910390a1505050565b610d0881611afd565b610d255760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f908152602081905260409020600281015460ff1615610d625760405163510ae2bd60e11b815260040160405180910390fd5b806003018054610d7190613525565b90505f03610d925760405163970c784d60e01b815260040160405180910390fd5b335f90815260066020526040902080546001600160a01b03848116911603610dcd57604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610de757610de5612032565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560075416610e995760078054336001600160a01b03199182168117909255600880549091169091179055610ef0565b600880546001600160a01b039081165f9081526006602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f610eff8361357f565b9190505550336001600160a01b031631826001015f828254610f219190613597565b9091555050815460019083905f90610f3a908490613597565b9091555050604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610cf2565b610f85611ef7565b610f8e5f612482565b565b610f98611ef7565b600f5415610fb9576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff1615610ff25760405163132e7efb60e31b815260040160405180910390fd5b60025f84846040516110059291906137b3565b604080519182900390912082526020820192909252015f205460ff161561103f57604051637e4c066f60e01b815260040160405180910390fd5b811561104f5761104f838361240e565b5f60405180608001604052805f81526020015f8152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506004805493945091506110b88361357f565b90915550506001600160a01b0385165f908152600160208181526040808420805460ff1990811685179091558483529381902085518155918501519282019290925590830151600282018054909316901515179091556060820151829190600382019061112590826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561118d5760058054905f6111878361357f565b91905055505b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c8585856040516111c0939291906136ba565b60405180910390a15050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112135750825b90505f826001600160401b0316600114801561122e5750303b155b90508115801561123c575080155b1561125a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561128457845460ff60401b1916600160401b1785555b61128d336124f2565b6001600e5583156112d457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111c0565b5050505050565b6112e3611ef7565b8060ff165f0361130657604051630e52390960e41b815260040160405180910390fd5b60ff8116600e556113176003612503565b61131f612653565b600c80546001600160a01b03191690556005546004545f916113519160ff851691849161134c91906135aa565b6126a4565b90508060ff165f03611376576040516367c0fced60e01b815260040160405180910390fd5b5f5b600354811015611638575f6003828154811061139657611396613557565b5f9182526020808320909101546001600160a01b031680835290829052604090912060028101549192509060ff16806113dd57508060030180546113d990613525565b1590505b156113e9575050611630565b600c546001600160a01b03166114245750600c80546001600160a01b0319166001600160a01b03929092169190911790556001600d55611630565b8360ff16600d5410156114425761143b82856126f8565b5050611630565b600c546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160808101845285548152600186015481840152600286015460ff16151593810193909352600385018054919461161d949093840192909187916060840191906114b590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546114e190613525565b801561152c5780601f106115035761010080835404028352916020019161152c565b820191905f5260205f20905b81548152906001019060200180831161150f57829003601f168201915b505050919092525050509052604080518082018252600c546001600160a01b031681528151608081018352855481526001860154602082810191909152600287015460ff1615159382019390935260038601805492938401928791606084019161159590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546115c190613525565b801561160c5780601f106115e35761010080835404028352916020019161160c565b820191905f5260205f20905b8154815290600101906020018083116115ef57829003601f168201915b505050505081525050815250612ad4565b1561162c5761162c83866126f8565b5050505b600101611378565b50600d545f0361165b576040516367c0fced60e01b815260040160405180910390fd5b600c54600d546001600160a01b03909116905f906001600160401b038111156116865761168661325e565b6040519080825280602002602001820160405280156116af578160200160208202803683370190505b5090505f5b600d5481101561170957828282815181106116d1576116d1613557565b6001600160a01b039283166020918202929092018101919091529381165f908152600a909452604090932054909216916001016116b4565b5061171381612b18565b600f80546001810182555f9182527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802019061175090600b90612f67565b600e546001600160401b0381111561176a5761176a61325e565b604051908082528060200260200182016040528015611793578160200160208202803683370190505b5080516117a891600b91602090910190612f82565b505f5b600e5481101561186c575f83600d54836117c591906137c2565b815181106117d5576117d5613557565b6020026020010151905080600b83815481106117f3576117f3613557565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832060019081015486840190815288548083018a55898652939094209551600290930290950180549290941691161782555190820155016117ab565b505050505050565b600b546060905f906001600160401b038111156118935761189361325e565b6040519080825280602002602001820160405280156118cc57816020015b6118b9612f1e565b8152602001906001900390816118b15790505b5090505f5b600b54811015611a0e575f600b82815481106118ef576118ef613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff16151595810195909552600382018054939650919490938401929091859160608401919061196490613525565b80601f016020809104026020016040519081016040528092919081815260200182805461199090613525565b80156119db5780601f106119b2576101008083540402835291602001916119db565b820191905f5260205f20905b8154815290600101906020018083116119be57829003601f168201915b5050505050815250508152508484815181106119f9576119f9613557565b602090810291909101015250506001016118d1565b50919050565b611a1d33611afd565b611a3a5760405163668191af60e11b815260040160405180910390fd5b335f908152602081905260409020600281015460ff1615611a6e57604051632d8b5c9760e21b815260040160405180910390fd5b600e54600554600454611a8191906135aa565b11611a9f57604051633b15f1f760e21b815260040160405180910390fd5b60028101805460ff19166001908117909155600580545f90611ac2908490613597565b90915550506040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a541179060200160405180910390a150565b6001600160a01b03165f9081526001602052604090205460ff1690565b6060611b24611ef7565b5f611b32835f6009546126a4565b6001600160401b03811115611b4957611b4961325e565b604051908082528060200260200182016040528015611b8d57816020015b604080518082019091525f8082526020820152815260200190600190039081611b675790505b506007549091506001600160a01b0390811690851615611bc657506001600160a01b038085165f90815260066020526040902060030154165b5f5b6001600160a01b03821615801590611bdf57508481105b15611c54576001600160a01b038083165f818152600660209081526040918290208251808401909352928252825490931692810192909252908483611c238161357f565b945081518110611c3557611c35613557565b6020908102919091010152600301546001600160a01b03169150611bc8565b80835103611c6757829350505050610aa5565b5f816001600160401b03811115611c8057611c8061325e565b604051908082528060200260200182016040528015611cc457816020015b604080518082019091525f8082526020820152815260200190600190039081611c9e5790505b5090505f5b82811015611d1057848181518110611ce357611ce3613557565b6020026020010151828281518110611cfd57611cfd613557565b6020908102919091010152600101611cc9565b509695505050505050565b611d23611ef7565b6001600160a01b038116611d5157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b611d5a81612482565b50565b6003546060905f906001600160401b03811115611d7c57611d7c61325e565b604051908082528060200260200182016040528015611db557816020015b611da2612f1e565b815260200190600190039081611d9a5790505b5090505f5b600354811015611a0e575f60038281548110611dd857611dd8613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff161515958101959095526003820180549396509194909384019290918591606084019190611e4d90613525565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7990613525565b8015611ec45780601f10611e9b57610100808354040283529160200191611ec4565b820191905f5260205f20905b815481529060010190602001808311611ea757829003601f168201915b505050505081525050815250848481518110611ee257611ee2613557565b60209081029190910101525050600101611dba565b33611f297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610f8e5760405163118cdaa760e01b8152336004820152602401611d48565b6001600160a01b038082165f9081526006602052604090208054909116611f77575050565b60018101546001600160a01b03831631811015611fd857611fa2816001600160a01b038516316135aa565b82546001600160a01b03165f9081526020819052604081206001018054909190611fcd908490613597565b9091555061201d9050565b611fec6001600160a01b03841631826135aa565b82546001600160a01b03165f90815260208190526040812060010180549091906120179084906135aa565b90915550505b506001600160a01b0390911631600190910155565b335f90815260066020526040812080546001600160a01b03166120685760405163498ea63d60e01b815260040160405180910390fd5b6008546007546001600160a01b039182169116036120a157600780546001600160a01b03199081169091556008805490911690556121b4565b600854336001600160a01b03909116036120fa576002810180546001600160a01b039081165f90815260066020526040902060030180546001600160a01b031990811690915591546008805490931691161790556121b4565b600754336001600160a01b039091160361215e576008546001600160a01b039081165f9081526006602052604080822060020180546001600160a01b03199081169091556007805480861685529290932060030154911692169190911790556121b4565b60038181018054600280850180546001600160a01b039081165f9081526006602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f8181526020819052604081206001808501549082018054929391929091906121e99084906135aa565b9091555050805460019082905f906122029084906135aa565b9091555050335f90815260066020526040812080546001600160a01b0319908116825560018201839055600282018054821690556003909101805490911690556009805491612250836137e1565b9091555091949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122d75f5160206138295f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610f8e5760405163703e46dd60e11b815260040160405180910390fd5b611d5a611ef7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612363575060408051601f3d908101601f19168201909252612360918101906137f6565b60015b61238b57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611d48565b5f5160206138295f395f51905f5281146123bb57604051632a87526960e21b815260048101829052602401611d48565b6106798383612c2f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8e5760405163703e46dd60e11b815260040160405180910390fd5b5f828260405161241f9291906137b3565b60408051918290039091205f8181526002602052919091205490915060ff161561245c57604051637e4c066f60e01b815260040160405180910390fd5b6124668383612c84565b5f908152600260205260409020805460ff191660011790555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6124fa612ca5565b611d5a81612cee565b80545f819003612511575050565b5f61251d6001836135aa565b90505b8015610679575f612532826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c61256791906137c2565b90505f84838154811061257c5761257c613557565b5f9182526020909120015485546001600160a01b0390911691508590839081106125a8576125a8613557565b905f5260205f20015f9054906101000a90046001600160a01b03168584815481106125d5576125d5613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508085838154811061261357612613613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505050808061264b906137e1565b915050612520565b600c546001600160a01b03165b6001600160a01b0381161561269d576001600160a01b039081165f908152600a6020526040902080546001600160a01b0319811690915516612660565b505f600d55565b5f818311156126d057604051632457cde760e01b81526004810184905260248101839052604401611d48565b828410156126df5750816126f1565b818411156126ee5750806126f1565b50825b9392505050565b6001600160a01b0382165f90815260208181526040808320815160808101835281548152600182015493810193909352600281015460ff1615159183019190915260038101805460608401919061274e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461277a90613525565b80156127c55780601f1061279c576101008083540402835291602001916127c5565b820191905f5260205f20905b8154815290600101906020018083116127a857829003601f168201915b505050919092525050604080518082018252600c546001600160a01b03168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549697506128e49693955091850193929091606084019161283e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461286a90613525565b80156128b55780601f1061288c576101008083540402835291602001916128b5565b820191905f5260205f20905b81548152906001019060200180831161289857829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612ad4565b156128f7576128f283612cf6565b612a75565b600c546001600160a01b039081165f818152600a6020526040902054909116905b6001600160a01b038216612935576129308186612d47565b612a72565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff16151594810194909452600381018054612a4295938501939291606084019161299c90613525565b80601f01602080910402602001604051908101604052809291908181526020018280546129c890613525565b8015612a135780601f106129ea57610100808354040283529160200191612a13565b820191905f5260205f20905b8154815290600101906020018083116129f657829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612ad4565b15612a51576129308186612d47565b506001600160a01b038082165f908152600a60205260409020541690612918565b50505b8160ff16600d54111561067957600c80546001600160a01b039081165f908152600a6020526040812080546001600160a01b03198082169092558454931692168217909255600d80549192612ac9836137e1565b919050555050505050565b5f81602001516020015183602001516020015103612b045750805182516001600160a01b03918216911611610aa5565b506020908101518101519181015101511190565b80515f819003612b26575050565b5f612b326001836135aa565b90505b8015610679575f612b47826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c612b7c91906137c2565b90505f848381518110612b9157612b91613557565b60200260200101519050848281518110612bad57612bad613557565b6020026020010151858481518110612bc757612bc7613557565b60200260200101906001600160a01b031690816001600160a01b03168152505080858381518110612bfa57612bfa613557565b60200260200101906001600160a01b031690816001600160a01b03168152505050508080612c27906137e1565b915050612b35565b612c3882612da5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612c7c576106798282612e08565b610ac6612e7a565b60308114610ac6576040516305db9dbd60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610f8e57604051631afcd79f60e31b815260040160405180910390fd5b611d23612ca5565b600c80546001600160a01b038381165f818152600a602052604081208054939094166001600160a01b031993841617909355835490911617909155600d805491612d3f8361357f565b919050555050565b6001600160a01b038281165f818152600a602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600d805491612d9c8361357f565b91905055505050565b806001600160a01b03163b5f03612dda57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611d48565b5f5160206138295f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612e24919061380d565b5f60405180830381855af49150503d805f8114612e5c576040519150601f19603f3d011682016040523d82523d5f602084013e612e61565b606091505b5091509150612e71858383612e99565b95945050505050565b3415610f8e5760405163b398979f60e01b815260040160405180910390fd5b606082612eae57612ea982612ef5565b6126f1565b8151158015612ec557506001600160a01b0384163b155b15612eee57604051639996b31560e01b81526001600160a01b0385166004820152602401611d48565b50806126f1565b805115612f055780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b03168152602001612f6260405180608001604052805f81526020015f81526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611d5a9190612fe5565b828054828255905f5260205f20908101928215612fd5579160200282015b82811115612fd557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612fa0565b50612fe1929150612fe5565b5090565b5b80821115612fe1575f8155600101612fe6565b80356001600160a01b038116811461300f575f5ffd5b919050565b5f60208284031215613024575f5ffd5b6126f182612ff9565b5f5b8381101561304757818101518382015260200161302f565b50505f910152565b5f815180845261306681602086016020860161302d565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526020810151606085015260408101511515608085015260608101519050608060a08501526130cb60c085018261304f565b949350505050565b602081525f6126f1602083018461307a565b5f5f602083850312156130f6575f5ffd5b82356001600160401b0381111561310b575f5ffd5b8301601f8101851361311b575f5ffd5b80356001600160401b03811115613130575f5ffd5b8560208260051b8401011115613144575f5ffd5b6020919091019590945092505050565b5f5f60408385031215613165575f5ffd5b61316e83612ff9565b915061317c60208401612ff9565b90509250929050565b5f5f60408385031215613196575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b8083101561323a57835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613203565b509650505060209384019391909101906001016131cb565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215613283575f5ffd5b61328c83612ff9565b915060208301356001600160401b038111156132a6575f5ffd5b8301601f810185136132b6575f5ffd5b80356001600160401b038111156132cf576132cf61325e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156132fd576132fd61325e565b604052818152828201602001871015613314575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613343575f5ffd5b5081356001600160401b03811115613359575f5ffd5b602083019150836020828501011115613370575f5ffd5b9250929050565b5f5f60208385031215613388575f5ffd5b82356001600160401b0381111561339d575f5ffd5b6133a985828601613333565b90969095509350505050565b5f5f5f5f606085870312156133c8575f5ffd5b6133d185612ff9565b935060208501356001600160401b038111156133eb575f5ffd5b6133f787828801613333565b9094509250506040850135801515811461340f575f5ffd5b939692955090935050565b5f6020828403121561342a575f5ffd5b813560ff811681146126f1575f5ffd5b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257603f1987860301845261347c85835161307a565b94506020938401939190910190600101613460565b602081525f6126f1602083018461304f565b5f5f604083850312156134b4575f5ffd5b6134bd83612ff9565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b8181101561351a57835180516001600160a01b0390811685526020918201511681850152909301926040909201916001016134e4565b509095945050505050565b600181811c9082168061353957607f821691505b602082108103611a0e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016135905761359061356b565b5060010190565b80820180821115610aa557610aa561356b565b81810381811115610aa557610aa561356b565b601f82111561067957805f5260205f20601f840160051c810160208510156135e25750805b601f840160051c820191505b818110156112d4575f81556001016135ee565b6001600160401b038311156136185761361861325e565b61362c836136268354613525565b836135bd565b5f601f84116001811461365d575f85156136465750838201355b5f19600387901b1c1916600186901b1783556112d4565b5f83815260208120601f198716915b8281101561368c578685013582556020948501946001909201910161366c565b50868210156136a8575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b038111156137125761371261325e565b613726816137208454613525565b846135bd565b6020601f821160018114613758575f83156137415750848201515b5f19600385901b1c1916600184901b1784556112d4565b5f84815260208120601f198516915b828110156137875787850151825560209485019460019092019101613767565b50848210156137a457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b818382375f9101908152919050565b5f826137dc57634e487b7160e01b5f52601260045260245ffd5b500690565b5f816137ef576137ef61356b565b505f190190565b5f60208284031215613806575f5ffd5b5051919050565b5f825161381e81846020870161302d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220983e2d933e18f12cab95985824dc16db07106a30fc15cd31c83493c6e0e0f72b64736f6c634300081b0033",
409
+ "sourceMap": "1266:19289:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11522:115;;;;;;;;;;-1:-1:-1;11606:24:37;;11522:115;;;160:25:50;;;148:2;133:18;11522:115:37;;;;;;;;11643:111;;;;;;;;;;-1:-1:-1;11725:22:37;;11643:111;;11881:253;;;;;;;;;;-1:-1:-1;11881:253:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12997:93::-;;;;;;;;;;-1:-1:-1;13071:12:37;;12997:93;;8737:176;;;;;;;;;;-1:-1:-1;8737:176:37;;;;;:::i;:::-;;:::i;:::-;;8652:79;;;;;;;;;;;;;:::i;4875:1019::-;;;;;;;;;;-1:-1:-1;4875:1019:37;;;;;:::i;:::-;;:::i;14051:531::-;;;;;;;;;;-1:-1:-1;14051:531:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4161:214:25:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;11325:76:37:-;;;;;;;;;;-1:-1:-1;11393:1:37;11325:76;;6502:354;;;;;;;;;;-1:-1:-1;6502:354:37;;;;;:::i;:::-;;:::i;5900:596::-;;;;;;;;;;-1:-1:-1;5900:596:37;;;;;:::i;:::-;;:::i;7431:1215::-;;;;;;;;;;-1:-1:-1;7431:1215:37;;;;;:::i;:::-;;:::i;3155:101:23:-;;;;;;;;;;;;;:::i;3885:984:37:-;;;;;;;;;;-1:-1:-1;3885:984:37;;;;;:::i;:::-;;:::i;3634:112::-;;;;;;;;;;;;;:::i;8919:2360::-;;;;;;;;;;-1:-1:-1;8919:2360:37;;;;;:::i;:::-;;:::i;2441:144:23:-;;;;;;;;;;-1:-1:-1;1313:22:23;2570:8;2441:144;;-1:-1:-1;;;;;2570:8:23;;;7899:51:50;;7887:2;7872:18;2441:144:23;7753:203:50;12140:433:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13949:96::-;;;;;;;;;;-1:-1:-1;14024:7:37;:14;13949:96;;1819:58:25;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:25;;;;;;;;;;;;:::i;6862:563:37:-;;;;;;;;;;;;;:::i;11760:115::-;;;;;;;;;;-1:-1:-1;11760:115:37;;;;;:::i;:::-;;:::i;:::-;;;9183:14:50;;9176:22;9158:41;;9146:2;9131:18;11760:115:37;9018:187:50;13096:847:37;;;;;;;;;;-1:-1:-1;13096:847:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11407:109::-;;;;;;;;;;-1:-1:-1;11493:16:37;;11407:109;;3405:215:23;;;;;;;;;;-1:-1:-1;3405:215:23;;;;;:::i;:::-;;:::i;12579:412:37:-;;;;;;;;;;;;;:::i;11881:253::-;11940:16;;:::i;:::-;11973:27;11995:4;11973:21;:27::i;:::-;11968:90;;12023:24;;-1:-1:-1;;;12023:24:37;;;;;;;;;;;11968:90;12075:52;;;;;;;;-1:-1:-1;;;;;12075:52:37;;;;;-1:-1:-1;12104:21:37;;;12075:52;12104:21;;;;;;;12075:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;12075:52:37;;;;-1:-1:-1;;;12075:52:37;;12068:59;11881:253;-1:-1:-1;;11881:253:37:o;8737:176::-;2334:13:23;:11;:13::i;:::-;8820:9:37::1;8815:92;8835:17:::0;;::::1;8815:92;;;8873:23;8886:6;;8893:1;8886:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8873:12;:23::i;:::-;8854:3;;8815:92;;;;8737:176:::0;;:::o;8652:79::-;8694:30;8702:10;8714:9;:7;:9::i;:::-;8694:30;;;-1:-1:-1;;;;;11035:32:50;;;11017:51;;11104:32;;;;11099:2;11084:18;;11077:60;10990:18;8694:30:37;;;;;;;8652:79::o;4875:1019::-;2334:13:23;:11;:13::i;:::-;4959:7:37::1;:14:::0;:18;4955:76:::1;;5000:20;;-1:-1:-1::0;;;5000:20:37::1;;;;;;;;;;;4955:76;5046:32;5068:9;5046:21;:32::i;:::-;5041:95;;5101:24;;-1:-1:-1::0;;;5101:24:37::1;;;;;;;;;;;5041:95;-1:-1:-1::0;;;;;5171:14:37;;::::1;5146:22;5171:14:::0;;;:7:::1;:14;::::0;;;;5199:19;;5171:14;;5199:19:::1;:33:::0;5195:85:::1;;5255:14;;-1:-1:-1::0;;;5255:14:37::1;;;;;;;;;;;5195:85;5307:88;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;5307:88:37;;::::1;::::0;;5344:13;;::::1;::::0;::::1;5307:88;::::0;;::::1;::::0;;;-1:-1:-1;5307:88:37;;;;;;;;;;;;5290:14;;;:7:::1;:14:::0;;;;;;;:105;;;;;;::::1;-1:-1:-1::0;;;;;;5290:105:37;;::::1;;::::0;;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;5410:11:::1;::::0;::::1;5406:252;;5451:11;:19:::0;;-1:-1:-1;;;;;5451:19:37;::::1;-1:-1:-1::0;;;;;;5451:19:37;;::::1;::::0;::::1;::::0;;;5484:11:::1;:19:::0;;;;::::1;::::0;;::::1;::::0;;5406:252:::1;;;5542:11;::::0;;-1:-1:-1;;;;;5542:11:37;;::::1;5534:20;::::0;;;:7:::1;:20;::::0;;;;;:25:::1;;:33:::0;;;;::::1;-1:-1:-1::0;;;;;;5534:33:37;;::::1;::::0;::::1;::::0;;;5603:11;;5581:14;;;;;;;:19:::1;;:33:::0;;;::::1;5603:11:::0;;;::::1;5581:33:::0;;;::::1;::::0;;;5628:19;;::::1;;::::0;;5406:252:::1;5667:12;:14:::0;;;:12:::1;:14;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;5730:26:37;;::::1;5692:35;5730:26:::0;;;::::1;::::0;;;;;;5766:25:::1;::::0;::::1;:42:::0;;5730:26;;5795:13;::::1;;::::0;5766:25;;:42:::1;::::0;5795:13;;5766:42:::1;:::i;:::-;::::0;;;-1:-1:-1;;5818:30:37;;5847:1:::1;::::0;5818:13;;:25:::1;::::0;:30:::1;::::0;5847:1;;5818:30:::1;:::i;:::-;::::0;;;-1:-1:-1;;5864:23:37::1;::::0;;-1:-1:-1;;;;;11035:32:50;;;11017:51;;11104:32;;11099:2;11084:18;;11077:60;5864:23:37::1;::::0;10990:18:50;5864:23:37::1;;;;;;;4945:949;;4875:1019:::0;;:::o;14051:531::-;14134:14;2334:13:23;:11;:13::i;:::-;14205:7:37::1;:14:::0;14176:5;;14195:24;::::1;14191:163;;-1:-1:-1::0;14243:1:37::1;14191:163;;;14282:7;:14:::0;14265::::1;14274:5:::0;14265:6;:14:::1;:::i;:::-;:31;14261:93;;;14320:7;:14:::0;:23:::1;::::0;14337:6;;14320:23:::1;:::i;:::-;14312:31;;14261:93;14364:21;14400:5;-1:-1:-1::0;;;;;14388:18:37::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;14388:18:37::1;;;;;;;;;;;;;;;-1:-1:-1::0;14364:42:37;-1:-1:-1;14421:9:37::1;14416:136;14440:5;14436:1;:9;14416:136;;;14478:63;;;;;;;;14501:1;14492:6;:10;;;;:::i;:::-;:14;::::0;14505:1:::1;14492:14;:::i;:::-;14478:63:::0;;::::1;;14520:7;14528:10;14537:1:::0;14528:6;:10:::1;:::i;:::-;14520:19;;;;;;;;:::i;:::-;;;;;;;;14478:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;14478:63:37::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;::::0;14466:6:::1;14473:1;14466:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:75;14447:3:::1;;14416:136;;;-1:-1:-1::0;14569:6:37;-1:-1:-1;;2357:1:23::1;14051:531:37::0;;;;:::o;4161:214:25:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;3708:134::-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:25;:::o;6502:354:37:-;6580:33;6602:10;6580:21;:33::i;:::-;6575:96;;6636:24;;-1:-1:-1;;;6636:24:37;;;;;;;;;;;6575:96;6681:44;6712:12;;6681:30;:44::i;:::-;6752:10;6736:15;:27;;;;;;;;;;:40;;:55;6779:12;;6736:40;:55;:::i;:::-;;6807:42;6824:10;6836:12;;6807:42;;;;;;;;:::i;:::-;;;;;;;;6502:354;;:::o;5900:596::-;5993:10;5979:25;;;;:13;:25;;;;;;;;5975:91;;;6027:28;;-1:-1:-1;;;6027:28:37;;;;;;;;;;;5975:91;6076:44;6107:12;;6076:30;:44::i;:::-;6131:30;6176:94;;;;;;;;6204:1;6176:94;;;;6220:1;6176:94;;;;6235:5;6176:94;;;;;;6256:12;;6176:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6176:94:37;;;;-1:-1:-1;;6281:16:37;:18;;6131:139;;-1:-1:-1;6281:16:37;-1:-1:-1;6281:18:37;;;:::i;:::-;;;;-1:-1:-1;;6323:10:37;6309:25;;;;6337:4;6309:25;;;;;;;;:32;;-1:-1:-1;;6309:32:37;;;;;;;;6351:27;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;:39;;;;;;;;:::i;:::-;-1:-1:-1;;6400:11:37;:28;;;;;;;-1:-1:-1;6400:28:37;;;;;;;;-1:-1:-1;;;;;;6400:28:37;6417:10;6400:28;;;;;;6444:45;;;;-1:-1:-1;6444:45:37;;6417:10;6476:12;;;;6444:45;:::i;:::-;;;;;;;;5965:531;5900:596;;:::o;7431:1215::-;7483:27;7505:4;7483:21;:27::i;:::-;7478:90;;7533:24;;-1:-1:-1;;;7533:24:37;;;;;;;;;;;7478:90;-1:-1:-1;;;;;7616:21:37;;7578:35;7616:21;;;;;;;;;;7651:24;;;;;;7647:85;;;7698:23;;-1:-1:-1;;;7698:23:37;;;;;;;;;;;7647:85;7746:13;:26;;:33;;;;;:::i;:::-;;;7783:1;7746:38;7742:110;;7807:34;;-1:-1:-1;;;7807:34:37;;;;;;;;;;;7742:110;7891:10;7862:18;7883:19;;;:7;:19;;;;;7916:15;;-1:-1:-1;;;;;7916:23:37;;;:15;;:23;7912:80;;7962:19;;-1:-1:-1;;;7962:19:37;;;;;;;;;;;7912:80;8006:15;;-1:-1:-1;;;;;8006:15:37;:29;8002:69;;8051:9;:7;:9::i;:::-;;8002:69;8103:88;;;;;;;;-1:-1:-1;;;;;8103:88:37;;;;;8135:10;:18;;8103:88;;;;;;;-1:-1:-1;8103:88:37;;;;;;;;;;;;8081:19;;;:7;:19;;;;;;;:110;;;;;;;-1:-1:-1;;;;;;8081:110:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8206:11;;;8202:277;;8247:11;:24;;8261:10;-1:-1:-1;;;;;;8247:24:37;;;;;;;;8285:11;:24;;;;;;;;;;8202:277;;;8348:11;;;-1:-1:-1;;;;;8348:11:37;;;8340:20;;;;:7;:20;;;;;;:25;;:38;;-1:-1:-1;;;;;;8340:38:37;;;8368:10;8340:38;;;;;;8419:11;;8392:19;;;;;;;:24;;:38;;;;8419:11;;;;8392:38;;;;;;;8444:24;;;;;;8202:277;8488:12;:14;;;:12;:14;;;:::i;:::-;;;;;;8542:10;-1:-1:-1;;;;;8542:18:37;;8513:13;:25;;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;8570:30:37;;8599:1;;8570:13;;:25;;:30;;8599:1;;8570:30;:::i;:::-;;;;-1:-1:-1;;8616:23:37;;;8622:10;11017:51:50;;-1:-1:-1;;;;;11104:32:50;;11099:2;11084:18;;11077:60;8616:23:37;;10990:18:50;8616:23:37;10843:300:50;3155:101:23;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;3885:984:37:-;2334:13:23;:11;:13::i;:::-;4000:7:37::1;:14:::0;:18;3996:76:::1;;4041:20;;-1:-1:-1::0;;;4041:20:37::1;;;;;;;;;;;3996:76;-1:-1:-1::0;;;;;4086:19:37;::::1;;::::0;;;:13:::1;:19;::::0;;;;;::::1;;4082:85;;;4128:28;;-1:-1:-1::0;;;4128:28:37::1;;;;;;;;;;;4082:85;4181:14;:39;4206:12;;4196:23;;;;;;;:::i;:::-;;::::0;;;;;::::1;::::0;;;4181:39;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;4181:39:37;;::::1;;4177:102;;;4243:25;;-1:-1:-1::0;;;4243:25:37::1;;;;;;;;;;;4177:102;4341:24:::0;;4337:99:::1;;4381:44;4412:12;;4381:30;:44::i;:::-;4446:30;4491:99;;;;;;;;4519:1;4491:99;;;;4535:1;4491:99;;;;4550:10;4491:99;;;;;;4576:12;;4491:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;4491:99:37;;;;-1:-1:-1;;4601:16:37::1;:18:::0;;4446:144;;-1:-1:-1;4601:16:37;-1:-1:-1;4601:18:37::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;4629:19:37;::::1;;::::0;;;4651:4:::1;4629:19;::::0;;;;;;;:26;;-1:-1:-1;;4629:26:37;;::::1;::::0;::::1;::::0;;;4665:21;;;;;;;:33;;;;;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;;;::::0;;;::::1;::::0;::::1;::::0;;;:21;:33:::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;4708:11:37::1;:22:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4708:22:37;;;;;::::1;::::0;;-1:-1:-1;;;;;;4708:22:37::1;-1:-1:-1::0;;;;;4708:22:37;::::1;;::::0;;-1:-1:-1;4741:67:37;::::1;;;4771:24;:26:::0;;;:24:::1;:26;::::0;::::1;:::i;:::-;;;;;;4741:67;4823:39;4843:4;4849:12;;4823:39;;;;;;;;:::i;:::-;;;;;;;;3986:883;3885:984:::0;;;;:::o;3634:112::-;8870:21:24;4302:15;;-1:-1:-1;;;4302:15:24;;;;4301:16;;-1:-1:-1;;;;;4348:14:24;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:24;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:24;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:24;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:24;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:24;-1:-1:-1;;;5013:22:24;;;4979:67;3685:26:37::1;3700:10;3685:14;:26::i;:::-;3738:1;3721:14;:18:::0;5066:101:24;;;;5100:23;;-1:-1:-1;;;;5100:23:24;;;5142:14;;-1:-1:-1;15919:50:50;;5142:14:24;;15907:2:50;15892:18;5142:14:24;15766:209:50;5066:101:24;4092:1081;;;;;3634:112:37:o;8919:2360::-;2334:13:23;:11;:13::i;:::-;8996:1:37::1;:6;;9001:1;8996:6:::0;8992:63:::1;;9025:19;;-1:-1:-1::0;;;9025:19:37::1;;;;;;;;;;;8992:63;9065:18;::::0;::::1;:14;:18:::0;9094:21:::1;9103:11;9094:8;:21::i;:::-;9125:25;:23;:25::i;:::-;9161:21;:34:::0;;-1:-1:-1;;;;;;9161:34:37::1;::::0;;9255:24:::1;::::0;9236:16:::1;::::0;9193:1:::1;::::0;9223:57:::1;::::0;::::1;::::0;::::1;::::0;9193:1;;9236:43:::1;::::0;9255:24;9236:43:::1;:::i;:::-;9223:6;:57::i;:::-;9205:76;;9296:3;:8;;9303:1;9296:8:::0;9292:66:::1;;9327:20;;-1:-1:-1::0;;;9327:20:37::1;;;;;;;;;;;9292:66;9373:9;9368:936;9392:11;:18:::0;9388:22;::::1;9368:936;;;9431:12;9446:11;9458:1;9446:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;9446:14:37::1;9504:21:::0;;;;;;;;;;;9544:15:::1;::::0;::::1;::::0;9446:14;;-1:-1:-1;9504:21:37;9544:15:::1;;::::0;:48:::1;;;9563:4;:17;;:24;;;;;:::i;:::-;:29:::0;;-1:-1:-1;9544:48:37::1;9540:95;;;9612:8;;;;9540:95;9653:21;::::0;-1:-1:-1;;;;;9653:21:37::1;9649:172;;-1:-1:-1::0;9708:21:37::1;:28:::0;;-1:-1:-1;;;;;;9708:28:37::1;-1:-1:-1::0;;;;;9708:28:37;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;9754:22:37::1;:26:::0;9798:8:::1;;9649:172;9864:3;9839:28;;:22;;:28;9835:120;;;9887:27;9904:4;9910:3;9887:16;:27::i;:::-;9932:8;;;;9835:120;10018:21;::::0;-1:-1:-1;;;;;10018:21:37;;::::1;9969:30;10002:38:::0;;;::::1;::::0;;;;;;;;10108:35;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;;10018:21;10108:35;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;;;::::0;;;;;;;::::1;::::0;::::1;::::0;;10002:38;;10076:143:::1;::::0;10108:35;;;::::1;::::0;;;10137:4;;10108:35;;;;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;10108:35:37;;;;-1:-1:-1;;;10108:35:37;;10145:56:::1;::::0;;;;::::1;::::0;;10162:21:::1;::::0;-1:-1:-1;;;;;10162:21:37::1;10145:56:::0;;;;::::1;::::0;::::1;::::0;;;;;;10162:21;10145:56;::::1;::::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;::::1;;;;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;10191:8;;10145:56;;;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;::::0;10076:10:::1;:143::i;:::-;10055:239;;;10252:27;10269:4;10275:3;10252:16;:27::i;:::-;9417:887;;;9368:936;9412:3;;9368:936;;;;10318:22;;10344:1;10318:27:::0;10314:85:::1;;10368:20;;-1:-1:-1::0;;;10368:20:37::1;;;;;;;;;;;10314:85;10505:21;::::0;10583:22:::1;::::0;-1:-1:-1;;;;;10505:21:37;;::::1;::::0;10490:12:::1;::::0;-1:-1:-1;;;;;10569:37:37;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;10569:37:37::1;-1:-1:-1::0;10536:70:37;-1:-1:-1;10622:9:37::1;10617:148;10641:22;;10637:1;:26;10617:148;;;10703:4;10684:13;10698:1;10684:16;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10684:23:37;;::::1;:16;::::0;;::::1;::::0;;;;;;:23;;;;10728:26;;::::1;;::::0;;;:20:::1;:26:::0;;;;;;;;;;::::1;::::0;;10665:3:::1;10617:148;;;;10774:26;10786:13;10774:11;:26::i;:::-;10886:7;:14:::0;;::::1;::::0;::::1;::::0;;10853:30:::1;10886:14:::0;;;;::::1;::::0;10910:24:::1;::::0;10917:17:::1;::::0;10910:24:::1;:::i;:::-;10978:14;;-1:-1:-1::0;;;;;10964:29:37::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;10964:29:37::1;-1:-1:-1::0;10944:49:37;;::::1;::::0;:17:::1;::::0;:49:::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;11009:9:37::1;11004:269;11028:14;;11024:1;:18;11004:269;;;11063:12;11078:13;11096:22;;11092:1;:26;;;;:::i;:::-;11078:41;;;;;;;;:::i;:::-;;;;;;;11063:56;;11156:4;11133:17;11151:1;11133:20;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;:27:::0;;-1:-1:-1;;;;;11133:27:37;;::::1;-1:-1:-1::0;;;;;;11133:27:37;;::::1;;::::0;;;11185:76:::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;11226:21;;;;;;;11133:27;11226:33;;::::1;::::0;11185:76;;::::1;::::0;;;11174:88;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;::::1;;::::0;;;;;::::1;::::0;11044:3:::1;11004:269;;;;8982:2297;;;;8919:2360:::0;:::o;12140:433::-;12268:17;:24;12194:18;;12224:25;;-1:-1:-1;;;;;12252:41:37;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;12224:69:37;-1:-1:-1;12308:9:37;12303:240;12327:17;:24;12323:28;;12303:240;;;12372:12;12387:17;12405:1;12387:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;12387:20:37;12450:21;;;;;;;;;;;12497:35;;;;;;;;;;;;;;;;;;;;;12387:20;12497:35;;;;;;;;;;;;;;;;;;;;;;;;;;;12387:20;;-1:-1:-1;12450:21:37;;12497:35;;;;;;;12450:21;;12497:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12485:6;12492:1;12485:9;;;;;;;;:::i;:::-;;;;;;;;;;:47;-1:-1:-1;;12353:3:37;;12303:240;;;-1:-1:-1;12560:6:37;12140:433;-1:-1:-1;12140:433:37:o;6862:563::-;6913:33;6935:10;6913:21;:33::i;:::-;6908:94;;6969:22;;-1:-1:-1;;;6969:22:37;;;;;;;;;;;6908:94;7062:10;7012:31;7046:27;;;;;;;;;;7087:20;;;;;;7083:84;;;7130:26;;-1:-1:-1;;;7130:26:37;;;;;;;;;;;7083:84;7228:14;;7200:24;;7181:16;;:43;;;;:::i;:::-;:61;7177:120;;7265:21;;-1:-1:-1;;;7265:21:37;;;;;;;;;;;7177:120;7307:20;;;:27;;-1:-1:-1;;7307:27:37;7330:4;7307:27;;;;;;7344:24;:29;;7307:20;;7344:29;;7330:4;;7344:29;:::i;:::-;;;;-1:-1:-1;;7389:29:37;;7407:10;7899:51:50;;7389:29:37;;7887:2:50;7872:18;7389:29:37;;;;;;;6898:527;6862:563::o;11760:115::-;-1:-1:-1;;;;;11849:19:37;11826:4;11849:19;;;:13;:19;;;;;;;;;11760:115::o;13096:847::-;13176:19;2334:13:23;:11;:13::i;:::-;13207:26:37::1;13253:30;13260:5;13267:1;13270:12;;13253:6;:30::i;:::-;-1:-1:-1::0;;;;;13236:48:37::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;13236:48:37::1;;;;;;;;;;;;;;;-1:-1:-1::0;13310:11:37::1;::::0;13207:77;;-1:-1:-1;;;;;;13310:11:37;;::::1;::::0;13336:18;::::1;::::0;13332:74:::1;;-1:-1:-1::0;;;;;;13377:13:37;;::::1;;::::0;;;:7:::1;:13;::::0;;;;:18:::1;;::::0;::::1;13332:74;13416:9;13439:211;-1:-1:-1::0;;;;;13446:18:37;::::1;::::0;;::::1;::::0;:31:::1;;;13472:5;13468:1;:9;13446:31;13439:211;;;-1:-1:-1::0;;;;;13514:13:37;;::::1;13493:18;13514:13:::0;;;:7:::1;:13;::::0;;;;;;;;13555:53;;;;::::1;::::0;;;;;;13591:15;;;;::::1;13555:53:::0;;::::1;::::0;;;;13514:13;13541:6;13548:3;::::1;::::0;::::1;:::i;:::-;;;13541:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:67;13629:10:::1;;::::0;-1:-1:-1;;;;;13629:10:37::1;::::0;-1:-1:-1;13439:211:37::1;;;13681:1;13664:6;:13;:18:::0;13660:62:::1;;13705:6;13698:13;;;;;;;13660:62;13780:25;13825:1;-1:-1:-1::0;;;;;13808:19:37::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;13808:19:37::1;;;;;;;;;;;;;;;-1:-1:-1::0;13780:47:37;-1:-1:-1;13842:9:37::1;13837:77;13861:1;13857;:5;13837:77;;;13894:6;13901:1;13894:9;;;;;;;;:::i;:::-;;;;;;;13883:5;13889:1;13883:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:20;13864:3:::1;;13837:77;;;-1:-1:-1::0;13931:5:37;13096:847;-1:-1:-1;;;;;;13096:847:37:o;3405:215:23:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:23;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:23;;3562:1:::1;3534:31;::::0;::::1;7899:51:50::0;7872:18;;3534:31:23::1;;;;;;;;3485:91;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;12579:412:37:-;12704:11;:18;12630;;12660:25;;-1:-1:-1;;;;;12688:35:37;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;12660:63:37;-1:-1:-1;12738:9:37;12733:228;12757:11;:18;12753:22;;12733:228;;;12796:12;12811:11;12823:1;12811:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;12811:14:37;12868:21;;;;;;;;;;;12915:35;;;;;;;;;;;;;;;;;;;;;12811:14;12915:35;;;;;;;;;;;;;;;;;;;;;;;;;;;12811:14;;-1:-1:-1;12868:21:37;;12915:35;;;;;;;12868:21;;12915:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12903:6;12910:1;12903:9;;;;;;;;:::i;:::-;;;;;;;;;;:47;-1:-1:-1;;12777:3:37;;12733:228;;2658:162:23;966:10:26;2717:7:23;1313:22;2570:8;-1:-1:-1;;;;;2570:8:23;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:23;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:23;;966:10:26;2763:40:23;;;7899:51:50;7872:18;;2763:40:23;7753:203:50;18813:506:37;-1:-1:-1;;;;;18889:13:37;;;18868:18;18889:13;;;:7;:13;;;;;18916:15;;18889:13;;18916:15;18912:66;;18961:7;18813:506;:::o;18912:66::-;19011:13;;;;-1:-1:-1;;;;;19054:12:37;;;19039:27;;19035:239;;;19130:27;19145:12;-1:-1:-1;;;;;19130:12:37;;;:27;:::i;:::-;19098:15;;-1:-1:-1;;;;;19098:15:37;19082;:32;;;;;;;;;;19098:15;19082:44;:75;;:44;;:15;:75;;;;;:::i;:::-;;;;-1:-1:-1;19035:239:37;;-1:-1:-1;19035:239:37;;19236:27;-1:-1:-1;;;;;19251:12:37;;;19236;:27;:::i;:::-;19204:15;;-1:-1:-1;;;;;19204:15:37;19188;:32;;;;;;;;;;19204:15;19188:44;:75;;:44;;:15;:75;;;;;:::i;:::-;;;;-1:-1:-1;;19035:239:37;-1:-1:-1;;;;;;19300:12:37;;;;19284:13;;;;:28;18813:506::o;17760:1047::-;17845:10;17797:7;17837:19;;;:7;:19;;;;;17870:15;;-1:-1:-1;;;;;17870:15:37;17866:80;;17922:13;;-1:-1:-1;;;17922:13:37;;;;;;;;;;;17866:80;17975:11;;17960;;-1:-1:-1;;;;;17975:11:37;;;17960;;:26;17956:528;;18002:11;:24;;-1:-1:-1;;;;;;18002:24:37;;;;;;18040:11;:24;;;;;;;17956:528;;;18085:11;;18100:10;-1:-1:-1;;;;;18085:11:37;;;:25;18081:403;;18134:10;;;;;-1:-1:-1;;;;;18134:10:37;;;18161:1;18126:19;;;:7;:19;;;;;:24;;:37;;-1:-1:-1;;;;;;18126:37:37;;;;;;18191:10;;18177:11;:24;;;;;18191:10;;18177:24;;;18081:403;;;18222:11;;18237:10;-1:-1:-1;;;;;18222:11:37;;;:25;18218:266;;18271:11;;-1:-1:-1;;;;;18271:11:37;;;18299:1;18263:20;;;:7;:20;;;;;;:25;;:38;;-1:-1:-1;;;;;;18263:38:37;;;;;;18337:11;;;;;;18329:20;;;;;;:25;;;18315:39;;18329:25;;18315:39;;;;;;18218:266;;;18412:10;;;;;;18393;;;;;;-1:-1:-1;;;;;18393:10:37;;;18412;18385:19;;;:7;:19;;;;;;:24;;;:37;;18412:10;;;-1:-1:-1;;;;;;18385:37:37;;;;;;18463:10;;18444;;;;18436:19;;;;;:24;:37;;18463:10;;;;18436:37;;;;;18218:266;18518:15;;-1:-1:-1;;;;;18518:15:37;18494:21;18582:32;;;;;;;;;;18518:15;18654:13;;;;18625:25;;;:42;;18582:32;;18654:13;;18625:25;;18494:21;18625:42;;18654:13;;18625:42;:::i;:::-;;;;-1:-1:-1;;18677:30:37;;18706:1;;18677:13;;:25;;:30;;18706:1;;18677:30;:::i;:::-;;;;-1:-1:-1;;18733:10:37;18725:19;;;;:7;:19;;;;;18718:26;;-1:-1:-1;;;;;;18718:26:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18755:12;:14;;;;;;:::i;:::-;;;;-1:-1:-1;18787:13:37;;17760:1047;-1:-1:-1;;;;17760:1047:37:o;4603:312:25:-;4683:4;-1:-1:-1;;;;;4692:6:25;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:25;:32;-1:-1:-1;;;;;;;;;;;1519:53:30;-1:-1:-1;;;;;1519:53:30;;1441:138;4753:32:25;-1:-1:-1;;;;;4753:42:25;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:25;;;;;;;;;;;3769:84:37;2334:13:23;:11;:13::i;6057:538:25:-;6174:17;-1:-1:-1;;;;;6156:50:25;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:25;;;;;;;;-1:-1:-1;;6156:52:25;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:25;;-1:-1:-1;;;;;7917:32:50;;6518:60:25;;;7899:51:50;7872:18;;6518:60:25;7753:203:50;6152:437:25;-1:-1:-1;;;;;;;;;;;6250:40:25;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:25;;;;;160:25:50;;;133:18;;6317:34:25;14:177:50;6246:120:25;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:25;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:25;;;;;;;;;;;19325:348:37;19413:24;19450:12;;19440:23;;;;;;;:::i;:::-;;;;;;;;;;;19477:32;;;;:14;:32;;;;;;;19440:23;;-1:-1:-1;19477:32:37;;19473:95;;;19532:25;;-1:-1:-1;;;19532:25:37;;;;;;;;;;;19473:95;19578:38;19603:12;;19578:24;:38::i;:::-;19627:32;;;;:14;:32;;;;;:39;;-1:-1:-1;;19627:39:37;19662:4;19627:39;;;-1:-1:-1;;19325:348:37:o;3774:248:23:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:23;;-1:-1:-1;;;;;3941:19:23;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1847:127::-;6931:20:24;:18;:20::i;:::-;1929:38:23::1;1954:12;1929:24;:38::i;14614:502:37:-:0;14688:12;;14676:9;14714:6;;;14710:43;;14736:7;14614:502;:::o;14710:43::-;14768:9;14780:5;14784:1;14780;:5;:::i;:::-;14768:17;;14763:347;14787:5;;14763:347;;14875:9;14947:5;:1;14951;14947:5;:::i;:::-;14905:36;;;14922:15;14905:36;;;16681:19:50;16716:12;;;16709:28;;;16753:12;;14905:36:37;;;;;;;;;;;;14895:47;;;;;;14887:56;;:66;;;;:::i;:::-;14875:78;;15014:12;15029:5;15035:1;15029:8;;;;;;;;:::i;:::-;;;;;;;;;;;15062;;-1:-1:-1;;;;;15029:8:37;;;;-1:-1:-1;15062:5:37;;15068:1;;15062:8;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15062:8:37;15051:5;15057:1;15051:8;;;;;;;;:::i;:::-;;;;;;;;;:19;;;;;-1:-1:-1;;;;;15051:19:37;;;;;-1:-1:-1;;;;;15051:19:37;;;;;;15095:4;15084:5;15090:1;15084:8;;;;;;;;:::i;:::-;;;;;;;;;:15;;;;;-1:-1:-1;;;;;15084:15:37;;;;;-1:-1:-1;;;;;15084:15:37;;;;;;14799:311;;14794:3;;;;;:::i;:::-;;;;14763:347;;15637:317;15706:21;;-1:-1:-1;;;;;15706:21:37;15738:174;-1:-1:-1;;;;;15745:18:37;;;15738:174;;-1:-1:-1;;;;;15822:29:37;;;15779:15;15822:29;;;:20;:29;;;;;;;-1:-1:-1;;;;;;15865:36:37;;;;;15822:29;15738:174;;;-1:-1:-1;15946:1:37;15921:22;:26;15637:317::o;20216:337::-;20296:7;20325:3;20319;:9;20315:69;;;20351:22;;-1:-1:-1;;;20351:22:37;;;;;16950:25:50;;;16991:18;;;16984:34;;;16923:18;;20351:22:37;16776:248:50;20315:69:37;20406:3;20398:5;:11;20394:153;;;-1:-1:-1;20432:3:37;20425:10;;20394:153;20464:3;20456:5;:11;20452:95;;;-1:-1:-1;20490:3:37;20483:10;;20452:95;-1:-1:-1;20531:5:37;20452:95;20216:337;;;;;:::o;15960:1391::-;-1:-1:-1;;;;;16058:21:37;;16030:25;16058:21;;;;;;;;;;;16030:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16030:49:37;;;;-1:-1:-1;;16135:86:37;;;;;;;;16152:21;;-1:-1:-1;;;;;16152:21:37;16135:86;;;-1:-1:-1;16181:38:37;;;16135:86;16181:38;;;;;;;16135:86;;;;;;;;;;;16152:21;16135:86;;;;;;;;;;;;;;;;;;;;;;;;;;;16030:49;;-1:-1:-1;16107:181:37;;16135:86;;-1:-1:-1;16135:86:37;;;;;16181:38;;16135:86;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16239:35;;;;;;;;16256:4;-1:-1:-1;;;;;16239:35:37;;;;;16268:4;16239:35;;;16107:10;:181::i;:::-;16090:984;;;16313:17;16325:4;16313:11;:17::i;:::-;16090:984;;;16400:21;;-1:-1:-1;;;;;16400:21:37;;;16361:15;16379:43;;;:20;:43;;;;;;;;;;16491:573;-1:-1:-1;;;;;16526:21:37;;16522:123;;16571:28;16584:8;16594:4;16571:12;:28::i;:::-;16621:5;;16522:123;16724:58;;;;;;;;-1:-1:-1;;;;;16724:58:37;;;;;-1:-1:-1;16756:24:37;;;16724:58;16756:24;;;;;;;16724:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16688:153;;16724:58;;;;;16756:24;16724:58;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16784:35;;;;;;;;16801:4;-1:-1:-1;;;;;16784:35:37;;;;;16813:4;16784:35;;;16688:10;:153::i;:::-;16663:293;;;16882:28;16895:8;16905:4;16882:12;:28::i;16663:293::-;-1:-1:-1;;;;;;17020:29:37;;;;;;;:20;:29;;;;;;;;16491:573;;;16347:727;;16090:984;17113:3;17088:28;;:22;;:28;17084:261;;;17168:21;;;-1:-1:-1;;;;;17168:21:37;;;17132:12;17147:43;;;:20;:43;;;;;;;-1:-1:-1;;;;;;17204:50:37;;;;;;17268:28;;17147:43;;17268:28;;;;;;;17310:22;:24;;17147:43;;17310:24;;;:::i;:::-;;;;;;17118:227;16020:1331;15960:1391;;:::o;19883:327::-;19984:4;20035:10;:15;;;:27;;;20004:10;:15;;;:27;;;:58;20000:129;;-1:-1:-1;20103:15:37;;20085;;-1:-1:-1;;;;;20085:33:37;;;;;;20078:40;;20000:129;-1:-1:-1;20176:15:37;;;;;:27;;;20146:15;;;;:27;;:57;;19883:327::o;15122:509::-;15203:12;;15191:9;15229:6;;;15225:43;;15251:7;15122:509;:::o;15225:43::-;15283:9;15295:5;15299:1;15295;:5;:::i;:::-;15283:17;;15278:347;15302:5;;15278:347;;15390:9;15462:5;:1;15466;15462:5;:::i;:::-;15420:36;;;15437:15;15420:36;;;16681:19:50;16716:12;;;16709:28;;;16753:12;;15420:36:37;;;;;;;;;;;;15410:47;;;;;;15402:56;;:66;;;;:::i;:::-;15390:78;;15529:12;15544:5;15550:1;15544:8;;;;;;;;:::i;:::-;;;;;;;15529:23;;15577:5;15583:1;15577:8;;;;;;;;:::i;:::-;;;;;;;15566:5;15572:1;15566:8;;;;;;;;:::i;:::-;;;;;;:19;-1:-1:-1;;;;;15566:19:37;;;-1:-1:-1;;;;;15566:19:37;;;;;15610:4;15599:5;15605:1;15599:8;;;;;;;;:::i;:::-;;;;;;:15;-1:-1:-1;;;;;15599:15:37;;;-1:-1:-1;;;;;15599:15:37;;;;;15314:311;;15309:3;;;;;:::i;:::-;;;;15278:347;;2264:344:30;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:30;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;19710:167:37:-;19818:2;19798:22;;19794:77;;19843:17;;-1:-1:-1;;;19843:17:37;;;;;;;;;;;7084:141:24;8870:21;8560:40;-1:-1:-1;;;8560:40:24;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:24;;;;;;;;;;;1980:235:23;6931:20:24;:18;:20::i;17357:183:37:-;17440:21;;;-1:-1:-1;;;;;17411:26:37;;;17440:21;17411:26;;;:20;:26;;;;;:50;;17440:21;;;;-1:-1:-1;;;;;;17411:50:37;;;;;;;17471:28;;;;;;;;;17509:22;:24;;;;;;:::i;:::-;;;;;;17357:183;:::o;17546:208::-;-1:-1:-1;;;;;17644:26:37;;;;;;;:20;:26;;;;;;;;17615;;;;;;;;;:55;;17644:26;;;;-1:-1:-1;;;;;;17615:55:37;;;;;;;17680:26;;;:33;;;;;;;;;;17723:22;:24;;;;;;:::i;:::-;;;;;;17546:208;;:::o;1671:281:30:-;1748:17;-1:-1:-1;;;;;1748:29:30;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:30;;-1:-1:-1;;;;;7917:32:50;;1805:47:30;;;7899:51:50;7872:18;;1805:47:30;7753:203:50;1744:119:30;-1:-1:-1;;;;;;;;;;;1872:73:30;;-1:-1:-1;;;;;;1872:73:30;-1:-1:-1;;;;;1872:73:30;;;;;;;;;;1671:281::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:34:o;6113:122:30:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:30;;;;;;;;;;;4421:582:34;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;7917:32:50;;4917:24:34;;;7899:51:50;7872:18;;4917:24:34;7753:203:50;4837:119:34;-1:-1:-1;4976:10:34;4969:17;;5543:487;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;196:173:50;264:20;;-1:-1:-1;;;;;313:31:50;;303:42;;293:70;;359:1;356;349:12;293:70;196:173;;;:::o;374:186::-;433:6;486:2;474:9;465:7;461:23;457:32;454:52;;;502:1;499;492:12;454:52;525:29;544:9;525:29;:::i;565:250::-;650:1;660:113;674:6;671:1;668:13;660:113;;;750:11;;;744:18;731:11;;;724:39;696:2;689:10;660:113;;;-1:-1:-1;;807:1:50;789:16;;782:27;565:250::o;820:270::-;861:3;899:5;893:12;926:6;921:3;914:19;942:76;1011:6;1004:4;999:3;995:14;988:4;981:5;977:16;942:76;:::i;:::-;1072:2;1051:15;-1:-1:-1;;1047:29:50;1038:39;;;;1079:4;1034:50;;820:270;-1:-1:-1;;820:270:50:o;1095:566::-;1212:1;1208;1203:3;1199:11;1195:19;1187:5;1181:12;1177:38;1172:3;1165:51;1147:3;1262:4;1255:5;1251:16;1245:23;1300:4;1293;1288:3;1284:14;1277:28;1343:12;1337:19;1330:4;1325:3;1321:14;1314:43;1411:4;1397:12;1393:23;1387:30;1382:2;1377:3;1373:12;1366:52;1488:4;1474:12;1470:23;1464:30;1457:38;1450:46;1443:4;1438:3;1434:14;1427:70;1552:2;1538:12;1534:21;1528:28;1506:50;;1587:4;1581:3;1576;1572:13;1565:27;1608:47;1650:3;1645;1641:13;1625:14;1608:47;:::i;:::-;1601:54;1095:566;-1:-1:-1;;;;1095:566:50:o;1666:266::-;1851:2;1840:9;1833:21;1814:4;1871:55;1922:2;1911:9;1907:18;1899:6;1871:55;:::i;1937:610::-;2023:6;2031;2084:2;2072:9;2063:7;2059:23;2055:32;2052:52;;;2100:1;2097;2090:12;2052:52;2140:9;2127:23;-1:-1:-1;;;;;2165:6:50;2162:30;2159:50;;;2205:1;2202;2195:12;2159:50;2228:22;;2281:4;2273:13;;2269:27;-1:-1:-1;2259:55:50;;2310:1;2307;2300:12;2259:55;2350:2;2337:16;-1:-1:-1;;;;;2368:6:50;2365:30;2362:50;;;2408:1;2405;2398:12;2362:50;2461:7;2456:2;2446:6;2443:1;2439:14;2435:2;2431:23;2427:32;2424:45;2421:65;;;2482:1;2479;2472:12;2421:65;2513:2;2505:11;;;;;2535:6;;-1:-1:-1;1937:610:50;-1:-1:-1;;;1937:610:50:o;2552:260::-;2620:6;2628;2681:2;2669:9;2660:7;2656:23;2652:32;2649:52;;;2697:1;2694;2687:12;2649:52;2720:29;2739:9;2720:29;:::i;:::-;2710:39;;2768:38;2802:2;2791:9;2787:18;2768:38;:::i;:::-;2758:48;;2552:260;;;;;:::o;2817:346::-;2885:6;2893;2946:2;2934:9;2925:7;2921:23;2917:32;2914:52;;;2962:1;2959;2952:12;2914:52;-1:-1:-1;;3007:23:50;;;3127:2;3112:18;;;3099:32;;-1:-1:-1;2817:346:50:o;3168:1554::-;3358:4;3406:2;3395:9;3391:18;3436:2;3425:9;3418:21;3459:6;3494;3488:13;3525:6;3517;3510:22;3563:2;3552:9;3548:18;3541:25;;3625:2;3615:6;3612:1;3608:14;3597:9;3593:30;3589:39;3575:53;;3663:2;3655:6;3651:15;3684:1;3694:999;3708:6;3705:1;3702:13;3694:999;;;3773:22;;;-1:-1:-1;;3769:36:50;3757:49;;3829:13;;3912:9;;3897:25;;3969:2;3961:11;;;3955:18;3881:2;3993:15;;;3986:27;;;4074:19;;3869:15;;;4106:24;;;4196:21;;;-1:-1:-1;;4164:2:50;4152:15;;;4255:330;4271:8;4266:3;4263:17;4255:330;;;4344:15;;4394:9;;-1:-1:-1;;;;;4390:35:50;4376:50;;4480:2;4472:11;;;4466:18;4450:14;;;4443:42;4554:17;;;;4422:1;4290:11;;;;;4522:2;4511:14;;;;4255:330;;;-1:-1:-1;4608:5:50;-1:-1:-1;;;4648:2:50;4671:12;;;;4636:15;;;;;3730:1;3723:9;3694:999;;;-1:-1:-1;4710:6:50;;3168:1554;-1:-1:-1;;;;;;3168:1554:50:o;4727:127::-;4788:10;4783:3;4779:20;4776:1;4769:31;4819:4;4816:1;4809:15;4843:4;4840:1;4833:15;4859:1018;4936:6;4944;4997:2;4985:9;4976:7;4972:23;4968:32;4965:52;;;5013:1;5010;5003:12;4965:52;5036:29;5055:9;5036:29;:::i;:::-;5026:39;;5116:2;5105:9;5101:18;5088:32;-1:-1:-1;;;;;5135:6:50;5132:30;5129:50;;;5175:1;5172;5165:12;5129:50;5198:22;;5251:4;5243:13;;5239:27;-1:-1:-1;5229:55:50;;5280:1;5277;5270:12;5229:55;5320:2;5307:16;-1:-1:-1;;;;;5338:6:50;5335:30;5332:56;;;5368:18;;:::i;:::-;5417:2;5411:9;5509:2;5471:17;;-1:-1:-1;;5467:31:50;;;5500:2;5463:40;5459:54;5447:67;;-1:-1:-1;;;;;5529:34:50;;5565:22;;;5526:62;5523:88;;;5591:18;;:::i;:::-;5627:2;5620:22;5651;;;5692:15;;;5709:2;5688:24;5685:37;-1:-1:-1;5682:57:50;;;5735:1;5732;5725:12;5682:57;5791:6;5786:2;5782;5778:11;5773:2;5765:6;5761:15;5748:50;5844:1;5839:2;5830:6;5822;5818:19;5814:28;5807:39;5865:6;5855:16;;;;;4859:1018;;;;;:::o;6064:347::-;6115:8;6125:6;6179:3;6172:4;6164:6;6160:17;6156:27;6146:55;;6197:1;6194;6187:12;6146:55;-1:-1:-1;6220:20:50;;-1:-1:-1;;;;;6252:30:50;;6249:50;;;6295:1;6292;6285:12;6249:50;6332:4;6324:6;6320:17;6308:29;;6384:3;6377:4;6368:6;6360;6356:19;6352:30;6349:39;6346:59;;;6401:1;6398;6391:12;6346:59;6064:347;;;;;:::o;6416:409::-;6486:6;6494;6547:2;6535:9;6526:7;6522:23;6518:32;6515:52;;;6563:1;6560;6553:12;6515:52;6603:9;6590:23;-1:-1:-1;;;;;6628:6:50;6625:30;6622:50;;;6668:1;6665;6658:12;6622:50;6707:58;6757:7;6748:6;6737:9;6733:22;6707:58;:::i;:::-;6784:8;;6681:84;;-1:-1:-1;6416:409:50;-1:-1:-1;;;;6416:409:50:o;6830:644::-;6915:6;6923;6931;6939;6992:2;6980:9;6971:7;6967:23;6963:32;6960:52;;;7008:1;7005;6998:12;6960:52;7031:29;7050:9;7031:29;:::i;:::-;7021:39;;7111:2;7100:9;7096:18;7083:32;-1:-1:-1;;;;;7130:6:50;7127:30;7124:50;;;7170:1;7167;7160:12;7124:50;7209:58;7259:7;7250:6;7239:9;7235:22;7209:58;:::i;:::-;7286:8;;-1:-1:-1;7183:84:50;-1:-1:-1;;7371:2:50;7356:18;;7343:32;7411:13;;7404:21;7394:32;;7384:60;;7440:1;7437;7430:12;7384:60;6830:644;;;;-1:-1:-1;6830:644:50;;-1:-1:-1;;6830:644:50:o;7479:269::-;7536:6;7589:2;7577:9;7568:7;7564:23;7560:32;7557:52;;;7605:1;7602;7595:12;7557:52;7644:9;7631:23;7694:4;7687:5;7683:16;7676:5;7673:27;7663:55;;7714:1;7711;7704:12;7961:828;8159:4;8207:2;8196:9;8192:18;8237:2;8226:9;8219:21;8260:6;8295;8289:13;8326:6;8318;8311:22;8364:2;8353:9;8349:18;8342:25;;8426:2;8416:6;8413:1;8409:14;8398:9;8394:30;8390:39;8376:53;;8464:2;8456:6;8452:15;8485:1;8495:265;8509:6;8506:1;8503:13;8495:265;;;8602:2;8598:7;8586:9;8578:6;8574:22;8570:36;8565:3;8558:49;8630:50;8673:6;8664;8658:13;8630:50;:::i;:::-;8620:60;-1:-1:-1;8715:2:50;8738:12;;;;8703:15;;;;;8531:1;8524:9;8495:265;;8794:219;8943:2;8932:9;8925:21;8906:4;8963:44;9003:2;8992:9;8988:18;8980:6;8963:44;:::i;9210:300::-;9278:6;9286;9339:2;9327:9;9318:7;9314:23;9310:32;9307:52;;;9355:1;9352;9345:12;9307:52;9378:29;9397:9;9378:29;:::i;:::-;9368:39;9476:2;9461:18;;;;9448:32;;-1:-1:-1;;;9210:300:50:o;9515:806::-;9763:2;9775:21;;;9845:13;;9748:18;;;9867:22;;;9715:4;;9946:15;;;9920:2;9905:18;;;9715:4;9989:306;10003:6;10000:1;9997:13;9989:306;;;10062:13;;10104:9;;-1:-1:-1;;;;;10100:35:50;;;10088:48;;10188:2;10180:11;;;10174:18;10170:44;10156:12;;;10149:66;10270:15;;;;10244:2;10235:12;;;;10132:1;10018:9;9989:306;;;-1:-1:-1;10312:3:50;;9515:806;-1:-1:-1;;;;;9515:806:50:o;10326:380::-;10405:1;10401:12;;;;10448;;;10469:61;;10523:4;10515:6;10511:17;10501:27;;10469:61;10576:2;10568:6;10565:14;10545:18;10542:38;10539:161;;10622:10;10617:3;10613:20;10610:1;10603:31;10657:4;10654:1;10647:15;10685:4;10682:1;10675:15;10711:127;10772:10;10767:3;10763:20;10760:1;10753:31;10803:4;10800:1;10793:15;10827:4;10824:1;10817:15;11148:127;11209:10;11204:3;11200:20;11197:1;11190:31;11240:4;11237:1;11230:15;11264:4;11261:1;11254:15;11280:135;11319:3;11340:17;;;11337:43;;11360:18;;:::i;:::-;-1:-1:-1;11407:1:50;11396:13;;11280:135::o;11420:125::-;11485:9;;;11506:10;;;11503:36;;;11519:18;;:::i;11550:128::-;11617:9;;;11638:11;;;11635:37;;;11652:18;;:::i;11808:517::-;11909:2;11904:3;11901:11;11898:421;;;11945:5;11942:1;11935:16;11989:4;11986:1;11976:18;12059:2;12047:10;12043:19;12040:1;12036:27;12030:4;12026:38;12095:4;12083:10;12080:20;12077:47;;;-1:-1:-1;12118:4:50;12077:47;12173:2;12168:3;12164:12;12161:1;12157:20;12151:4;12147:31;12137:41;;12228:81;12246:2;12239:5;12236:13;12228:81;;;12305:1;12291:16;;12272:1;12261:13;12228:81;;12501:1194;-1:-1:-1;;;;;12618:3:50;12615:27;12612:53;;;12645:18;;:::i;:::-;12674:93;12763:3;12723:38;12755:4;12749:11;12723:38;:::i;:::-;12717:4;12674:93;:::i;:::-;12793:1;12818:2;12813:3;12810:11;12835:1;12830:607;;;;13481:1;13498:3;13495:93;;;-1:-1:-1;13554:19:50;;;13541:33;13495:93;-1:-1:-1;;12458:1:50;12454:11;;;12450:24;12446:29;12436:40;12482:1;12478:11;;;12433:57;13601:78;;12803:886;;12830:607;11755:1;11748:14;;;11792:4;11779:18;;-1:-1:-1;;12866:17:50;;;12980:229;12994:7;12991:1;12988:14;12980:229;;;13083:19;;;13070:33;13055:49;;13190:4;13175:20;;;;13143:1;13131:14;;;;13010:12;12980:229;;;12984:3;13237;13228:7;13225:16;13222:159;;;13361:1;13357:6;13351:3;13345;13342:1;13338:11;13334:21;13330:34;13326:39;13313:9;13308:3;13304:19;13291:33;13287:79;13279:6;13272:95;13222:159;;;13424:1;13418:3;13415:1;13411:11;13407:19;13401:4;13394:33;12803:886;;12501:1194;;;:::o;13700:485::-;-1:-1:-1;;;;;13885:32:50;;13867:51;;13954:2;13949;13934:18;;13927:30;;;13973:18;;13966:34;;;13993:6;14042;14037:2;14022:18;;14009:48;14106:1;14077:22;;;14101:2;14073:31;;;14066:42;;;;14169:2;14148:15;;;-1:-1:-1;;14144:29:50;14129:45;14125:54;;13700:485;-1:-1:-1;;13700:485:50:o;14190:1295::-;14314:3;14308:10;-1:-1:-1;;;;;14333:6:50;14330:30;14327:56;;;14363:18;;:::i;:::-;14392:96;14481:6;14441:38;14473:4;14467:11;14441:38;:::i;:::-;14435:4;14392:96;:::i;:::-;14537:4;14568:2;14557:14;;14585:1;14580:648;;;;15272:1;15289:6;15286:89;;;-1:-1:-1;15341:19:50;;;15335:26;15286:89;-1:-1:-1;;12458:1:50;12454:11;;;12450:24;12446:29;12436:40;12482:1;12478:11;;;12433:57;15388:81;;14550:929;;14580:648;11755:1;11748:14;;;11792:4;11779:18;;-1:-1:-1;;14616:20:50;;;14733:222;14747:7;14744:1;14741:14;14733:222;;;14829:19;;;14823:26;14808:42;;14936:4;14921:20;;;;14889:1;14877:14;;;;14763:12;14733:222;;;14737:3;14983:6;14974:7;14971:19;14968:201;;;15044:19;;;15038:26;-1:-1:-1;;15127:1:50;15123:14;;;15139:3;15119:24;15115:37;15111:42;15096:58;15081:74;;14968:201;-1:-1:-1;;;;15215:1:50;15199:14;;;15195:22;15182:36;;-1:-1:-1;14190:1295:50:o;15490:271::-;15673:6;15665;15660:3;15647:33;15629:3;15699:16;;15724:13;;;15699:16;15490:271;-1:-1:-1;15490:271:50:o;15980:209::-;16012:1;16038;16028:132;;16082:10;16077:3;16073:20;16070:1;16063:31;16117:4;16114:1;16107:15;16145:4;16142:1;16135:15;16028:132;-1:-1:-1;16174:9:50;;15980:209::o;16194:136::-;16233:3;16261:5;16251:39;;16270:18;;:::i;:::-;-1:-1:-1;;;16306:18:50;;16194:136::o;16335:184::-;16405:6;16458:2;16446:9;16437:7;16433:23;16429:32;16426:52;;;16474:1;16471;16464:12;16426:52;-1:-1:-1;16497:16:50;;16335:184;-1:-1:-1;16335:184:50:o;17029:287::-;17158:3;17196:6;17190:13;17212:66;17271:6;17266:3;17259:4;17251:6;17247:17;17212:66;:::i;:::-;17294:16;;;;;17029:287;-1:-1:-1;;17029:287:50:o",
410
+ "linkReferences": {},
411
+ "immutableReferences": {
412
+ "40567": [
413
+ { "start": 8808, "length": 32 },
414
+ { "start": 8849, "length": 32 },
415
+ { "start": 9168, "length": 32 }
416
+ ]
417
+ }
418
+ },
419
+ "methodIdentifiers": {
420
+ "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc",
421
+ "activeValidatorsCount()": "0d2bd909",
422
+ "addValidator(address,bytes,bool)": "7c8a92c3",
423
+ "addVote(address,address)": "3d09c2a8",
424
+ "calculateActiveValidators(uint8)": "857861db",
425
+ "getActiveValidators()": "9de70258",
426
+ "getAllValidators()": "f3513a37",
427
+ "getRounds(uint256,uint256)": "40f74f47",
428
+ "getRoundsCount()": "a09686c4",
429
+ "getValidator(address)": "1904bb2e",
430
+ "getVotes(address,uint256)": "eb9019d4",
431
+ "getVotesCount()": "1b605b86",
432
+ "initialize()": "8129fc1c",
433
+ "isValidatorRegistered(address)": "d04a68c7",
434
+ "owner()": "8da5cb5b",
435
+ "proxiableUUID()": "52d1902d",
436
+ "registerValidator(bytes)": "602a9eee",
437
+ "registeredValidatorsCount()": "f1bd0b37",
438
+ "renounceOwnership()": "715018a6",
439
+ "resignValidator()": "b85f5da2",
440
+ "resignedValidatorsCount()": "0777cbef",
441
+ "transferOwnership(address)": "f2fde38b",
442
+ "unvote()": "3174b689",
443
+ "updateValidator(bytes)": "5a8eed73",
444
+ "updateVoters(address[])": "2bdf6d43",
445
+ "upgradeToAndCall(address,bytes)": "4f1ef286",
446
+ "version()": "54fd4d50",
447
+ "vote(address)": "6dd7d8ea"
448
+ },
449
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyVoted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BellowMinValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlsKeyIsInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerIsNotValidator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImportIsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParameters\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"InvalidRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingVote\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoActiveValidators\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorAlreadyResigned\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteResignedValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteSameValidator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VoteValidatorWithoutBlsPublicKey\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Unvoted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"ValidatorResigned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"ValidatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Voted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"}],\"name\":\"addValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"addVote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"}],\"name\":\"calculateActiveValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getActiveValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"votersCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllValidators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"votersCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getRounds\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"}],\"internalType\":\"struct ConsensusV1.RoundValidator[]\",\"name\":\"validators\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ConsensusV1.Round[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRoundsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"votersCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"voteBalance\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isResigned\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"internalType\":\"struct ConsensusV1.ValidatorData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct ConsensusV1.Validator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getVotes\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"internalType\":\"struct ConsensusV1.VoteResult[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVotesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isValidatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"registerValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registeredValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resignedValidatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unvote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"}],\"name\":\"updateValidator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"voters\",\"type\":\"address[]\"}],\"name\":\"updateVoters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/consensus/ConsensusV1.sol\":\"ConsensusV1\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@contracts/=src/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"src/consensus/ConsensusV1.sol\":{\"keccak256\":\"0xf46c47adfacce9f204df2223af8b3cde47b9fdcaa372d67fdd739cb6ec096733\",\"license\":\"GNU GENERAL PUBLIC LICENSE\",\"urls\":[\"bzz-raw://15318c1cdb08120eab84d5d1f6fe997749e843d0b6487f8ae58eaf189dafd27e\",\"dweb:/ipfs/QmbwYcnDQBG3NwBpUHvjGWPLuNYXhPxjitowEFjQk9BVqg\"]}},\"version\":1}",
450
+ "metadata": {
451
+ "compiler": { "version": "0.8.27+commit.40a35a09" },
452
+ "language": "Solidity",
453
+ "output": {
454
+ "abi": [
455
+ {
456
+ "inputs": [{ "internalType": "address", "name": "target", "type": "address" }],
457
+ "type": "error",
458
+ "name": "AddressEmptyCode"
459
+ },
460
+ { "inputs": [], "type": "error", "name": "AlreadyVoted" },
461
+ { "inputs": [], "type": "error", "name": "BellowMinValidators" },
462
+ { "inputs": [], "type": "error", "name": "BlsKeyAlreadyRegistered" },
463
+ { "inputs": [], "type": "error", "name": "BlsKeyIsInvalid" },
464
+ { "inputs": [], "type": "error", "name": "CallerIsNotValidator" },
465
+ {
466
+ "inputs": [{ "internalType": "address", "name": "implementation", "type": "address" }],
467
+ "type": "error",
468
+ "name": "ERC1967InvalidImplementation"
469
+ },
470
+ { "inputs": [], "type": "error", "name": "ERC1967NonPayable" },
471
+ { "inputs": [], "type": "error", "name": "FailedCall" },
472
+ { "inputs": [], "type": "error", "name": "ImportIsNotAllowed" },
473
+ { "inputs": [], "type": "error", "name": "InvalidInitialization" },
474
+ { "inputs": [], "type": "error", "name": "InvalidParameters" },
475
+ {
476
+ "inputs": [
477
+ { "internalType": "uint256", "name": "min", "type": "uint256" },
478
+ { "internalType": "uint256", "name": "max", "type": "uint256" }
479
+ ],
480
+ "type": "error",
481
+ "name": "InvalidRange"
482
+ },
483
+ { "inputs": [], "type": "error", "name": "MissingVote" },
484
+ { "inputs": [], "type": "error", "name": "NoActiveValidators" },
485
+ { "inputs": [], "type": "error", "name": "NotInitializing" },
486
+ {
487
+ "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }],
488
+ "type": "error",
489
+ "name": "OwnableInvalidOwner"
490
+ },
491
+ {
492
+ "inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
493
+ "type": "error",
494
+ "name": "OwnableUnauthorizedAccount"
495
+ },
496
+ { "inputs": [], "type": "error", "name": "UUPSUnauthorizedCallContext" },
497
+ {
498
+ "inputs": [{ "internalType": "bytes32", "name": "slot", "type": "bytes32" }],
499
+ "type": "error",
500
+ "name": "UUPSUnsupportedProxiableUUID"
501
+ },
502
+ { "inputs": [], "type": "error", "name": "ValidatorAlreadyRegistered" },
503
+ { "inputs": [], "type": "error", "name": "ValidatorAlreadyResigned" },
504
+ { "inputs": [], "type": "error", "name": "ValidatorNotRegistered" },
505
+ { "inputs": [], "type": "error", "name": "VoteResignedValidator" },
506
+ { "inputs": [], "type": "error", "name": "VoteSameValidator" },
507
+ { "inputs": [], "type": "error", "name": "VoteValidatorWithoutBlsPublicKey" },
508
+ {
509
+ "inputs": [{ "internalType": "uint64", "name": "version", "type": "uint64", "indexed": false }],
510
+ "type": "event",
511
+ "name": "Initialized",
512
+ "anonymous": false
513
+ },
514
+ {
515
+ "inputs": [
516
+ { "internalType": "address", "name": "previousOwner", "type": "address", "indexed": true },
517
+ { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true }
518
+ ],
519
+ "type": "event",
520
+ "name": "OwnershipTransferred",
521
+ "anonymous": false
522
+ },
523
+ {
524
+ "inputs": [
525
+ { "internalType": "address", "name": "voter", "type": "address", "indexed": false },
526
+ { "internalType": "address", "name": "validator", "type": "address", "indexed": false }
527
+ ],
528
+ "type": "event",
529
+ "name": "Unvoted",
530
+ "anonymous": false
531
+ },
532
+ {
533
+ "inputs": [
534
+ { "internalType": "address", "name": "implementation", "type": "address", "indexed": true }
535
+ ],
536
+ "type": "event",
537
+ "name": "Upgraded",
538
+ "anonymous": false
539
+ },
540
+ {
541
+ "inputs": [
542
+ { "internalType": "address", "name": "addr", "type": "address", "indexed": false },
543
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes", "indexed": false }
544
+ ],
545
+ "type": "event",
546
+ "name": "ValidatorRegistered",
547
+ "anonymous": false
548
+ },
549
+ {
550
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address", "indexed": false }],
551
+ "type": "event",
552
+ "name": "ValidatorResigned",
553
+ "anonymous": false
554
+ },
555
+ {
556
+ "inputs": [
557
+ { "internalType": "address", "name": "addr", "type": "address", "indexed": false },
558
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes", "indexed": false }
559
+ ],
560
+ "type": "event",
561
+ "name": "ValidatorUpdated",
562
+ "anonymous": false
563
+ },
564
+ {
565
+ "inputs": [
566
+ { "internalType": "address", "name": "voter", "type": "address", "indexed": false },
567
+ { "internalType": "address", "name": "validator", "type": "address", "indexed": false }
568
+ ],
569
+ "type": "event",
570
+ "name": "Voted",
571
+ "anonymous": false
572
+ },
573
+ {
574
+ "inputs": [],
575
+ "stateMutability": "view",
576
+ "type": "function",
577
+ "name": "UPGRADE_INTERFACE_VERSION",
578
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }]
579
+ },
580
+ {
581
+ "inputs": [],
582
+ "stateMutability": "view",
583
+ "type": "function",
584
+ "name": "activeValidatorsCount",
585
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
586
+ },
587
+ {
588
+ "inputs": [
589
+ { "internalType": "address", "name": "addr", "type": "address" },
590
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" },
591
+ { "internalType": "bool", "name": "isResigned", "type": "bool" }
592
+ ],
593
+ "stateMutability": "nonpayable",
594
+ "type": "function",
595
+ "name": "addValidator"
596
+ },
597
+ {
598
+ "inputs": [
599
+ { "internalType": "address", "name": "voter", "type": "address" },
600
+ { "internalType": "address", "name": "validator", "type": "address" }
601
+ ],
602
+ "stateMutability": "nonpayable",
603
+ "type": "function",
604
+ "name": "addVote"
605
+ },
606
+ {
607
+ "inputs": [{ "internalType": "uint8", "name": "n", "type": "uint8" }],
608
+ "stateMutability": "nonpayable",
609
+ "type": "function",
610
+ "name": "calculateActiveValidators"
611
+ },
612
+ {
613
+ "inputs": [],
614
+ "stateMutability": "view",
615
+ "type": "function",
616
+ "name": "getActiveValidators",
617
+ "outputs": [
618
+ {
619
+ "internalType": "struct ConsensusV1.Validator[]",
620
+ "name": "",
621
+ "type": "tuple[]",
622
+ "components": [
623
+ { "internalType": "address", "name": "addr", "type": "address" },
624
+ {
625
+ "internalType": "struct ConsensusV1.ValidatorData",
626
+ "name": "data",
627
+ "type": "tuple",
628
+ "components": [
629
+ { "internalType": "uint256", "name": "votersCount", "type": "uint256" },
630
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" },
631
+ { "internalType": "bool", "name": "isResigned", "type": "bool" },
632
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }
633
+ ]
634
+ }
635
+ ]
636
+ }
637
+ ]
638
+ },
639
+ {
640
+ "inputs": [],
641
+ "stateMutability": "view",
642
+ "type": "function",
643
+ "name": "getAllValidators",
644
+ "outputs": [
645
+ {
646
+ "internalType": "struct ConsensusV1.Validator[]",
647
+ "name": "",
648
+ "type": "tuple[]",
649
+ "components": [
650
+ { "internalType": "address", "name": "addr", "type": "address" },
651
+ {
652
+ "internalType": "struct ConsensusV1.ValidatorData",
653
+ "name": "data",
654
+ "type": "tuple",
655
+ "components": [
656
+ { "internalType": "uint256", "name": "votersCount", "type": "uint256" },
657
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" },
658
+ { "internalType": "bool", "name": "isResigned", "type": "bool" },
659
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }
660
+ ]
661
+ }
662
+ ]
663
+ }
664
+ ]
665
+ },
666
+ {
667
+ "inputs": [
668
+ { "internalType": "uint256", "name": "offset", "type": "uint256" },
669
+ { "internalType": "uint256", "name": "count", "type": "uint256" }
670
+ ],
671
+ "stateMutability": "view",
672
+ "type": "function",
673
+ "name": "getRounds",
674
+ "outputs": [
675
+ {
676
+ "internalType": "struct ConsensusV1.Round[]",
677
+ "name": "",
678
+ "type": "tuple[]",
679
+ "components": [
680
+ { "internalType": "uint256", "name": "round", "type": "uint256" },
681
+ {
682
+ "internalType": "struct ConsensusV1.RoundValidator[]",
683
+ "name": "validators",
684
+ "type": "tuple[]",
685
+ "components": [
686
+ { "internalType": "address", "name": "addr", "type": "address" },
687
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" }
688
+ ]
689
+ }
690
+ ]
691
+ }
692
+ ]
693
+ },
694
+ {
695
+ "inputs": [],
696
+ "stateMutability": "view",
697
+ "type": "function",
698
+ "name": "getRoundsCount",
699
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
700
+ },
701
+ {
702
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address" }],
703
+ "stateMutability": "view",
704
+ "type": "function",
705
+ "name": "getValidator",
706
+ "outputs": [
707
+ {
708
+ "internalType": "struct ConsensusV1.Validator",
709
+ "name": "",
710
+ "type": "tuple",
711
+ "components": [
712
+ { "internalType": "address", "name": "addr", "type": "address" },
713
+ {
714
+ "internalType": "struct ConsensusV1.ValidatorData",
715
+ "name": "data",
716
+ "type": "tuple",
717
+ "components": [
718
+ { "internalType": "uint256", "name": "votersCount", "type": "uint256" },
719
+ { "internalType": "uint256", "name": "voteBalance", "type": "uint256" },
720
+ { "internalType": "bool", "name": "isResigned", "type": "bool" },
721
+ { "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }
722
+ ]
723
+ }
724
+ ]
725
+ }
726
+ ]
727
+ },
728
+ {
729
+ "inputs": [
730
+ { "internalType": "address", "name": "addr", "type": "address" },
731
+ { "internalType": "uint256", "name": "count", "type": "uint256" }
732
+ ],
733
+ "stateMutability": "view",
734
+ "type": "function",
735
+ "name": "getVotes",
736
+ "outputs": [
737
+ {
738
+ "internalType": "struct ConsensusV1.VoteResult[]",
739
+ "name": "",
740
+ "type": "tuple[]",
741
+ "components": [
742
+ { "internalType": "address", "name": "voter", "type": "address" },
743
+ { "internalType": "address", "name": "validator", "type": "address" }
744
+ ]
745
+ }
746
+ ]
747
+ },
748
+ {
749
+ "inputs": [],
750
+ "stateMutability": "view",
751
+ "type": "function",
752
+ "name": "getVotesCount",
753
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
754
+ },
755
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "initialize" },
756
+ {
757
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address" }],
758
+ "stateMutability": "view",
759
+ "type": "function",
760
+ "name": "isValidatorRegistered",
761
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
762
+ },
763
+ {
764
+ "inputs": [],
765
+ "stateMutability": "view",
766
+ "type": "function",
767
+ "name": "owner",
768
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
769
+ },
770
+ {
771
+ "inputs": [],
772
+ "stateMutability": "view",
773
+ "type": "function",
774
+ "name": "proxiableUUID",
775
+ "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }]
776
+ },
777
+ {
778
+ "inputs": [{ "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }],
779
+ "stateMutability": "nonpayable",
780
+ "type": "function",
781
+ "name": "registerValidator"
782
+ },
783
+ {
784
+ "inputs": [],
785
+ "stateMutability": "view",
786
+ "type": "function",
787
+ "name": "registeredValidatorsCount",
788
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
789
+ },
790
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "renounceOwnership" },
791
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "resignValidator" },
792
+ {
793
+ "inputs": [],
794
+ "stateMutability": "view",
795
+ "type": "function",
796
+ "name": "resignedValidatorsCount",
797
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
798
+ },
799
+ {
800
+ "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
801
+ "stateMutability": "nonpayable",
802
+ "type": "function",
803
+ "name": "transferOwnership"
804
+ },
805
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "unvote" },
806
+ {
807
+ "inputs": [{ "internalType": "bytes", "name": "blsPublicKey", "type": "bytes" }],
808
+ "stateMutability": "nonpayable",
809
+ "type": "function",
810
+ "name": "updateValidator"
811
+ },
812
+ {
813
+ "inputs": [{ "internalType": "address[]", "name": "voters", "type": "address[]" }],
814
+ "stateMutability": "nonpayable",
815
+ "type": "function",
816
+ "name": "updateVoters"
817
+ },
818
+ {
819
+ "inputs": [
820
+ { "internalType": "address", "name": "newImplementation", "type": "address" },
821
+ { "internalType": "bytes", "name": "data", "type": "bytes" }
822
+ ],
823
+ "stateMutability": "payable",
824
+ "type": "function",
825
+ "name": "upgradeToAndCall"
826
+ },
827
+ {
828
+ "inputs": [],
829
+ "stateMutability": "pure",
830
+ "type": "function",
831
+ "name": "version",
832
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
833
+ },
834
+ {
835
+ "inputs": [{ "internalType": "address", "name": "addr", "type": "address" }],
836
+ "stateMutability": "nonpayable",
837
+ "type": "function",
838
+ "name": "vote"
839
+ }
840
+ ],
841
+ "devdoc": {
842
+ "kind": "dev",
843
+ "methods": {
844
+ "owner()": { "details": "Returns the address of the current owner." },
845
+ "proxiableUUID()": {
846
+ "details": "Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
847
+ },
848
+ "renounceOwnership()": {
849
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
850
+ },
851
+ "transferOwnership(address)": {
852
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
853
+ },
854
+ "upgradeToAndCall(address,bytes)": {
855
+ "custom:oz-upgrades-unsafe-allow-reachable": "delegatecall",
856
+ "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
857
+ }
858
+ },
859
+ "version": 1
860
+ },
861
+ "userdoc": { "kind": "user", "methods": {}, "version": 1 }
862
+ },
863
+ "settings": {
864
+ "remappings": [
865
+ "@contracts/=src/",
866
+ "@forge-std/=lib/forge-std/src/",
867
+ "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
868
+ "@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
869
+ "ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
870
+ "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
871
+ "forge-std/=lib/forge-std/src/",
872
+ "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
873
+ "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
874
+ "openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/",
875
+ "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
876
+ "solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"
877
+ ],
878
+ "optimizer": { "enabled": true, "runs": 200 },
879
+ "metadata": { "bytecodeHash": "ipfs" },
880
+ "compilationTarget": { "src/consensus/ConsensusV1.sol": "ConsensusV1" },
881
+ "evmVersion": "shanghai",
882
+ "libraries": {}
883
+ },
884
+ "sources": {
885
+ "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": {
886
+ "keccak256": "0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a",
887
+ "urls": [
888
+ "bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6",
889
+ "dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"
890
+ ],
891
+ "license": "MIT"
892
+ },
893
+ "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": {
894
+ "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b",
895
+ "urls": [
896
+ "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609",
897
+ "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"
898
+ ],
899
+ "license": "MIT"
900
+ },
901
+ "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": {
902
+ "keccak256": "0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27",
903
+ "urls": [
904
+ "bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e",
905
+ "dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"
906
+ ],
907
+ "license": "MIT"
908
+ },
909
+ "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": {
910
+ "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397",
911
+ "urls": [
912
+ "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9",
913
+ "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"
914
+ ],
915
+ "license": "MIT"
916
+ },
917
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol": {
918
+ "keccak256": "0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486",
919
+ "urls": [
920
+ "bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d",
921
+ "dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"
922
+ ],
923
+ "license": "MIT"
924
+ },
925
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol": {
926
+ "keccak256": "0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d",
927
+ "urls": [
928
+ "bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196",
929
+ "dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"
930
+ ],
931
+ "license": "MIT"
932
+ },
933
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": {
934
+ "keccak256": "0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06",
935
+ "urls": [
936
+ "bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c",
937
+ "dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"
938
+ ],
939
+ "license": "MIT"
940
+ },
941
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": {
942
+ "keccak256": "0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c",
943
+ "urls": [
944
+ "bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa",
945
+ "dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"
946
+ ],
947
+ "license": "MIT"
948
+ },
949
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol": {
950
+ "keccak256": "0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5",
951
+ "urls": [
952
+ "bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23",
953
+ "dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"
954
+ ],
955
+ "license": "MIT"
956
+ },
957
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol": {
958
+ "keccak256": "0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123",
959
+ "urls": [
960
+ "bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf",
961
+ "dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"
962
+ ],
963
+ "license": "MIT"
964
+ },
965
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol": {
966
+ "keccak256": "0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97",
967
+ "urls": [
968
+ "bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b",
969
+ "dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"
970
+ ],
971
+ "license": "MIT"
972
+ },
973
+ "src/consensus/ConsensusV1.sol": {
974
+ "keccak256": "0xf46c47adfacce9f204df2223af8b3cde47b9fdcaa372d67fdd739cb6ec096733",
975
+ "urls": [
976
+ "bzz-raw://15318c1cdb08120eab84d5d1f6fe997749e843d0b6487f8ae58eaf189dafd27e",
977
+ "dweb:/ipfs/QmbwYcnDQBG3NwBpUHvjGWPLuNYXhPxjitowEFjQk9BVqg"
978
+ ],
979
+ "license": "GNU GENERAL PUBLIC LICENSE"
980
+ }
981
+ },
982
+ "version": 1
983
+ },
984
+ "id": 37
985
+ }