@arkecosystem/typescript-crypto 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/.editorconfig +16 -0
  2. package/.eslintrc.js +12 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +24 -0
  4. package/.github/workflows/ci.yml +36 -0
  5. package/.github/workflows/publish.yml +56 -0
  6. package/.vscode/settings.json +2 -0
  7. package/README.md +31 -0
  8. package/dist/configuration/Network.d.ts +7 -0
  9. package/dist/configuration/Network.d.ts.map +1 -0
  10. package/dist/configuration/Network.js +12 -0
  11. package/dist/configuration/index.d.ts +2 -0
  12. package/dist/configuration/index.d.ts.map +1 -0
  13. package/dist/configuration/index.js +1 -0
  14. package/dist/enums/AbiFunction.d.ts +10 -0
  15. package/dist/enums/AbiFunction.d.ts.map +1 -0
  16. package/dist/enums/AbiFunction.js +10 -0
  17. package/dist/enums/Constants.d.ts +5 -0
  18. package/dist/enums/Constants.d.ts.map +1 -0
  19. package/dist/enums/Constants.js +5 -0
  20. package/dist/enums/ContractAbiType.d.ts +7 -0
  21. package/dist/enums/ContractAbiType.d.ts.map +1 -0
  22. package/dist/enums/ContractAbiType.js +7 -0
  23. package/dist/enums/ContractAddresses.d.ts +6 -0
  24. package/dist/enums/ContractAddresses.d.ts.map +1 -0
  25. package/dist/enums/ContractAddresses.js +6 -0
  26. package/dist/enums/index.d.ts +5 -0
  27. package/dist/enums/index.d.ts.map +1 -0
  28. package/dist/enums/index.js +4 -0
  29. package/dist/exceptions/InvalidUsernameException.d.ts +4 -0
  30. package/dist/exceptions/InvalidUsernameException.d.ts.map +1 -0
  31. package/dist/exceptions/InvalidUsernameException.js +6 -0
  32. package/dist/exceptions/index.d.ts +2 -0
  33. package/dist/exceptions/index.d.ts.map +1 -0
  34. package/dist/exceptions/index.js +1 -0
  35. package/dist/identities/Address.d.ts +7 -0
  36. package/dist/identities/Address.d.ts.map +1 -0
  37. package/dist/identities/Address.js +15 -0
  38. package/dist/identities/PrivateKey.d.ts +16 -0
  39. package/dist/identities/PrivateKey.d.ts.map +1 -0
  40. package/dist/identities/PrivateKey.js +31 -0
  41. package/dist/identities/PublicKey.d.ts +8 -0
  42. package/dist/identities/PublicKey.d.ts.map +1 -0
  43. package/dist/identities/PublicKey.js +24 -0
  44. package/dist/identities/WIF.d.ts +4 -0
  45. package/dist/identities/WIF.d.ts.map +1 -0
  46. package/dist/identities/WIF.js +13 -0
  47. package/dist/identities/index.d.ts +5 -0
  48. package/dist/identities/index.d.ts.map +1 -0
  49. package/dist/identities/index.js +4 -0
  50. package/dist/index.d.ts +8 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +24 -0
  53. package/dist/networks/AbstractNetwork.d.ts +6 -0
  54. package/dist/networks/AbstractNetwork.d.ts.map +1 -0
  55. package/dist/networks/AbstractNetwork.js +2 -0
  56. package/dist/networks/Mainnet.d.ts +7 -0
  57. package/dist/networks/Mainnet.d.ts.map +1 -0
  58. package/dist/networks/Mainnet.js +12 -0
  59. package/dist/networks/Testnet.d.ts +7 -0
  60. package/dist/networks/Testnet.d.ts.map +1 -0
  61. package/dist/networks/Testnet.js +12 -0
  62. package/dist/networks/index.d.ts +4 -0
  63. package/dist/networks/index.d.ts.map +1 -0
  64. package/dist/networks/index.js +3 -0
  65. package/dist/transactions/Deserializer.d.ts +18 -0
  66. package/dist/transactions/Deserializer.d.ts.map +1 -0
  67. package/dist/transactions/Deserializer.js +106 -0
  68. package/dist/transactions/Serializer.d.ts +9 -0
  69. package/dist/transactions/Serializer.d.ts.map +1 -0
  70. package/dist/transactions/Serializer.js +16 -0
  71. package/dist/transactions/builders/AbstractTransactionBuilder.d.ts +17 -0
  72. package/dist/transactions/builders/AbstractTransactionBuilder.d.ts.map +1 -0
  73. package/dist/transactions/builders/AbstractTransactionBuilder.js +54 -0
  74. package/dist/transactions/builders/EvmCallBuilder.d.ts +9 -0
  75. package/dist/transactions/builders/EvmCallBuilder.d.ts.map +1 -0
  76. package/dist/transactions/builders/EvmCallBuilder.js +18 -0
  77. package/dist/transactions/builders/MultipaymentBuilder.d.ts +9 -0
  78. package/dist/transactions/builders/MultipaymentBuilder.d.ts.map +1 -0
  79. package/dist/transactions/builders/MultipaymentBuilder.js +25 -0
  80. package/dist/transactions/builders/TransferBuilder.d.ts +8 -0
  81. package/dist/transactions/builders/TransferBuilder.d.ts.map +1 -0
  82. package/dist/transactions/builders/TransferBuilder.js +15 -0
  83. package/dist/transactions/builders/UnvoteBuilder.d.ts +8 -0
  84. package/dist/transactions/builders/UnvoteBuilder.d.ts.map +1 -0
  85. package/dist/transactions/builders/UnvoteBuilder.js +15 -0
  86. package/dist/transactions/builders/UsernameRegistrationBuilder.d.ts +9 -0
  87. package/dist/transactions/builders/UsernameRegistrationBuilder.d.ts.map +1 -0
  88. package/dist/transactions/builders/UsernameRegistrationBuilder.js +22 -0
  89. package/dist/transactions/builders/UsernameResignationBuilder.d.ts +8 -0
  90. package/dist/transactions/builders/UsernameResignationBuilder.d.ts.map +1 -0
  91. package/dist/transactions/builders/UsernameResignationBuilder.js +15 -0
  92. package/dist/transactions/builders/ValidatorRegistrationBuilder.d.ts +9 -0
  93. package/dist/transactions/builders/ValidatorRegistrationBuilder.d.ts.map +1 -0
  94. package/dist/transactions/builders/ValidatorRegistrationBuilder.js +20 -0
  95. package/dist/transactions/builders/ValidatorResignationBuilder.d.ts +8 -0
  96. package/dist/transactions/builders/ValidatorResignationBuilder.d.ts.map +1 -0
  97. package/dist/transactions/builders/ValidatorResignationBuilder.js +15 -0
  98. package/dist/transactions/builders/VoteBuilder.d.ts +9 -0
  99. package/dist/transactions/builders/VoteBuilder.d.ts.map +1 -0
  100. package/dist/transactions/builders/VoteBuilder.js +20 -0
  101. package/dist/transactions/builders/index.d.ts +11 -0
  102. package/dist/transactions/builders/index.d.ts.map +1 -0
  103. package/dist/transactions/builders/index.js +10 -0
  104. package/dist/transactions/index.d.ts +5 -0
  105. package/dist/transactions/index.d.ts.map +1 -0
  106. package/dist/transactions/index.js +4 -0
  107. package/dist/transactions/types/AbstractTransaction.d.ts +22 -0
  108. package/dist/transactions/types/AbstractTransaction.d.ts.map +1 -0
  109. package/dist/transactions/types/AbstractTransaction.js +79 -0
  110. package/dist/transactions/types/EvmCall.d.ts +8 -0
  111. package/dist/transactions/types/EvmCall.d.ts.map +1 -0
  112. package/dist/transactions/types/EvmCall.js +14 -0
  113. package/dist/transactions/types/Multipayment.d.ts +9 -0
  114. package/dist/transactions/types/Multipayment.d.ts.map +1 -0
  115. package/dist/transactions/types/Multipayment.js +38 -0
  116. package/dist/transactions/types/Transfer.d.ts +8 -0
  117. package/dist/transactions/types/Transfer.d.ts.map +1 -0
  118. package/dist/transactions/types/Transfer.js +14 -0
  119. package/dist/transactions/types/Unvote.d.ts +8 -0
  120. package/dist/transactions/types/Unvote.d.ts.map +1 -0
  121. package/dist/transactions/types/Unvote.js +16 -0
  122. package/dist/transactions/types/UsernameRegistration.d.ts +9 -0
  123. package/dist/transactions/types/UsernameRegistration.d.ts.map +1 -0
  124. package/dist/transactions/types/UsernameRegistration.js +33 -0
  125. package/dist/transactions/types/UsernameResignation.d.ts +8 -0
  126. package/dist/transactions/types/UsernameResignation.d.ts.map +1 -0
  127. package/dist/transactions/types/UsernameResignation.js +16 -0
  128. package/dist/transactions/types/ValidatorRegistration.d.ts +9 -0
  129. package/dist/transactions/types/ValidatorRegistration.d.ts.map +1 -0
  130. package/dist/transactions/types/ValidatorRegistration.js +33 -0
  131. package/dist/transactions/types/ValidatorResignation.d.ts +8 -0
  132. package/dist/transactions/types/ValidatorResignation.d.ts.map +1 -0
  133. package/dist/transactions/types/ValidatorResignation.js +16 -0
  134. package/dist/transactions/types/Vote.d.ts +9 -0
  135. package/dist/transactions/types/Vote.d.ts.map +1 -0
  136. package/dist/transactions/types/Vote.js +31 -0
  137. package/dist/transactions/types/index.d.ts +11 -0
  138. package/dist/transactions/types/index.d.ts.map +1 -0
  139. package/dist/transactions/types/index.js +10 -0
  140. package/dist/types.d.ts +72 -0
  141. package/dist/types.d.ts.map +1 -0
  142. package/dist/types.js +1 -0
  143. package/dist/utils/Abi/ArgumentDecoder.d.ts +10 -0
  144. package/dist/utils/Abi/ArgumentDecoder.d.ts.map +1 -0
  145. package/dist/utils/Abi/ArgumentDecoder.js +21 -0
  146. package/dist/utils/Abi/json/Abi.Consensus.json +1673 -0
  147. package/dist/utils/Abi/json/Abi.Multipayment.json +110 -0
  148. package/dist/utils/Abi/json/Abi.Usernames.json +900 -0
  149. package/dist/utils/AbiBase.d.ts +8 -0
  150. package/dist/utils/AbiBase.d.ts.map +1 -0
  151. package/dist/utils/AbiBase.js +25 -0
  152. package/dist/utils/AbiDecoder.d.ts +6 -0
  153. package/dist/utils/AbiDecoder.d.ts.map +1 -0
  154. package/dist/utils/AbiDecoder.js +14 -0
  155. package/dist/utils/AbiEncoder.d.ts +5 -0
  156. package/dist/utils/AbiEncoder.d.ts.map +1 -0
  157. package/dist/utils/AbiEncoder.js +6 -0
  158. package/dist/utils/Helpers.d.ts +19 -0
  159. package/dist/utils/Helpers.d.ts.map +1 -0
  160. package/dist/utils/Helpers.js +38 -0
  161. package/dist/utils/Message.d.ts +14 -0
  162. package/dist/utils/Message.d.ts.map +1 -0
  163. package/dist/utils/Message.js +43 -0
  164. package/dist/utils/Slot.d.ts +5 -0
  165. package/dist/utils/Slot.d.ts.map +1 -0
  166. package/dist/utils/Slot.js +9 -0
  167. package/dist/utils/TransactionUtils.d.ts +7 -0
  168. package/dist/utils/TransactionUtils.d.ts.map +1 -0
  169. package/dist/utils/TransactionUtils.js +35 -0
  170. package/dist/utils/UnitConverter.d.ts +8 -0
  171. package/dist/utils/UnitConverter.d.ts.map +1 -0
  172. package/dist/utils/UnitConverter.js +48 -0
  173. package/dist/utils/index.d.ts +9 -0
  174. package/dist/utils/index.d.ts.map +1 -0
  175. package/dist/utils/index.js +8 -0
  176. package/jest.config.ts +14 -0
  177. package/package.json +59 -0
  178. package/prettier.config.js +8 -0
  179. package/src/configuration/Network.ts +18 -0
  180. package/src/configuration/index.ts +1 -0
  181. package/src/enums/AbiFunction.ts +9 -0
  182. package/src/enums/Constants.ts +4 -0
  183. package/src/enums/ContractAbiType.ts +6 -0
  184. package/src/enums/ContractAddresses.ts +5 -0
  185. package/src/enums/index.ts +4 -0
  186. package/src/exceptions/InvalidUsernameException.ts +6 -0
  187. package/src/exceptions/index.ts +1 -0
  188. package/src/identities/Address.ts +19 -0
  189. package/src/identities/PrivateKey.ts +49 -0
  190. package/src/identities/PublicKey.ts +28 -0
  191. package/src/identities/WIF.ts +16 -0
  192. package/src/identities/index.ts +4 -0
  193. package/src/index.ts +7 -0
  194. package/src/networks/AbstractNetwork.ts +7 -0
  195. package/src/networks/Mainnet.ts +15 -0
  196. package/src/networks/Testnet.ts +15 -0
  197. package/src/networks/index.ts +3 -0
  198. package/src/transactions/Deserializer.ts +140 -0
  199. package/src/transactions/Serializer.ts +24 -0
  200. package/src/transactions/builders/AbstractTransactionBuilder.ts +81 -0
  201. package/src/transactions/builders/EvmCallBuilder.ts +24 -0
  202. package/src/transactions/builders/MultipaymentBuilder.ts +37 -0
  203. package/src/transactions/builders/TransferBuilder.ts +22 -0
  204. package/src/transactions/builders/UnvoteBuilder.ts +21 -0
  205. package/src/transactions/builders/UsernameRegistrationBuilder.ts +35 -0
  206. package/src/transactions/builders/UsernameResignationBuilder.ts +21 -0
  207. package/src/transactions/builders/ValidatorRegistrationBuilder.ts +32 -0
  208. package/src/transactions/builders/ValidatorResignationBuilder.ts +21 -0
  209. package/src/transactions/builders/VoteBuilder.ts +29 -0
  210. package/src/transactions/builders/index.ts +10 -0
  211. package/src/transactions/index.ts +4 -0
  212. package/src/transactions/types/AbstractTransaction.ts +118 -0
  213. package/src/transactions/types/EvmCall.ts +22 -0
  214. package/src/transactions/types/Multipayment.ts +51 -0
  215. package/src/transactions/types/Transfer.ts +22 -0
  216. package/src/transactions/types/Unvote.ts +24 -0
  217. package/src/transactions/types/UsernameRegistration.ts +44 -0
  218. package/src/transactions/types/UsernameResignation.ts +24 -0
  219. package/src/transactions/types/ValidatorRegistration.ts +44 -0
  220. package/src/transactions/types/ValidatorResignation.ts +24 -0
  221. package/src/transactions/types/Vote.ts +42 -0
  222. package/src/transactions/types/index.ts +10 -0
  223. package/src/types.ts +86 -0
  224. package/src/utils/Abi/ArgumentDecoder.ts +29 -0
  225. package/src/utils/Abi/json/Abi.Consensus.json +1673 -0
  226. package/src/utils/Abi/json/Abi.Multipayment.json +110 -0
  227. package/src/utils/Abi/json/Abi.Usernames.json +900 -0
  228. package/src/utils/AbiBase.ts +32 -0
  229. package/src/utils/AbiDecoder.ts +19 -0
  230. package/src/utils/AbiEncoder.ts +7 -0
  231. package/src/utils/Helpers.ts +46 -0
  232. package/src/utils/Message.ts +63 -0
  233. package/src/utils/Slot.ts +11 -0
  234. package/src/utils/TransactionUtils.ts +43 -0
  235. package/src/utils/UnitConverter.ts +57 -0
  236. package/src/utils/index.ts +8 -0
  237. package/tests/fixtures/global.json +10 -0
  238. package/tests/fixtures/identity.json +11 -0
  239. package/tests/fixtures/message-sign.json +5 -0
  240. package/tests/fixtures/sign-compact.json +10 -0
  241. package/tests/fixtures/transactions/evm-sign.json +18 -0
  242. package/tests/fixtures/transactions/multipayment-empty.json +18 -0
  243. package/tests/fixtures/transactions/multipayment-single.json +18 -0
  244. package/tests/fixtures/transactions/multipayment.json +18 -0
  245. package/tests/fixtures/transactions/transfer-0.json +18 -0
  246. package/tests/fixtures/transactions/transfer-large-amount.json +18 -0
  247. package/tests/fixtures/transactions/transfer.json +18 -0
  248. package/tests/fixtures/transactions/unvote.json +18 -0
  249. package/tests/fixtures/transactions/username-registration.json +18 -0
  250. package/tests/fixtures/transactions/username-resignation.json +18 -0
  251. package/tests/fixtures/transactions/validator-registration.json +18 -0
  252. package/tests/fixtures/transactions/validator-resignation.json +18 -0
  253. package/tests/fixtures/transactions/vote.json +18 -0
  254. package/tests/unit/identities/Address.test.ts +26 -0
  255. package/tests/unit/identities/PrivateKey.test.ts +36 -0
  256. package/tests/unit/identities/PublicKey.test.ts +39 -0
  257. package/tests/unit/identities/WIF.test.ts +8 -0
  258. package/tests/unit/transactions/Deserializer.test.ts +138 -0
  259. package/tests/unit/transactions/Serializer.test.ts +9 -0
  260. package/tests/unit/transactions/builders/EvmCallBuilder.test.ts +49 -0
  261. package/tests/unit/transactions/builders/MultipaymentBuilder.test.ts +99 -0
  262. package/tests/unit/transactions/builders/TransferBuilder.test.ts +73 -0
  263. package/tests/unit/transactions/builders/UnvoteBuilder.test.ts +47 -0
  264. package/tests/unit/transactions/builders/UsernameRegistrationBuilder.test.ts +54 -0
  265. package/tests/unit/transactions/builders/UsernameResignationBuilder.test.ts +48 -0
  266. package/tests/unit/transactions/builders/ValidatorRegistrationBuilder.test.ts +51 -0
  267. package/tests/unit/transactions/builders/ValidatorResignationBuilder.test.ts +48 -0
  268. package/tests/unit/transactions/builders/VoteBuilder.test.ts +48 -0
  269. package/tests/unit/transactions/types/AbstractTransaction.test.ts +145 -0
  270. package/tests/unit/utils/Abi/ArgumentDecoder.test.ts +55 -0
  271. package/tests/unit/utils/AbiDecoder.test.ts +44 -0
  272. package/tests/unit/utils/AbiEncoder.test.ts +30 -0
  273. package/tests/unit/utils/Helpers.test.ts +120 -0
  274. package/tests/unit/utils/Message.test.ts +104 -0
  275. package/tests/unit/utils/Slot.test.ts +69 -0
  276. package/tests/unit/utils/TransactionUtils.test.ts +31 -0
  277. package/tests/unit/utils/UnitConverter.test.ts +71 -0
  278. package/tsconfig.json +20 -0
@@ -0,0 +1,1673 @@
1
+ {
2
+ "abi": [
3
+ {
4
+ "type": "function",
5
+ "name": "UPGRADE_INTERFACE_VERSION",
6
+ "inputs": [],
7
+ "outputs": [
8
+ { "name": "", "type": "string", "internalType": "string" }
9
+ ],
10
+ "stateMutability": "view"
11
+ },
12
+ {
13
+ "type": "function",
14
+ "name": "activeValidatorsCount",
15
+ "inputs": [],
16
+ "outputs": [
17
+ { "name": "", "type": "uint256", "internalType": "uint256" }
18
+ ],
19
+ "stateMutability": "view"
20
+ },
21
+ {
22
+ "type": "function",
23
+ "name": "addValidator",
24
+ "inputs": [
25
+ {
26
+ "name": "addr",
27
+ "type": "address",
28
+ "internalType": "address"
29
+ },
30
+ {
31
+ "name": "blsPublicKey",
32
+ "type": "bytes",
33
+ "internalType": "bytes"
34
+ },
35
+ { "name": "isResigned", "type": "bool", "internalType": "bool" }
36
+ ],
37
+ "outputs": [],
38
+ "stateMutability": "nonpayable"
39
+ },
40
+ {
41
+ "type": "function",
42
+ "name": "addVote",
43
+ "inputs": [
44
+ {
45
+ "name": "voter",
46
+ "type": "address",
47
+ "internalType": "address"
48
+ },
49
+ {
50
+ "name": "validator",
51
+ "type": "address",
52
+ "internalType": "address"
53
+ }
54
+ ],
55
+ "outputs": [],
56
+ "stateMutability": "nonpayable"
57
+ },
58
+ {
59
+ "type": "function",
60
+ "name": "calculateActiveValidators",
61
+ "inputs": [
62
+ { "name": "n", "type": "uint8", "internalType": "uint8" }
63
+ ],
64
+ "outputs": [],
65
+ "stateMutability": "nonpayable"
66
+ },
67
+ {
68
+ "type": "function",
69
+ "name": "getActiveValidators",
70
+ "inputs": [],
71
+ "outputs": [
72
+ {
73
+ "name": "",
74
+ "type": "tuple[]",
75
+ "internalType": "struct ConsensusV1.Validator[]",
76
+ "components": [
77
+ {
78
+ "name": "addr",
79
+ "type": "address",
80
+ "internalType": "address"
81
+ },
82
+ {
83
+ "name": "data",
84
+ "type": "tuple",
85
+ "internalType": "struct ConsensusV1.ValidatorData",
86
+ "components": [
87
+ {
88
+ "name": "votersCount",
89
+ "type": "uint256",
90
+ "internalType": "uint256"
91
+ },
92
+ {
93
+ "name": "voteBalance",
94
+ "type": "uint256",
95
+ "internalType": "uint256"
96
+ },
97
+ {
98
+ "name": "isResigned",
99
+ "type": "bool",
100
+ "internalType": "bool"
101
+ },
102
+ {
103
+ "name": "blsPublicKey",
104
+ "type": "bytes",
105
+ "internalType": "bytes"
106
+ }
107
+ ]
108
+ }
109
+ ]
110
+ }
111
+ ],
112
+ "stateMutability": "view"
113
+ },
114
+ {
115
+ "type": "function",
116
+ "name": "getAllValidators",
117
+ "inputs": [],
118
+ "outputs": [
119
+ {
120
+ "name": "",
121
+ "type": "tuple[]",
122
+ "internalType": "struct ConsensusV1.Validator[]",
123
+ "components": [
124
+ {
125
+ "name": "addr",
126
+ "type": "address",
127
+ "internalType": "address"
128
+ },
129
+ {
130
+ "name": "data",
131
+ "type": "tuple",
132
+ "internalType": "struct ConsensusV1.ValidatorData",
133
+ "components": [
134
+ {
135
+ "name": "votersCount",
136
+ "type": "uint256",
137
+ "internalType": "uint256"
138
+ },
139
+ {
140
+ "name": "voteBalance",
141
+ "type": "uint256",
142
+ "internalType": "uint256"
143
+ },
144
+ {
145
+ "name": "isResigned",
146
+ "type": "bool",
147
+ "internalType": "bool"
148
+ },
149
+ {
150
+ "name": "blsPublicKey",
151
+ "type": "bytes",
152
+ "internalType": "bytes"
153
+ }
154
+ ]
155
+ }
156
+ ]
157
+ }
158
+ ],
159
+ "stateMutability": "view"
160
+ },
161
+ {
162
+ "type": "function",
163
+ "name": "getRounds",
164
+ "inputs": [
165
+ {
166
+ "name": "offset",
167
+ "type": "uint256",
168
+ "internalType": "uint256"
169
+ },
170
+ {
171
+ "name": "count",
172
+ "type": "uint256",
173
+ "internalType": "uint256"
174
+ }
175
+ ],
176
+ "outputs": [
177
+ {
178
+ "name": "",
179
+ "type": "tuple[]",
180
+ "internalType": "struct ConsensusV1.Round[]",
181
+ "components": [
182
+ {
183
+ "name": "round",
184
+ "type": "uint256",
185
+ "internalType": "uint256"
186
+ },
187
+ {
188
+ "name": "validators",
189
+ "type": "tuple[]",
190
+ "internalType": "struct ConsensusV1.RoundValidator[]",
191
+ "components": [
192
+ {
193
+ "name": "addr",
194
+ "type": "address",
195
+ "internalType": "address"
196
+ },
197
+ {
198
+ "name": "voteBalance",
199
+ "type": "uint256",
200
+ "internalType": "uint256"
201
+ }
202
+ ]
203
+ }
204
+ ]
205
+ }
206
+ ],
207
+ "stateMutability": "view"
208
+ },
209
+ {
210
+ "type": "function",
211
+ "name": "getRoundsCount",
212
+ "inputs": [],
213
+ "outputs": [
214
+ { "name": "", "type": "uint256", "internalType": "uint256" }
215
+ ],
216
+ "stateMutability": "view"
217
+ },
218
+ {
219
+ "type": "function",
220
+ "name": "getValidator",
221
+ "inputs": [
222
+ { "name": "addr", "type": "address", "internalType": "address" }
223
+ ],
224
+ "outputs": [
225
+ {
226
+ "name": "",
227
+ "type": "tuple",
228
+ "internalType": "struct ConsensusV1.Validator",
229
+ "components": [
230
+ {
231
+ "name": "addr",
232
+ "type": "address",
233
+ "internalType": "address"
234
+ },
235
+ {
236
+ "name": "data",
237
+ "type": "tuple",
238
+ "internalType": "struct ConsensusV1.ValidatorData",
239
+ "components": [
240
+ {
241
+ "name": "votersCount",
242
+ "type": "uint256",
243
+ "internalType": "uint256"
244
+ },
245
+ {
246
+ "name": "voteBalance",
247
+ "type": "uint256",
248
+ "internalType": "uint256"
249
+ },
250
+ {
251
+ "name": "isResigned",
252
+ "type": "bool",
253
+ "internalType": "bool"
254
+ },
255
+ {
256
+ "name": "blsPublicKey",
257
+ "type": "bytes",
258
+ "internalType": "bytes"
259
+ }
260
+ ]
261
+ }
262
+ ]
263
+ }
264
+ ],
265
+ "stateMutability": "view"
266
+ },
267
+ {
268
+ "type": "function",
269
+ "name": "getVotes",
270
+ "inputs": [
271
+ {
272
+ "name": "addr",
273
+ "type": "address",
274
+ "internalType": "address"
275
+ },
276
+ {
277
+ "name": "count",
278
+ "type": "uint256",
279
+ "internalType": "uint256"
280
+ }
281
+ ],
282
+ "outputs": [
283
+ {
284
+ "name": "",
285
+ "type": "tuple[]",
286
+ "internalType": "struct ConsensusV1.VoteResult[]",
287
+ "components": [
288
+ {
289
+ "name": "voter",
290
+ "type": "address",
291
+ "internalType": "address"
292
+ },
293
+ {
294
+ "name": "validator",
295
+ "type": "address",
296
+ "internalType": "address"
297
+ }
298
+ ]
299
+ }
300
+ ],
301
+ "stateMutability": "view"
302
+ },
303
+ {
304
+ "type": "function",
305
+ "name": "getVotesCount",
306
+ "inputs": [],
307
+ "outputs": [
308
+ { "name": "", "type": "uint256", "internalType": "uint256" }
309
+ ],
310
+ "stateMutability": "view"
311
+ },
312
+ {
313
+ "type": "function",
314
+ "name": "initialize",
315
+ "inputs": [],
316
+ "outputs": [],
317
+ "stateMutability": "nonpayable"
318
+ },
319
+ {
320
+ "type": "function",
321
+ "name": "isValidatorRegistered",
322
+ "inputs": [
323
+ { "name": "addr", "type": "address", "internalType": "address" }
324
+ ],
325
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
326
+ "stateMutability": "view"
327
+ },
328
+ {
329
+ "type": "function",
330
+ "name": "owner",
331
+ "inputs": [],
332
+ "outputs": [
333
+ { "name": "", "type": "address", "internalType": "address" }
334
+ ],
335
+ "stateMutability": "view"
336
+ },
337
+ {
338
+ "type": "function",
339
+ "name": "proxiableUUID",
340
+ "inputs": [],
341
+ "outputs": [
342
+ { "name": "", "type": "bytes32", "internalType": "bytes32" }
343
+ ],
344
+ "stateMutability": "view"
345
+ },
346
+ {
347
+ "type": "function",
348
+ "name": "registerValidator",
349
+ "inputs": [
350
+ {
351
+ "name": "blsPublicKey",
352
+ "type": "bytes",
353
+ "internalType": "bytes"
354
+ }
355
+ ],
356
+ "outputs": [],
357
+ "stateMutability": "nonpayable"
358
+ },
359
+ {
360
+ "type": "function",
361
+ "name": "registeredValidatorsCount",
362
+ "inputs": [],
363
+ "outputs": [
364
+ { "name": "", "type": "uint256", "internalType": "uint256" }
365
+ ],
366
+ "stateMutability": "view"
367
+ },
368
+ {
369
+ "type": "function",
370
+ "name": "renounceOwnership",
371
+ "inputs": [],
372
+ "outputs": [],
373
+ "stateMutability": "nonpayable"
374
+ },
375
+ {
376
+ "type": "function",
377
+ "name": "resignValidator",
378
+ "inputs": [],
379
+ "outputs": [],
380
+ "stateMutability": "nonpayable"
381
+ },
382
+ {
383
+ "type": "function",
384
+ "name": "resignedValidatorsCount",
385
+ "inputs": [],
386
+ "outputs": [
387
+ { "name": "", "type": "uint256", "internalType": "uint256" }
388
+ ],
389
+ "stateMutability": "view"
390
+ },
391
+ {
392
+ "type": "function",
393
+ "name": "transferOwnership",
394
+ "inputs": [
395
+ {
396
+ "name": "newOwner",
397
+ "type": "address",
398
+ "internalType": "address"
399
+ }
400
+ ],
401
+ "outputs": [],
402
+ "stateMutability": "nonpayable"
403
+ },
404
+ {
405
+ "type": "function",
406
+ "name": "unvote",
407
+ "inputs": [],
408
+ "outputs": [],
409
+ "stateMutability": "nonpayable"
410
+ },
411
+ {
412
+ "type": "function",
413
+ "name": "updateValidator",
414
+ "inputs": [
415
+ {
416
+ "name": "blsPublicKey",
417
+ "type": "bytes",
418
+ "internalType": "bytes"
419
+ }
420
+ ],
421
+ "outputs": [],
422
+ "stateMutability": "nonpayable"
423
+ },
424
+ {
425
+ "type": "function",
426
+ "name": "updateVoters",
427
+ "inputs": [
428
+ {
429
+ "name": "voters",
430
+ "type": "address[]",
431
+ "internalType": "address[]"
432
+ }
433
+ ],
434
+ "outputs": [],
435
+ "stateMutability": "nonpayable"
436
+ },
437
+ {
438
+ "type": "function",
439
+ "name": "upgradeToAndCall",
440
+ "inputs": [
441
+ {
442
+ "name": "newImplementation",
443
+ "type": "address",
444
+ "internalType": "address"
445
+ },
446
+ { "name": "data", "type": "bytes", "internalType": "bytes" }
447
+ ],
448
+ "outputs": [],
449
+ "stateMutability": "payable"
450
+ },
451
+ {
452
+ "type": "function",
453
+ "name": "version",
454
+ "inputs": [],
455
+ "outputs": [
456
+ { "name": "", "type": "uint256", "internalType": "uint256" }
457
+ ],
458
+ "stateMutability": "pure"
459
+ },
460
+ {
461
+ "type": "function",
462
+ "name": "vote",
463
+ "inputs": [
464
+ { "name": "addr", "type": "address", "internalType": "address" }
465
+ ],
466
+ "outputs": [],
467
+ "stateMutability": "nonpayable"
468
+ },
469
+ {
470
+ "type": "event",
471
+ "name": "Initialized",
472
+ "inputs": [
473
+ {
474
+ "name": "version",
475
+ "type": "uint64",
476
+ "indexed": false,
477
+ "internalType": "uint64"
478
+ }
479
+ ],
480
+ "anonymous": false
481
+ },
482
+ {
483
+ "type": "event",
484
+ "name": "OwnershipTransferred",
485
+ "inputs": [
486
+ {
487
+ "name": "previousOwner",
488
+ "type": "address",
489
+ "indexed": true,
490
+ "internalType": "address"
491
+ },
492
+ {
493
+ "name": "newOwner",
494
+ "type": "address",
495
+ "indexed": true,
496
+ "internalType": "address"
497
+ }
498
+ ],
499
+ "anonymous": false
500
+ },
501
+ {
502
+ "type": "event",
503
+ "name": "Unvoted",
504
+ "inputs": [
505
+ {
506
+ "name": "voter",
507
+ "type": "address",
508
+ "indexed": false,
509
+ "internalType": "address"
510
+ },
511
+ {
512
+ "name": "validator",
513
+ "type": "address",
514
+ "indexed": false,
515
+ "internalType": "address"
516
+ }
517
+ ],
518
+ "anonymous": false
519
+ },
520
+ {
521
+ "type": "event",
522
+ "name": "Upgraded",
523
+ "inputs": [
524
+ {
525
+ "name": "implementation",
526
+ "type": "address",
527
+ "indexed": true,
528
+ "internalType": "address"
529
+ }
530
+ ],
531
+ "anonymous": false
532
+ },
533
+ {
534
+ "type": "event",
535
+ "name": "ValidatorRegistered",
536
+ "inputs": [
537
+ {
538
+ "name": "addr",
539
+ "type": "address",
540
+ "indexed": false,
541
+ "internalType": "address"
542
+ },
543
+ {
544
+ "name": "blsPublicKey",
545
+ "type": "bytes",
546
+ "indexed": false,
547
+ "internalType": "bytes"
548
+ }
549
+ ],
550
+ "anonymous": false
551
+ },
552
+ {
553
+ "type": "event",
554
+ "name": "ValidatorResigned",
555
+ "inputs": [
556
+ {
557
+ "name": "addr",
558
+ "type": "address",
559
+ "indexed": false,
560
+ "internalType": "address"
561
+ }
562
+ ],
563
+ "anonymous": false
564
+ },
565
+ {
566
+ "type": "event",
567
+ "name": "ValidatorUpdated",
568
+ "inputs": [
569
+ {
570
+ "name": "addr",
571
+ "type": "address",
572
+ "indexed": false,
573
+ "internalType": "address"
574
+ },
575
+ {
576
+ "name": "blsPublicKey",
577
+ "type": "bytes",
578
+ "indexed": false,
579
+ "internalType": "bytes"
580
+ }
581
+ ],
582
+ "anonymous": false
583
+ },
584
+ {
585
+ "type": "event",
586
+ "name": "Voted",
587
+ "inputs": [
588
+ {
589
+ "name": "voter",
590
+ "type": "address",
591
+ "indexed": false,
592
+ "internalType": "address"
593
+ },
594
+ {
595
+ "name": "validator",
596
+ "type": "address",
597
+ "indexed": false,
598
+ "internalType": "address"
599
+ }
600
+ ],
601
+ "anonymous": false
602
+ },
603
+ {
604
+ "type": "error",
605
+ "name": "AddressEmptyCode",
606
+ "inputs": [
607
+ {
608
+ "name": "target",
609
+ "type": "address",
610
+ "internalType": "address"
611
+ }
612
+ ]
613
+ },
614
+ { "type": "error", "name": "AlreadyVoted", "inputs": [] },
615
+ { "type": "error", "name": "BellowMinValidators", "inputs": [] },
616
+ { "type": "error", "name": "BlsKeyAlreadyRegistered", "inputs": [] },
617
+ { "type": "error", "name": "BlsKeyIsInvalid", "inputs": [] },
618
+ { "type": "error", "name": "CallerIsNotValidator", "inputs": [] },
619
+ {
620
+ "type": "error",
621
+ "name": "ERC1967InvalidImplementation",
622
+ "inputs": [
623
+ {
624
+ "name": "implementation",
625
+ "type": "address",
626
+ "internalType": "address"
627
+ }
628
+ ]
629
+ },
630
+ { "type": "error", "name": "ERC1967NonPayable", "inputs": [] },
631
+ { "type": "error", "name": "FailedCall", "inputs": [] },
632
+ { "type": "error", "name": "ImportIsNotAllowed", "inputs": [] },
633
+ { "type": "error", "name": "InvalidInitialization", "inputs": [] },
634
+ { "type": "error", "name": "InvalidParameters", "inputs": [] },
635
+ {
636
+ "type": "error",
637
+ "name": "InvalidRange",
638
+ "inputs": [
639
+ { "name": "min", "type": "uint256", "internalType": "uint256" },
640
+ { "name": "max", "type": "uint256", "internalType": "uint256" }
641
+ ]
642
+ },
643
+ { "type": "error", "name": "MissingVote", "inputs": [] },
644
+ { "type": "error", "name": "NoActiveValidators", "inputs": [] },
645
+ { "type": "error", "name": "NotInitializing", "inputs": [] },
646
+ {
647
+ "type": "error",
648
+ "name": "OwnableInvalidOwner",
649
+ "inputs": [
650
+ {
651
+ "name": "owner",
652
+ "type": "address",
653
+ "internalType": "address"
654
+ }
655
+ ]
656
+ },
657
+ {
658
+ "type": "error",
659
+ "name": "OwnableUnauthorizedAccount",
660
+ "inputs": [
661
+ {
662
+ "name": "account",
663
+ "type": "address",
664
+ "internalType": "address"
665
+ }
666
+ ]
667
+ },
668
+ {
669
+ "type": "error",
670
+ "name": "UUPSUnauthorizedCallContext",
671
+ "inputs": []
672
+ },
673
+ {
674
+ "type": "error",
675
+ "name": "UUPSUnsupportedProxiableUUID",
676
+ "inputs": [
677
+ { "name": "slot", "type": "bytes32", "internalType": "bytes32" }
678
+ ]
679
+ },
680
+ { "type": "error", "name": "ValidatorAlreadyRegistered", "inputs": [] },
681
+ { "type": "error", "name": "ValidatorAlreadyResigned", "inputs": [] },
682
+ { "type": "error", "name": "ValidatorNotRegistered", "inputs": [] },
683
+ { "type": "error", "name": "VoteResignedValidator", "inputs": [] },
684
+ { "type": "error", "name": "VoteSameValidator", "inputs": [] },
685
+ {
686
+ "type": "error",
687
+ "name": "VoteValidatorWithoutBlsPublicKey",
688
+ "inputs": []
689
+ }
690
+ ],
691
+ "bytecode": {
692
+ "object": "0x60a0604052306080523480156012575f5ffd5b5060805161387e6100395f395f81816122680152818161229101526123d0015261387e5ff3fe6080604052600436106101af575f3560e01c8063715018a6116100e7578063ad3cb1cc11610087578063eb9019d411610062578063eb9019d4146104a2578063f1bd0b37146104ce578063f2fde38b146104e2578063f3513a3714610501575f5ffd5b8063ad3cb1cc14610422578063b85f5da21461045f578063d04a68c714610473575f5ffd5b8063857861db116100c2578063857861db146103885780638da5cb5b146103a75780639de70258146103ed578063a09686c41461040e575f5ffd5b8063715018a6146103415780637c8a92c3146103555780638129fc1c14610374575f5ffd5b806340f74f471161015257806354fd4d501161012d57806354fd4d50146102d15780635a8eed73146102e4578063602a9eee146103035780636dd7d8ea14610322575f5ffd5b806340f74f471461027e5780634f1ef286146102aa57806352d1902d146102bd575f5ffd5b80631b605b861161018d5780631b605b86146102165780632bdf6d431461022a5780633174b6891461024b5780633d09c2a81461025f575f5ffd5b80630777cbef146101b35780630d2bd909146101d65780631904bb2e146101ea575b5f5ffd5b3480156101be575f5ffd5b506005545b6040519081526020015b60405180910390f35b3480156101e1575f5ffd5b50600d546101c3565b3480156101f5575f5ffd5b50610209610204366004613014565b610515565b6040516101cd91906130d3565b348015610221575f5ffd5b506009546101c3565b348015610235575f5ffd5b506102496102443660046130e5565b610630565b005b348015610256575f5ffd5b5061024961067e565b34801561026a575f5ffd5b50610249610279366004613154565b6106cd565b348015610289575f5ffd5b5061029d610298366004613185565b610918565b6040516101cd91906131a5565b6102496102b8366004613272565b610aab565b3480156102c8575f5ffd5b506101c3610aca565b3480156102dc575f5ffd5b5060016101c3565b3480156102ef575f5ffd5b506102496102fe366004613377565b610ae5565b34801561030e575f5ffd5b5061024961031d366004613377565b610b71565b34801561032d575f5ffd5b5061024961033c366004613014565b610cff565b34801561034c575f5ffd5b50610249610f7d565b348015610360575f5ffd5b5061024961036f3660046133b5565b610f90565b34801561037f575f5ffd5b506102496111cf565b348015610393575f5ffd5b506102496103a236600461341a565b6112db565b3480156103b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101cd565b3480156103f8575f5ffd5b50610401611874565b6040516101cd919061343a565b348015610419575f5ffd5b50600f546101c3565b34801561042d575f5ffd5b50610452604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101cd9190613491565b34801561046a575f5ffd5b50610249611a14565b34801561047e575f5ffd5b5061049261048d366004613014565b611afd565b60405190151581526020016101cd565b3480156104ad575f5ffd5b506104c16104bc3660046134a3565b611b1a565b6040516101cd91906134cb565b3480156104d9575f5ffd5b506004546101c3565b3480156104ed575f5ffd5b506102496104fc366004613014565b611d1b565b34801561050c575f5ffd5b50610401611d5d565b61051d612f1e565b61052682611afd565b6105435760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549394928501936060840191906105a790613525565b80601f01602080910402602001604051908101604052809291908181526020018280546105d390613525565b801561061e5780601f106105f55761010080835404028352916020019161061e565b820191905f5260205f20905b81548152906001019060200180831161060157829003601f168201915b50505091909252505050905292915050565b610638611ef7565b5f5b818110156106795761067183838381811061065757610657613557565b905060200201602081019061066c9190613014565b611f52565b60010161063a565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef336106a8612032565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b6106d5611ef7565b600f54156106f6576040516349625b3b60e01b815260040160405180910390fd5b6106ff81611afd565b61071c5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260066020526040902080549091161561075757604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556007541661081457600780546001600160a01b0385166001600160a01b0319918216811790925560088054909116909117905561086c565b600880546001600160a01b039081165f9081526006602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f61087b8361357f565b90915550506001600160a01b038083165f90815260208190526040812060018101805491938716319290916108b1908490613597565b9091555050805460019082905f906108ca908490613597565b9091555050604080516001600160a01b038087168252851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e2910160405180910390a150505050565b6060610922611ef7565b600f548290841061093457505f610958565b600f546109418486613597565b111561095857600f546109559085906135aa565b90505b5f816001600160401b038111156109715761097161325e565b6040519080825280602002602001820160405280156109b657816020015b604080518082019091525f81526060602082015281526020019060019003908161098f5790505b5090505f5b82811015610aa057604051806040016040528082886109da9190613597565b6109e5906001613597565b8152602001600f6109f6848a613597565b81548110610a0657610a06613557565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610a74575f848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101610a2d565b50505050815250828281518110610a8d57610a8d613557565b60209081029190910101526001016109bb565b509150505b92915050565b610ab361225d565b610abc82612301565b610ac68282612309565b5050565b5f610ad36123c5565b505f5160206138295f395f51905f5290565b610aee33611afd565b610b0b5760405163510b8aad60e11b815260040160405180910390fd5b610b15828261240e565b335f908152602081905260409020600301610b31828483613601565b507f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b65939291906136ba565b60405180910390a15050565b335f9081526001602052604090205460ff1615610ba15760405163132e7efb60e31b815260040160405180910390fd5b610bab828261240e565b5f60405180608001604052805f81526020015f81526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050600480549394509150610c148361357f565b9091555050335f908152600160208181526040808420805460ff19908116851790915584835293819020855181559185015192820192909255908301516002820180549093169015151790915560608201518291906003820190610c7890826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916339081179091556040517f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c9250610cf29190869086906136ba565b60405180910390a1505050565b610d0881611afd565b610d255760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f908152602081905260409020600281015460ff1615610d625760405163510ae2bd60e11b815260040160405180910390fd5b806003018054610d7190613525565b90505f03610d925760405163970c784d60e01b815260040160405180910390fd5b335f90815260066020526040902080546001600160a01b03848116911603610dcd57604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610de757610de5612032565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560075416610e995760078054336001600160a01b03199182168117909255600880549091169091179055610ef0565b600880546001600160a01b039081165f9081526006602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f610eff8361357f565b9190505550336001600160a01b031631826001015f828254610f219190613597565b9091555050815460019083905f90610f3a908490613597565b9091555050604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610cf2565b610f85611ef7565b610f8e5f612482565b565b610f98611ef7565b600f5415610fb9576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff1615610ff25760405163132e7efb60e31b815260040160405180910390fd5b60025f84846040516110059291906137b3565b604080519182900390912082526020820192909252015f205460ff161561103f57604051637e4c066f60e01b815260040160405180910390fd5b811561104f5761104f838361240e565b5f60405180608001604052805f81526020015f8152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506004805493945091506110b88361357f565b90915550506001600160a01b0385165f908152600160208181526040808420805460ff1990811685179091558483529381902085518155918501519282019290925590830151600282018054909316901515179091556060820151829190600382019061112590826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561118d5760058054905f6111878361357f565b91905055505b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c8585856040516111c0939291906136ba565b60405180910390a15050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112135750825b90505f826001600160401b0316600114801561122e5750303b155b90508115801561123c575080155b1561125a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561128457845460ff60401b1916600160401b1785555b61128d336124f2565b6001600e5583156112d457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111c0565b5050505050565b6112e3611ef7565b8060ff165f0361130657604051630e52390960e41b815260040160405180910390fd5b60ff8116600e556113176003612503565b61131f612653565b600c80546001600160a01b03191690556005546004545f916113519160ff851691849161134c91906135aa565b6126a4565b90508060ff165f03611376576040516367c0fced60e01b815260040160405180910390fd5b5f5b600354811015611638575f6003828154811061139657611396613557565b5f9182526020808320909101546001600160a01b031680835290829052604090912060028101549192509060ff16806113dd57508060030180546113d990613525565b1590505b156113e9575050611630565b600c546001600160a01b03166114245750600c80546001600160a01b0319166001600160a01b03929092169190911790556001600d55611630565b8360ff16600d5410156114425761143b82856126f8565b5050611630565b600c546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160808101845285548152600186015481840152600286015460ff16151593810193909352600385018054919461161d949093840192909187916060840191906114b590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546114e190613525565b801561152c5780601f106115035761010080835404028352916020019161152c565b820191905f5260205f20905b81548152906001019060200180831161150f57829003601f168201915b505050919092525050509052604080518082018252600c546001600160a01b031681528151608081018352855481526001860154602082810191909152600287015460ff1615159382019390935260038601805492938401928791606084019161159590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546115c190613525565b801561160c5780601f106115e35761010080835404028352916020019161160c565b820191905f5260205f20905b8154815290600101906020018083116115ef57829003601f168201915b505050505081525050815250612ad4565b1561162c5761162c83866126f8565b5050505b600101611378565b50600d545f0361165b576040516367c0fced60e01b815260040160405180910390fd5b600c54600d546001600160a01b03909116905f906001600160401b038111156116865761168661325e565b6040519080825280602002602001820160405280156116af578160200160208202803683370190505b5090505f5b600d5481101561170957828282815181106116d1576116d1613557565b6001600160a01b039283166020918202929092018101919091529381165f908152600a909452604090932054909216916001016116b4565b5061171381612b18565b600f80546001810182555f9182527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802019061175090600b90612f67565b600e546001600160401b0381111561176a5761176a61325e565b604051908082528060200260200182016040528015611793578160200160208202803683370190505b5080516117a891600b91602090910190612f82565b505f5b600e5481101561186c575f83600d54836117c591906137c2565b815181106117d5576117d5613557565b6020026020010151905080600b83815481106117f3576117f3613557565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832060019081015486840190815288548083018a55898652939094209551600290930290950180549290941691161782555190820155016117ab565b505050505050565b600b546060905f906001600160401b038111156118935761189361325e565b6040519080825280602002602001820160405280156118cc57816020015b6118b9612f1e565b8152602001906001900390816118b15790505b5090505f5b600b54811015611a0e575f600b82815481106118ef576118ef613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff16151595810195909552600382018054939650919490938401929091859160608401919061196490613525565b80601f016020809104026020016040519081016040528092919081815260200182805461199090613525565b80156119db5780601f106119b2576101008083540402835291602001916119db565b820191905f5260205f20905b8154815290600101906020018083116119be57829003601f168201915b5050505050815250508152508484815181106119f9576119f9613557565b602090810291909101015250506001016118d1565b50919050565b611a1d33611afd565b611a3a5760405163668191af60e11b815260040160405180910390fd5b335f908152602081905260409020600281015460ff1615611a6e57604051632d8b5c9760e21b815260040160405180910390fd5b600e54600554600454611a8191906135aa565b11611a9f57604051633b15f1f760e21b815260040160405180910390fd5b60028101805460ff19166001908117909155600580545f90611ac2908490613597565b90915550506040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a541179060200160405180910390a150565b6001600160a01b03165f9081526001602052604090205460ff1690565b6060611b24611ef7565b5f611b32835f6009546126a4565b6001600160401b03811115611b4957611b4961325e565b604051908082528060200260200182016040528015611b8d57816020015b604080518082019091525f8082526020820152815260200190600190039081611b675790505b506007549091506001600160a01b0390811690851615611bc657506001600160a01b038085165f90815260066020526040902060030154165b5f5b6001600160a01b03821615801590611bdf57508481105b15611c54576001600160a01b038083165f818152600660209081526040918290208251808401909352928252825490931692810192909252908483611c238161357f565b945081518110611c3557611c35613557565b6020908102919091010152600301546001600160a01b03169150611bc8565b80835103611c6757829350505050610aa5565b5f816001600160401b03811115611c8057611c8061325e565b604051908082528060200260200182016040528015611cc457816020015b604080518082019091525f8082526020820152815260200190600190039081611c9e5790505b5090505f5b82811015611d1057848181518110611ce357611ce3613557565b6020026020010151828281518110611cfd57611cfd613557565b6020908102919091010152600101611cc9565b509695505050505050565b611d23611ef7565b6001600160a01b038116611d5157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b611d5a81612482565b50565b6003546060905f906001600160401b03811115611d7c57611d7c61325e565b604051908082528060200260200182016040528015611db557816020015b611da2612f1e565b815260200190600190039081611d9a5790505b5090505f5b600354811015611a0e575f60038281548110611dd857611dd8613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff161515958101959095526003820180549396509194909384019290918591606084019190611e4d90613525565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7990613525565b8015611ec45780601f10611e9b57610100808354040283529160200191611ec4565b820191905f5260205f20905b815481529060010190602001808311611ea757829003601f168201915b505050505081525050815250848481518110611ee257611ee2613557565b60209081029190910101525050600101611dba565b33611f297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610f8e5760405163118cdaa760e01b8152336004820152602401611d48565b6001600160a01b038082165f9081526006602052604090208054909116611f77575050565b60018101546001600160a01b03831631811015611fd857611fa2816001600160a01b038516316135aa565b82546001600160a01b03165f9081526020819052604081206001018054909190611fcd908490613597565b9091555061201d9050565b611fec6001600160a01b03841631826135aa565b82546001600160a01b03165f90815260208190526040812060010180549091906120179084906135aa565b90915550505b506001600160a01b0390911631600190910155565b335f90815260066020526040812080546001600160a01b03166120685760405163498ea63d60e01b815260040160405180910390fd5b6008546007546001600160a01b039182169116036120a157600780546001600160a01b03199081169091556008805490911690556121b4565b600854336001600160a01b03909116036120fa576002810180546001600160a01b039081165f90815260066020526040902060030180546001600160a01b031990811690915591546008805490931691161790556121b4565b600754336001600160a01b039091160361215e576008546001600160a01b039081165f9081526006602052604080822060020180546001600160a01b03199081169091556007805480861685529290932060030154911692169190911790556121b4565b60038181018054600280850180546001600160a01b039081165f9081526006602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f8181526020819052604081206001808501549082018054929391929091906121e99084906135aa565b9091555050805460019082905f906122029084906135aa565b9091555050335f90815260066020526040812080546001600160a01b0319908116825560018201839055600282018054821690556003909101805490911690556009805491612250836137e1565b9091555091949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122d75f5160206138295f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610f8e5760405163703e46dd60e11b815260040160405180910390fd5b611d5a611ef7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612363575060408051601f3d908101601f19168201909252612360918101906137f6565b60015b61238b57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611d48565b5f5160206138295f395f51905f5281146123bb57604051632a87526960e21b815260048101829052602401611d48565b6106798383612c2f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8e5760405163703e46dd60e11b815260040160405180910390fd5b5f828260405161241f9291906137b3565b60408051918290039091205f8181526002602052919091205490915060ff161561245c57604051637e4c066f60e01b815260040160405180910390fd5b6124668383612c84565b5f908152600260205260409020805460ff191660011790555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6124fa612ca5565b611d5a81612cee565b80545f819003612511575050565b5f61251d6001836135aa565b90505b8015610679575f612532826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c61256791906137c2565b90505f84838154811061257c5761257c613557565b5f9182526020909120015485546001600160a01b0390911691508590839081106125a8576125a8613557565b905f5260205f20015f9054906101000a90046001600160a01b03168584815481106125d5576125d5613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508085838154811061261357612613613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505050808061264b906137e1565b915050612520565b600c546001600160a01b03165b6001600160a01b0381161561269d576001600160a01b039081165f908152600a6020526040902080546001600160a01b0319811690915516612660565b505f600d55565b5f818311156126d057604051632457cde760e01b81526004810184905260248101839052604401611d48565b828410156126df5750816126f1565b818411156126ee5750806126f1565b50825b9392505050565b6001600160a01b0382165f90815260208181526040808320815160808101835281548152600182015493810193909352600281015460ff1615159183019190915260038101805460608401919061274e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461277a90613525565b80156127c55780601f1061279c576101008083540402835291602001916127c5565b820191905f5260205f20905b8154815290600101906020018083116127a857829003601f168201915b505050919092525050604080518082018252600c546001600160a01b03168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549697506128e49693955091850193929091606084019161283e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461286a90613525565b80156128b55780601f1061288c576101008083540402835291602001916128b5565b820191905f5260205f20905b81548152906001019060200180831161289857829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612ad4565b156128f7576128f283612cf6565b612a75565b600c546001600160a01b039081165f818152600a6020526040902054909116905b6001600160a01b038216612935576129308186612d47565b612a72565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff16151594810194909452600381018054612a4295938501939291606084019161299c90613525565b80601f01602080910402602001604051908101604052809291908181526020018280546129c890613525565b8015612a135780601f106129ea57610100808354040283529160200191612a13565b820191905f5260205f20905b8154815290600101906020018083116129f657829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612ad4565b15612a51576129308186612d47565b506001600160a01b038082165f908152600a60205260409020541690612918565b50505b8160ff16600d54111561067957600c80546001600160a01b039081165f908152600a6020526040812080546001600160a01b03198082169092558454931692168217909255600d80549192612ac9836137e1565b919050555050505050565b5f81602001516020015183602001516020015103612b045750805182516001600160a01b03918216911611610aa5565b506020908101518101519181015101511190565b80515f819003612b26575050565b5f612b326001836135aa565b90505b8015610679575f612b47826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c612b7c91906137c2565b90505f848381518110612b9157612b91613557565b60200260200101519050848281518110612bad57612bad613557565b6020026020010151858481518110612bc757612bc7613557565b60200260200101906001600160a01b031690816001600160a01b03168152505080858381518110612bfa57612bfa613557565b60200260200101906001600160a01b031690816001600160a01b03168152505050508080612c27906137e1565b915050612b35565b612c3882612da5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612c7c576106798282612e08565b610ac6612e7a565b60308114610ac6576040516305db9dbd60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610f8e57604051631afcd79f60e31b815260040160405180910390fd5b611d23612ca5565b600c80546001600160a01b038381165f818152600a602052604081208054939094166001600160a01b031993841617909355835490911617909155600d805491612d3f8361357f565b919050555050565b6001600160a01b038281165f818152600a602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600d805491612d9c8361357f565b91905055505050565b806001600160a01b03163b5f03612dda57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611d48565b5f5160206138295f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612e24919061380d565b5f60405180830381855af49150503d805f8114612e5c576040519150601f19603f3d011682016040523d82523d5f602084013e612e61565b606091505b5091509150612e71858383612e99565b95945050505050565b3415610f8e5760405163b398979f60e01b815260040160405180910390fd5b606082612eae57612ea982612ef5565b6126f1565b8151158015612ec557506001600160a01b0384163b155b15612eee57604051639996b31560e01b81526001600160a01b0385166004820152602401611d48565b50806126f1565b805115612f055780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b03168152602001612f6260405180608001604052805f81526020015f81526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611d5a9190612fe5565b828054828255905f5260205f20908101928215612fd5579160200282015b82811115612fd557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612fa0565b50612fe1929150612fe5565b5090565b5b80821115612fe1575f8155600101612fe6565b80356001600160a01b038116811461300f575f5ffd5b919050565b5f60208284031215613024575f5ffd5b6126f182612ff9565b5f5b8381101561304757818101518382015260200161302f565b50505f910152565b5f815180845261306681602086016020860161302d565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526020810151606085015260408101511515608085015260608101519050608060a08501526130cb60c085018261304f565b949350505050565b602081525f6126f1602083018461307a565b5f5f602083850312156130f6575f5ffd5b82356001600160401b0381111561310b575f5ffd5b8301601f8101851361311b575f5ffd5b80356001600160401b03811115613130575f5ffd5b8560208260051b8401011115613144575f5ffd5b6020919091019590945092505050565b5f5f60408385031215613165575f5ffd5b61316e83612ff9565b915061317c60208401612ff9565b90509250929050565b5f5f60408385031215613196575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b8083101561323a57835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613203565b509650505060209384019391909101906001016131cb565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215613283575f5ffd5b61328c83612ff9565b915060208301356001600160401b038111156132a6575f5ffd5b8301601f810185136132b6575f5ffd5b80356001600160401b038111156132cf576132cf61325e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156132fd576132fd61325e565b604052818152828201602001871015613314575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613343575f5ffd5b5081356001600160401b03811115613359575f5ffd5b602083019150836020828501011115613370575f5ffd5b9250929050565b5f5f60208385031215613388575f5ffd5b82356001600160401b0381111561339d575f5ffd5b6133a985828601613333565b90969095509350505050565b5f5f5f5f606085870312156133c8575f5ffd5b6133d185612ff9565b935060208501356001600160401b038111156133eb575f5ffd5b6133f787828801613333565b9094509250506040850135801515811461340f575f5ffd5b939692955090935050565b5f6020828403121561342a575f5ffd5b813560ff811681146126f1575f5ffd5b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257603f1987860301845261347c85835161307a565b94506020938401939190910190600101613460565b602081525f6126f1602083018461304f565b5f5f604083850312156134b4575f5ffd5b6134bd83612ff9565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b8181101561351a57835180516001600160a01b0390811685526020918201511681850152909301926040909201916001016134e4565b509095945050505050565b600181811c9082168061353957607f821691505b602082108103611a0e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016135905761359061356b565b5060010190565b80820180821115610aa557610aa561356b565b81810381811115610aa557610aa561356b565b601f82111561067957805f5260205f20601f840160051c810160208510156135e25750805b601f840160051c820191505b818110156112d4575f81556001016135ee565b6001600160401b038311156136185761361861325e565b61362c836136268354613525565b836135bd565b5f601f84116001811461365d575f85156136465750838201355b5f19600387901b1c1916600186901b1783556112d4565b5f83815260208120601f198716915b8281101561368c578685013582556020948501946001909201910161366c565b50868210156136a8575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b038111156137125761371261325e565b613726816137208454613525565b846135bd565b6020601f821160018114613758575f83156137415750848201515b5f19600385901b1c1916600184901b1784556112d4565b5f84815260208120601f198516915b828110156137875787850151825560209485019460019092019101613767565b50848210156137a457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b818382375f9101908152919050565b5f826137dc57634e487b7160e01b5f52601260045260245ffd5b500690565b5f816137ef576137ef61356b565b505f190190565b5f60208284031215613806575f5ffd5b5051919050565b5f825161381e81846020870161302d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220983e2d933e18f12cab95985824dc16db07106a30fc15cd31c83493c6e0e0f72b64736f6c634300081b0033",
693
+ "sourceMap": "1266:19289:37:-:0;;;1171:4:25;1128:48;;1266:19289:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
694
+ "linkReferences": {}
695
+ },
696
+ "deployedBytecode": {
697
+ "object": "0x6080604052600436106101af575f3560e01c8063715018a6116100e7578063ad3cb1cc11610087578063eb9019d411610062578063eb9019d4146104a2578063f1bd0b37146104ce578063f2fde38b146104e2578063f3513a3714610501575f5ffd5b8063ad3cb1cc14610422578063b85f5da21461045f578063d04a68c714610473575f5ffd5b8063857861db116100c2578063857861db146103885780638da5cb5b146103a75780639de70258146103ed578063a09686c41461040e575f5ffd5b8063715018a6146103415780637c8a92c3146103555780638129fc1c14610374575f5ffd5b806340f74f471161015257806354fd4d501161012d57806354fd4d50146102d15780635a8eed73146102e4578063602a9eee146103035780636dd7d8ea14610322575f5ffd5b806340f74f471461027e5780634f1ef286146102aa57806352d1902d146102bd575f5ffd5b80631b605b861161018d5780631b605b86146102165780632bdf6d431461022a5780633174b6891461024b5780633d09c2a81461025f575f5ffd5b80630777cbef146101b35780630d2bd909146101d65780631904bb2e146101ea575b5f5ffd5b3480156101be575f5ffd5b506005545b6040519081526020015b60405180910390f35b3480156101e1575f5ffd5b50600d546101c3565b3480156101f5575f5ffd5b50610209610204366004613014565b610515565b6040516101cd91906130d3565b348015610221575f5ffd5b506009546101c3565b348015610235575f5ffd5b506102496102443660046130e5565b610630565b005b348015610256575f5ffd5b5061024961067e565b34801561026a575f5ffd5b50610249610279366004613154565b6106cd565b348015610289575f5ffd5b5061029d610298366004613185565b610918565b6040516101cd91906131a5565b6102496102b8366004613272565b610aab565b3480156102c8575f5ffd5b506101c3610aca565b3480156102dc575f5ffd5b5060016101c3565b3480156102ef575f5ffd5b506102496102fe366004613377565b610ae5565b34801561030e575f5ffd5b5061024961031d366004613377565b610b71565b34801561032d575f5ffd5b5061024961033c366004613014565b610cff565b34801561034c575f5ffd5b50610249610f7d565b348015610360575f5ffd5b5061024961036f3660046133b5565b610f90565b34801561037f575f5ffd5b506102496111cf565b348015610393575f5ffd5b506102496103a236600461341a565b6112db565b3480156103b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101cd565b3480156103f8575f5ffd5b50610401611874565b6040516101cd919061343a565b348015610419575f5ffd5b50600f546101c3565b34801561042d575f5ffd5b50610452604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101cd9190613491565b34801561046a575f5ffd5b50610249611a14565b34801561047e575f5ffd5b5061049261048d366004613014565b611afd565b60405190151581526020016101cd565b3480156104ad575f5ffd5b506104c16104bc3660046134a3565b611b1a565b6040516101cd91906134cb565b3480156104d9575f5ffd5b506004546101c3565b3480156104ed575f5ffd5b506102496104fc366004613014565b611d1b565b34801561050c575f5ffd5b50610401611d5d565b61051d612f1e565b61052682611afd565b6105435760405163510b8aad60e11b815260040160405180910390fd5b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549394928501936060840191906105a790613525565b80601f01602080910402602001604051908101604052809291908181526020018280546105d390613525565b801561061e5780601f106105f55761010080835404028352916020019161061e565b820191905f5260205f20905b81548152906001019060200180831161060157829003601f168201915b50505091909252505050905292915050565b610638611ef7565b5f5b818110156106795761067183838381811061065757610657613557565b905060200201602081019061066c9190613014565b611f52565b60010161063a565b505050565b7f6572af8bf9a0a86efb88dcc30011626a15c9c4603503aa4466a3f87a1867deef336106a8612032565b604080516001600160a01b0393841681529290911660208301520160405180910390a1565b6106d5611ef7565b600f54156106f6576040516349625b3b60e01b815260040160405180910390fd5b6106ff81611afd565b61071c5760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b038083165f90815260066020526040902080549091161561075757604051637c9a1cf960e01b815260040160405180910390fd5b604080516080810182526001600160a01b038085168252858116803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b0319918216178555905160018501559351600284018054918416918616919091179055516003909201805492821692909316919091179091556007541661081457600780546001600160a01b0385166001600160a01b0319918216811790925560088054909116909117905561086c565b600880546001600160a01b039081165f9081526006602052604080822060030180548489166001600160a01b031991821681179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f61087b8361357f565b90915550506001600160a01b038083165f90815260208190526040812060018101805491938716319290916108b1908490613597565b9091555050805460019082905f906108ca908490613597565b9091555050604080516001600160a01b038087168252851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e2910160405180910390a150505050565b6060610922611ef7565b600f548290841061093457505f610958565b600f546109418486613597565b111561095857600f546109559085906135aa565b90505b5f816001600160401b038111156109715761097161325e565b6040519080825280602002602001820160405280156109b657816020015b604080518082019091525f81526060602082015281526020019060019003908161098f5790505b5090505f5b82811015610aa057604051806040016040528082886109da9190613597565b6109e5906001613597565b8152602001600f6109f6848a613597565b81548110610a0657610a06613557565b905f5260205f2001805480602002602001604051908101604052809291908181526020015f905b82821015610a74575f848152602090819020604080518082019091526002850290910180546001600160a01b03168252600190810154828401529083529092019101610a2d565b50505050815250828281518110610a8d57610a8d613557565b60209081029190910101526001016109bb565b509150505b92915050565b610ab361225d565b610abc82612301565b610ac68282612309565b5050565b5f610ad36123c5565b505f5160206138295f395f51905f5290565b610aee33611afd565b610b0b5760405163510b8aad60e11b815260040160405180910390fd5b610b15828261240e565b335f908152602081905260409020600301610b31828483613601565b507f4af0b5984c9f88659d661fb64dcb63a5b946809cf1c78a8c6e0f6ef93c917032338383604051610b65939291906136ba565b60405180910390a15050565b335f9081526001602052604090205460ff1615610ba15760405163132e7efb60e31b815260040160405180910390fd5b610bab828261240e565b5f60405180608001604052805f81526020015f81526020015f1515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250939094525050600480549394509150610c148361357f565b9091555050335f908152600160208181526040808420805460ff19908116851790915584835293819020855181559185015192820192909255908301516002820180549093169015151790915560608201518291906003820190610c7890826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916339081179091556040517f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c9250610cf29190869086906136ba565b60405180910390a1505050565b610d0881611afd565b610d255760405163510b8aad60e11b815260040160405180910390fd5b6001600160a01b0381165f908152602081905260409020600281015460ff1615610d625760405163510ae2bd60e11b815260040160405180910390fd5b806003018054610d7190613525565b90505f03610d925760405163970c784d60e01b815260040160405180910390fd5b335f90815260066020526040902080546001600160a01b03848116911603610dcd57604051630d41c52760e01b815260040160405180910390fd5b80546001600160a01b031615610de757610de5612032565b505b604080516080810182526001600160a01b03808616825233803160208085019182525f85870181815260608701828152948252600690925295909520935184549084166001600160a01b03199182161785559051600185015593516002840180549184169186169190911790555160039092018054928216929093169190911790915560075416610e995760078054336001600160a01b03199182168117909255600880549091169091179055610ef0565b600880546001600160a01b039081165f9081526006602052604080822060030180546001600160a01b0319908116339081179092558554828552929093206002018054841692909416919091179092558254161790555b60098054905f610eff8361357f565b9190505550336001600160a01b031631826001015f828254610f219190613597565b9091555050815460019083905f90610f3a908490613597565b9091555050604080513381526001600160a01b03851660208201527fce0c7a2a940807f7dc2ce7a615c2532e915e6c0ac9a08bc4ed9d515a710a53e29101610cf2565b610f85611ef7565b610f8e5f612482565b565b610f98611ef7565b600f5415610fb9576040516349625b3b60e01b815260040160405180910390fd5b6001600160a01b0384165f9081526001602052604090205460ff1615610ff25760405163132e7efb60e31b815260040160405180910390fd5b60025f84846040516110059291906137b3565b604080519182900390912082526020820192909252015f205460ff161561103f57604051637e4c066f60e01b815260040160405180910390fd5b811561104f5761104f838361240e565b5f60405180608001604052805f81526020015f8152602001831515815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506004805493945091506110b88361357f565b90915550506001600160a01b0385165f908152600160208181526040808420805460ff1990811685179091558483529381902085518155918501519282019290925590830151600282018054909316901515179091556060820151829190600382019061112590826136f9565b5050600380546001810182555f919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b03881617905550811561118d5760058054905f6111878361357f565b91905055505b7f61809fa303a3a57f4d70552f533f3e0b003173d424590cd4bb22a2afe000990c8585856040516111c0939291906136ba565b60405180910390a15050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112135750825b90505f826001600160401b0316600114801561122e5750303b155b90508115801561123c575080155b1561125a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561128457845460ff60401b1916600160401b1785555b61128d336124f2565b6001600e5583156112d457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111c0565b5050505050565b6112e3611ef7565b8060ff165f0361130657604051630e52390960e41b815260040160405180910390fd5b60ff8116600e556113176003612503565b61131f612653565b600c80546001600160a01b03191690556005546004545f916113519160ff851691849161134c91906135aa565b6126a4565b90508060ff165f03611376576040516367c0fced60e01b815260040160405180910390fd5b5f5b600354811015611638575f6003828154811061139657611396613557565b5f9182526020808320909101546001600160a01b031680835290829052604090912060028101549192509060ff16806113dd57508060030180546113d990613525565b1590505b156113e9575050611630565b600c546001600160a01b03166114245750600c80546001600160a01b0319166001600160a01b03929092169190911790556001600d55611630565b8360ff16600d5410156114425761143b82856126f8565b5050611630565b600c546001600160a01b039081165f9081526020818152604091829020825180840184529386168452825160808101845285548152600186015481840152600286015460ff16151593810193909352600385018054919461161d949093840192909187916060840191906114b590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546114e190613525565b801561152c5780601f106115035761010080835404028352916020019161152c565b820191905f5260205f20905b81548152906001019060200180831161150f57829003601f168201915b505050919092525050509052604080518082018252600c546001600160a01b031681528151608081018352855481526001860154602082810191909152600287015460ff1615159382019390935260038601805492938401928791606084019161159590613525565b80601f01602080910402602001604051908101604052809291908181526020018280546115c190613525565b801561160c5780601f106115e35761010080835404028352916020019161160c565b820191905f5260205f20905b8154815290600101906020018083116115ef57829003601f168201915b505050505081525050815250612ad4565b1561162c5761162c83866126f8565b5050505b600101611378565b50600d545f0361165b576040516367c0fced60e01b815260040160405180910390fd5b600c54600d546001600160a01b03909116905f906001600160401b038111156116865761168661325e565b6040519080825280602002602001820160405280156116af578160200160208202803683370190505b5090505f5b600d5481101561170957828282815181106116d1576116d1613557565b6001600160a01b039283166020918202929092018101919091529381165f908152600a909452604090932054909216916001016116b4565b5061171381612b18565b600f80546001810182555f9182527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802019061175090600b90612f67565b600e546001600160401b0381111561176a5761176a61325e565b604051908082528060200260200182016040528015611793578160200160208202803683370190505b5080516117a891600b91602090910190612f82565b505f5b600e5481101561186c575f83600d54836117c591906137c2565b815181106117d5576117d5613557565b6020026020010151905080600b83815481106117f3576117f3613557565b5f918252602080832090910180546001600160a01b039485166001600160a01b0319918216179091556040805180820182529585168087528452838352832060019081015486840190815288548083018a55898652939094209551600290930290950180549290941691161782555190820155016117ab565b505050505050565b600b546060905f906001600160401b038111156118935761189361325e565b6040519080825280602002602001820160405280156118cc57816020015b6118b9612f1e565b8152602001906001900390816118b15790505b5090505f5b600b54811015611a0e575f600b82815481106118ef576118ef613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff16151595810195909552600382018054939650919490938401929091859160608401919061196490613525565b80601f016020809104026020016040519081016040528092919081815260200182805461199090613525565b80156119db5780601f106119b2576101008083540402835291602001916119db565b820191905f5260205f20905b8154815290600101906020018083116119be57829003601f168201915b5050505050815250508152508484815181106119f9576119f9613557565b602090810291909101015250506001016118d1565b50919050565b611a1d33611afd565b611a3a5760405163668191af60e11b815260040160405180910390fd5b335f908152602081905260409020600281015460ff1615611a6e57604051632d8b5c9760e21b815260040160405180910390fd5b600e54600554600454611a8191906135aa565b11611a9f57604051633b15f1f760e21b815260040160405180910390fd5b60028101805460ff19166001908117909155600580545f90611ac2908490613597565b90915550506040513381527f24250fc1ec78a1405ddd4cc8b75964858af228d05faa8d4bc1302966d8a541179060200160405180910390a150565b6001600160a01b03165f9081526001602052604090205460ff1690565b6060611b24611ef7565b5f611b32835f6009546126a4565b6001600160401b03811115611b4957611b4961325e565b604051908082528060200260200182016040528015611b8d57816020015b604080518082019091525f8082526020820152815260200190600190039081611b675790505b506007549091506001600160a01b0390811690851615611bc657506001600160a01b038085165f90815260066020526040902060030154165b5f5b6001600160a01b03821615801590611bdf57508481105b15611c54576001600160a01b038083165f818152600660209081526040918290208251808401909352928252825490931692810192909252908483611c238161357f565b945081518110611c3557611c35613557565b6020908102919091010152600301546001600160a01b03169150611bc8565b80835103611c6757829350505050610aa5565b5f816001600160401b03811115611c8057611c8061325e565b604051908082528060200260200182016040528015611cc457816020015b604080518082019091525f8082526020820152815260200190600190039081611c9e5790505b5090505f5b82811015611d1057848181518110611ce357611ce3613557565b6020026020010151828281518110611cfd57611cfd613557565b6020908102919091010152600101611cc9565b509695505050505050565b611d23611ef7565b6001600160a01b038116611d5157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b611d5a81612482565b50565b6003546060905f906001600160401b03811115611d7c57611d7c61325e565b604051908082528060200260200182016040528015611db557816020015b611da2612f1e565b815260200190600190039081611d9a5790505b5090505f5b600354811015611a0e575f60038281548110611dd857611dd8613557565b5f9182526020808320909101546001600160a01b031680835282825260409283902083518085018552828152845160808101865282548152600183015481860152600283015460ff161515958101959095526003820180549396509194909384019290918591606084019190611e4d90613525565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7990613525565b8015611ec45780601f10611e9b57610100808354040283529160200191611ec4565b820191905f5260205f20905b815481529060010190602001808311611ea757829003601f168201915b505050505081525050815250848481518110611ee257611ee2613557565b60209081029190910101525050600101611dba565b33611f297f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610f8e5760405163118cdaa760e01b8152336004820152602401611d48565b6001600160a01b038082165f9081526006602052604090208054909116611f77575050565b60018101546001600160a01b03831631811015611fd857611fa2816001600160a01b038516316135aa565b82546001600160a01b03165f9081526020819052604081206001018054909190611fcd908490613597565b9091555061201d9050565b611fec6001600160a01b03841631826135aa565b82546001600160a01b03165f90815260208190526040812060010180549091906120179084906135aa565b90915550505b506001600160a01b0390911631600190910155565b335f90815260066020526040812080546001600160a01b03166120685760405163498ea63d60e01b815260040160405180910390fd5b6008546007546001600160a01b039182169116036120a157600780546001600160a01b03199081169091556008805490911690556121b4565b600854336001600160a01b03909116036120fa576002810180546001600160a01b039081165f90815260066020526040902060030180546001600160a01b031990811690915591546008805490931691161790556121b4565b600754336001600160a01b039091160361215e576008546001600160a01b039081165f9081526006602052604080822060020180546001600160a01b03199081169091556007805480861685529290932060030154911692169190911790556121b4565b60038181018054600280850180546001600160a01b039081165f9081526006602052604080822090970180549583166001600160a01b031996871617905591549454811682529490200180549290931691161790555b80546001600160a01b03165f8181526020819052604081206001808501549082018054929391929091906121e99084906135aa565b9091555050805460019082905f906122029084906135aa565b9091555050335f90815260066020526040812080546001600160a01b0319908116825560018201839055600282018054821690556003909101805490911690556009805491612250836137e1565b9091555091949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122d75f5160206138295f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610f8e5760405163703e46dd60e11b815260040160405180910390fd5b611d5a611ef7565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612363575060408051601f3d908101601f19168201909252612360918101906137f6565b60015b61238b57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611d48565b5f5160206138295f395f51905f5281146123bb57604051632a87526960e21b815260048101829052602401611d48565b6106798383612c2f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8e5760405163703e46dd60e11b815260040160405180910390fd5b5f828260405161241f9291906137b3565b60408051918290039091205f8181526002602052919091205490915060ff161561245c57604051637e4c066f60e01b815260040160405180910390fd5b6124668383612c84565b5f908152600260205260409020805460ff191660011790555050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6124fa612ca5565b611d5a81612cee565b80545f819003612511575050565b5f61251d6001836135aa565b90505b8015610679575f612532826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c61256791906137c2565b90505f84838154811061257c5761257c613557565b5f9182526020909120015485546001600160a01b0390911691508590839081106125a8576125a8613557565b905f5260205f20015f9054906101000a90046001600160a01b03168584815481106125d5576125d5613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508085838154811061261357612613613557565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505050808061264b906137e1565b915050612520565b600c546001600160a01b03165b6001600160a01b0381161561269d576001600160a01b039081165f908152600a6020526040902080546001600160a01b0319811690915516612660565b505f600d55565b5f818311156126d057604051632457cde760e01b81526004810184905260248101839052604401611d48565b828410156126df5750816126f1565b818411156126ee5750806126f1565b50825b9392505050565b6001600160a01b0382165f90815260208181526040808320815160808101835281548152600182015493810193909352600281015460ff1615159183019190915260038101805460608401919061274e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461277a90613525565b80156127c55780601f1061279c576101008083540402835291602001916127c5565b820191905f5260205f20905b8154815290600101906020018083116127a857829003601f168201915b505050919092525050604080518082018252600c546001600160a01b03168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff161515948101949094526003810180549697506128e49693955091850193929091606084019161283e90613525565b80601f016020809104026020016040519081016040528092919081815260200182805461286a90613525565b80156128b55780601f1061288c576101008083540402835291602001916128b5565b820191905f5260205f20905b81548152906001019060200180831161289857829003601f168201915b5050505050815250508152506040518060400160405280866001600160a01b0316815260200184815250612ad4565b156128f7576128f283612cf6565b612a75565b600c546001600160a01b039081165f818152600a6020526040902054909116905b6001600160a01b038216612935576129308186612d47565b612a72565b6040805180820182526001600160a01b0384168082525f908152602081815290839020835160808101855281548152600182015481840152600282015460ff16151594810194909452600381018054612a4295938501939291606084019161299c90613525565b80601f01602080910402602001604051908101604052809291908181526020018280546129c890613525565b8015612a135780601f106129ea57610100808354040283529160200191612a13565b820191905f5260205f20905b8154815290600101906020018083116129f657829003601f168201915b5050505050815250508152506040518060400160405280886001600160a01b0316815260200186815250612ad4565b15612a51576129308186612d47565b506001600160a01b038082165f908152600a60205260409020541690612918565b50505b8160ff16600d54111561067957600c80546001600160a01b039081165f908152600a6020526040812080546001600160a01b03198082169092558454931692168217909255600d80549192612ac9836137e1565b919050555050505050565b5f81602001516020015183602001516020015103612b045750805182516001600160a01b03918216911611610aa5565b506020908101518101519181015101511190565b80515f819003612b26575050565b5f612b326001836135aa565b90505b8015610679575f612b47826001613597565b60408051426020820152908101849052606001604051602081830303815290604052805190602001205f1c612b7c91906137c2565b90505f848381518110612b9157612b91613557565b60200260200101519050848281518110612bad57612bad613557565b6020026020010151858481518110612bc757612bc7613557565b60200260200101906001600160a01b031690816001600160a01b03168152505080858381518110612bfa57612bfa613557565b60200260200101906001600160a01b031690816001600160a01b03168152505050508080612c27906137e1565b915050612b35565b612c3882612da5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612c7c576106798282612e08565b610ac6612e7a565b60308114610ac6576040516305db9dbd60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610f8e57604051631afcd79f60e31b815260040160405180910390fd5b611d23612ca5565b600c80546001600160a01b038381165f818152600a602052604081208054939094166001600160a01b031993841617909355835490911617909155600d805491612d3f8361357f565b919050555050565b6001600160a01b038281165f818152600a602052604080822080548686168085529284208054919096166001600160a01b03199182161790955592825282549093169092179055600d805491612d9c8361357f565b91905055505050565b806001600160a01b03163b5f03612dda57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611d48565b5f5160206138295f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612e24919061380d565b5f60405180830381855af49150503d805f8114612e5c576040519150601f19603f3d011682016040523d82523d5f602084013e612e61565b606091505b5091509150612e71858383612e99565b95945050505050565b3415610f8e5760405163b398979f60e01b815260040160405180910390fd5b606082612eae57612ea982612ef5565b6126f1565b8151158015612ec557506001600160a01b0384163b155b15612eee57604051639996b31560e01b81526001600160a01b0385166004820152602401611d48565b50806126f1565b805115612f055780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60405180604001604052805f6001600160a01b03168152602001612f6260405180608001604052805f81526020015f81526020015f15158152602001606081525090565b905290565b5080545f8255905f5260205f2090810190611d5a9190612fe5565b828054828255905f5260205f20908101928215612fd5579160200282015b82811115612fd557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612fa0565b50612fe1929150612fe5565b5090565b5b80821115612fe1575f8155600101612fe6565b80356001600160a01b038116811461300f575f5ffd5b919050565b5f60208284031215613024575f5ffd5b6126f182612ff9565b5f5b8381101561304757818101518382015260200161302f565b50505f910152565b5f815180845261306681602086016020860161302d565b601f01601f19169290920160200192915050565b60018060a01b0381511682525f602082015160406020850152805160408501526020810151606085015260408101511515608085015260608101519050608060a08501526130cb60c085018261304f565b949350505050565b602081525f6126f1602083018461307a565b5f5f602083850312156130f6575f5ffd5b82356001600160401b0381111561310b575f5ffd5b8301601f8101851361311b575f5ffd5b80356001600160401b03811115613130575f5ffd5b8560208260051b8401011115613144575f5ffd5b6020919091019590945092505050565b5f5f60408385031215613165575f5ffd5b61316e83612ff9565b915061317c60208401612ff9565b90509250929050565b5f5f60408385031215613196575f5ffd5b50508035926020909101359150565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257868503603f19018452815180518652602090810151604082880181905281519088018190529101905f9060608801905b8083101561323a57835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190613203565b509650505060209384019391909101906001016131cb565b50929695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215613283575f5ffd5b61328c83612ff9565b915060208301356001600160401b038111156132a6575f5ffd5b8301601f810185136132b6575f5ffd5b80356001600160401b038111156132cf576132cf61325e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156132fd576132fd61325e565b604052818152828201602001871015613314575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112613343575f5ffd5b5081356001600160401b03811115613359575f5ffd5b602083019150836020828501011115613370575f5ffd5b9250929050565b5f5f60208385031215613388575f5ffd5b82356001600160401b0381111561339d575f5ffd5b6133a985828601613333565b90969095509350505050565b5f5f5f5f606085870312156133c8575f5ffd5b6133d185612ff9565b935060208501356001600160401b038111156133eb575f5ffd5b6133f787828801613333565b9094509250506040850135801515811461340f575f5ffd5b939692955090935050565b5f6020828403121561342a575f5ffd5b813560ff811681146126f1575f5ffd5b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561325257603f1987860301845261347c85835161307a565b94506020938401939190910190600101613460565b602081525f6126f1602083018461304f565b5f5f604083850312156134b4575f5ffd5b6134bd83612ff9565b946020939093013593505050565b602080825282518282018190525f918401906040840190835b8181101561351a57835180516001600160a01b0390811685526020918201511681850152909301926040909201916001016134e4565b509095945050505050565b600181811c9082168061353957607f821691505b602082108103611a0e57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016135905761359061356b565b5060010190565b80820180821115610aa557610aa561356b565b81810381811115610aa557610aa561356b565b601f82111561067957805f5260205f20601f840160051c810160208510156135e25750805b601f840160051c820191505b818110156112d4575f81556001016135ee565b6001600160401b038311156136185761361861325e565b61362c836136268354613525565b836135bd565b5f601f84116001811461365d575f85156136465750838201355b5f19600387901b1c1916600186901b1783556112d4565b5f83815260208120601f198716915b8281101561368c578685013582556020948501946001909201910161366c565b50868210156136a8575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b81516001600160401b038111156137125761371261325e565b613726816137208454613525565b846135bd565b6020601f821160018114613758575f83156137415750848201515b5f19600385901b1c1916600184901b1784556112d4565b5f84815260208120601f198516915b828110156137875787850151825560209485019460019092019101613767565b50848210156137a457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b818382375f9101908152919050565b5f826137dc57634e487b7160e01b5f52601260045260245ffd5b500690565b5f816137ef576137ef61356b565b505f190190565b5f60208284031215613806575f5ffd5b5051919050565b5f825161381e81846020870161302d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220983e2d933e18f12cab95985824dc16db07106a30fc15cd31c83493c6e0e0f72b64736f6c634300081b0033",
698
+ "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",
699
+ "linkReferences": {},
700
+ "immutableReferences": {
701
+ "40567": [
702
+ { "start": 8808, "length": 32 },
703
+ { "start": 8849, "length": 32 },
704
+ { "start": 9168, "length": 32 }
705
+ ]
706
+ }
707
+ },
708
+ "methodIdentifiers": {
709
+ "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc",
710
+ "activeValidatorsCount()": "0d2bd909",
711
+ "addValidator(address,bytes,bool)": "7c8a92c3",
712
+ "addVote(address,address)": "3d09c2a8",
713
+ "calculateActiveValidators(uint8)": "857861db",
714
+ "getActiveValidators()": "9de70258",
715
+ "getAllValidators()": "f3513a37",
716
+ "getRounds(uint256,uint256)": "40f74f47",
717
+ "getRoundsCount()": "a09686c4",
718
+ "getValidator(address)": "1904bb2e",
719
+ "getVotes(address,uint256)": "eb9019d4",
720
+ "getVotesCount()": "1b605b86",
721
+ "initialize()": "8129fc1c",
722
+ "isValidatorRegistered(address)": "d04a68c7",
723
+ "owner()": "8da5cb5b",
724
+ "proxiableUUID()": "52d1902d",
725
+ "registerValidator(bytes)": "602a9eee",
726
+ "registeredValidatorsCount()": "f1bd0b37",
727
+ "renounceOwnership()": "715018a6",
728
+ "resignValidator()": "b85f5da2",
729
+ "resignedValidatorsCount()": "0777cbef",
730
+ "transferOwnership(address)": "f2fde38b",
731
+ "unvote()": "3174b689",
732
+ "updateValidator(bytes)": "5a8eed73",
733
+ "updateVoters(address[])": "2bdf6d43",
734
+ "upgradeToAndCall(address,bytes)": "4f1ef286",
735
+ "version()": "54fd4d50",
736
+ "vote(address)": "6dd7d8ea"
737
+ },
738
+ "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}",
739
+ "metadata": {
740
+ "compiler": { "version": "0.8.27+commit.40a35a09" },
741
+ "language": "Solidity",
742
+ "output": {
743
+ "abi": [
744
+ {
745
+ "inputs": [
746
+ {
747
+ "internalType": "address",
748
+ "name": "target",
749
+ "type": "address"
750
+ }
751
+ ],
752
+ "type": "error",
753
+ "name": "AddressEmptyCode"
754
+ },
755
+ { "inputs": [], "type": "error", "name": "AlreadyVoted" },
756
+ {
757
+ "inputs": [],
758
+ "type": "error",
759
+ "name": "BellowMinValidators"
760
+ },
761
+ {
762
+ "inputs": [],
763
+ "type": "error",
764
+ "name": "BlsKeyAlreadyRegistered"
765
+ },
766
+ { "inputs": [], "type": "error", "name": "BlsKeyIsInvalid" },
767
+ {
768
+ "inputs": [],
769
+ "type": "error",
770
+ "name": "CallerIsNotValidator"
771
+ },
772
+ {
773
+ "inputs": [
774
+ {
775
+ "internalType": "address",
776
+ "name": "implementation",
777
+ "type": "address"
778
+ }
779
+ ],
780
+ "type": "error",
781
+ "name": "ERC1967InvalidImplementation"
782
+ },
783
+ { "inputs": [], "type": "error", "name": "ERC1967NonPayable" },
784
+ { "inputs": [], "type": "error", "name": "FailedCall" },
785
+ { "inputs": [], "type": "error", "name": "ImportIsNotAllowed" },
786
+ {
787
+ "inputs": [],
788
+ "type": "error",
789
+ "name": "InvalidInitialization"
790
+ },
791
+ { "inputs": [], "type": "error", "name": "InvalidParameters" },
792
+ {
793
+ "inputs": [
794
+ {
795
+ "internalType": "uint256",
796
+ "name": "min",
797
+ "type": "uint256"
798
+ },
799
+ {
800
+ "internalType": "uint256",
801
+ "name": "max",
802
+ "type": "uint256"
803
+ }
804
+ ],
805
+ "type": "error",
806
+ "name": "InvalidRange"
807
+ },
808
+ { "inputs": [], "type": "error", "name": "MissingVote" },
809
+ { "inputs": [], "type": "error", "name": "NoActiveValidators" },
810
+ { "inputs": [], "type": "error", "name": "NotInitializing" },
811
+ {
812
+ "inputs": [
813
+ {
814
+ "internalType": "address",
815
+ "name": "owner",
816
+ "type": "address"
817
+ }
818
+ ],
819
+ "type": "error",
820
+ "name": "OwnableInvalidOwner"
821
+ },
822
+ {
823
+ "inputs": [
824
+ {
825
+ "internalType": "address",
826
+ "name": "account",
827
+ "type": "address"
828
+ }
829
+ ],
830
+ "type": "error",
831
+ "name": "OwnableUnauthorizedAccount"
832
+ },
833
+ {
834
+ "inputs": [],
835
+ "type": "error",
836
+ "name": "UUPSUnauthorizedCallContext"
837
+ },
838
+ {
839
+ "inputs": [
840
+ {
841
+ "internalType": "bytes32",
842
+ "name": "slot",
843
+ "type": "bytes32"
844
+ }
845
+ ],
846
+ "type": "error",
847
+ "name": "UUPSUnsupportedProxiableUUID"
848
+ },
849
+ {
850
+ "inputs": [],
851
+ "type": "error",
852
+ "name": "ValidatorAlreadyRegistered"
853
+ },
854
+ {
855
+ "inputs": [],
856
+ "type": "error",
857
+ "name": "ValidatorAlreadyResigned"
858
+ },
859
+ {
860
+ "inputs": [],
861
+ "type": "error",
862
+ "name": "ValidatorNotRegistered"
863
+ },
864
+ {
865
+ "inputs": [],
866
+ "type": "error",
867
+ "name": "VoteResignedValidator"
868
+ },
869
+ { "inputs": [], "type": "error", "name": "VoteSameValidator" },
870
+ {
871
+ "inputs": [],
872
+ "type": "error",
873
+ "name": "VoteValidatorWithoutBlsPublicKey"
874
+ },
875
+ {
876
+ "inputs": [
877
+ {
878
+ "internalType": "uint64",
879
+ "name": "version",
880
+ "type": "uint64",
881
+ "indexed": false
882
+ }
883
+ ],
884
+ "type": "event",
885
+ "name": "Initialized",
886
+ "anonymous": false
887
+ },
888
+ {
889
+ "inputs": [
890
+ {
891
+ "internalType": "address",
892
+ "name": "previousOwner",
893
+ "type": "address",
894
+ "indexed": true
895
+ },
896
+ {
897
+ "internalType": "address",
898
+ "name": "newOwner",
899
+ "type": "address",
900
+ "indexed": true
901
+ }
902
+ ],
903
+ "type": "event",
904
+ "name": "OwnershipTransferred",
905
+ "anonymous": false
906
+ },
907
+ {
908
+ "inputs": [
909
+ {
910
+ "internalType": "address",
911
+ "name": "voter",
912
+ "type": "address",
913
+ "indexed": false
914
+ },
915
+ {
916
+ "internalType": "address",
917
+ "name": "validator",
918
+ "type": "address",
919
+ "indexed": false
920
+ }
921
+ ],
922
+ "type": "event",
923
+ "name": "Unvoted",
924
+ "anonymous": false
925
+ },
926
+ {
927
+ "inputs": [
928
+ {
929
+ "internalType": "address",
930
+ "name": "implementation",
931
+ "type": "address",
932
+ "indexed": true
933
+ }
934
+ ],
935
+ "type": "event",
936
+ "name": "Upgraded",
937
+ "anonymous": false
938
+ },
939
+ {
940
+ "inputs": [
941
+ {
942
+ "internalType": "address",
943
+ "name": "addr",
944
+ "type": "address",
945
+ "indexed": false
946
+ },
947
+ {
948
+ "internalType": "bytes",
949
+ "name": "blsPublicKey",
950
+ "type": "bytes",
951
+ "indexed": false
952
+ }
953
+ ],
954
+ "type": "event",
955
+ "name": "ValidatorRegistered",
956
+ "anonymous": false
957
+ },
958
+ {
959
+ "inputs": [
960
+ {
961
+ "internalType": "address",
962
+ "name": "addr",
963
+ "type": "address",
964
+ "indexed": false
965
+ }
966
+ ],
967
+ "type": "event",
968
+ "name": "ValidatorResigned",
969
+ "anonymous": false
970
+ },
971
+ {
972
+ "inputs": [
973
+ {
974
+ "internalType": "address",
975
+ "name": "addr",
976
+ "type": "address",
977
+ "indexed": false
978
+ },
979
+ {
980
+ "internalType": "bytes",
981
+ "name": "blsPublicKey",
982
+ "type": "bytes",
983
+ "indexed": false
984
+ }
985
+ ],
986
+ "type": "event",
987
+ "name": "ValidatorUpdated",
988
+ "anonymous": false
989
+ },
990
+ {
991
+ "inputs": [
992
+ {
993
+ "internalType": "address",
994
+ "name": "voter",
995
+ "type": "address",
996
+ "indexed": false
997
+ },
998
+ {
999
+ "internalType": "address",
1000
+ "name": "validator",
1001
+ "type": "address",
1002
+ "indexed": false
1003
+ }
1004
+ ],
1005
+ "type": "event",
1006
+ "name": "Voted",
1007
+ "anonymous": false
1008
+ },
1009
+ {
1010
+ "inputs": [],
1011
+ "stateMutability": "view",
1012
+ "type": "function",
1013
+ "name": "UPGRADE_INTERFACE_VERSION",
1014
+ "outputs": [
1015
+ {
1016
+ "internalType": "string",
1017
+ "name": "",
1018
+ "type": "string"
1019
+ }
1020
+ ]
1021
+ },
1022
+ {
1023
+ "inputs": [],
1024
+ "stateMutability": "view",
1025
+ "type": "function",
1026
+ "name": "activeValidatorsCount",
1027
+ "outputs": [
1028
+ {
1029
+ "internalType": "uint256",
1030
+ "name": "",
1031
+ "type": "uint256"
1032
+ }
1033
+ ]
1034
+ },
1035
+ {
1036
+ "inputs": [
1037
+ {
1038
+ "internalType": "address",
1039
+ "name": "addr",
1040
+ "type": "address"
1041
+ },
1042
+ {
1043
+ "internalType": "bytes",
1044
+ "name": "blsPublicKey",
1045
+ "type": "bytes"
1046
+ },
1047
+ {
1048
+ "internalType": "bool",
1049
+ "name": "isResigned",
1050
+ "type": "bool"
1051
+ }
1052
+ ],
1053
+ "stateMutability": "nonpayable",
1054
+ "type": "function",
1055
+ "name": "addValidator"
1056
+ },
1057
+ {
1058
+ "inputs": [
1059
+ {
1060
+ "internalType": "address",
1061
+ "name": "voter",
1062
+ "type": "address"
1063
+ },
1064
+ {
1065
+ "internalType": "address",
1066
+ "name": "validator",
1067
+ "type": "address"
1068
+ }
1069
+ ],
1070
+ "stateMutability": "nonpayable",
1071
+ "type": "function",
1072
+ "name": "addVote"
1073
+ },
1074
+ {
1075
+ "inputs": [
1076
+ {
1077
+ "internalType": "uint8",
1078
+ "name": "n",
1079
+ "type": "uint8"
1080
+ }
1081
+ ],
1082
+ "stateMutability": "nonpayable",
1083
+ "type": "function",
1084
+ "name": "calculateActiveValidators"
1085
+ },
1086
+ {
1087
+ "inputs": [],
1088
+ "stateMutability": "view",
1089
+ "type": "function",
1090
+ "name": "getActiveValidators",
1091
+ "outputs": [
1092
+ {
1093
+ "internalType": "struct ConsensusV1.Validator[]",
1094
+ "name": "",
1095
+ "type": "tuple[]",
1096
+ "components": [
1097
+ {
1098
+ "internalType": "address",
1099
+ "name": "addr",
1100
+ "type": "address"
1101
+ },
1102
+ {
1103
+ "internalType": "struct ConsensusV1.ValidatorData",
1104
+ "name": "data",
1105
+ "type": "tuple",
1106
+ "components": [
1107
+ {
1108
+ "internalType": "uint256",
1109
+ "name": "votersCount",
1110
+ "type": "uint256"
1111
+ },
1112
+ {
1113
+ "internalType": "uint256",
1114
+ "name": "voteBalance",
1115
+ "type": "uint256"
1116
+ },
1117
+ {
1118
+ "internalType": "bool",
1119
+ "name": "isResigned",
1120
+ "type": "bool"
1121
+ },
1122
+ {
1123
+ "internalType": "bytes",
1124
+ "name": "blsPublicKey",
1125
+ "type": "bytes"
1126
+ }
1127
+ ]
1128
+ }
1129
+ ]
1130
+ }
1131
+ ]
1132
+ },
1133
+ {
1134
+ "inputs": [],
1135
+ "stateMutability": "view",
1136
+ "type": "function",
1137
+ "name": "getAllValidators",
1138
+ "outputs": [
1139
+ {
1140
+ "internalType": "struct ConsensusV1.Validator[]",
1141
+ "name": "",
1142
+ "type": "tuple[]",
1143
+ "components": [
1144
+ {
1145
+ "internalType": "address",
1146
+ "name": "addr",
1147
+ "type": "address"
1148
+ },
1149
+ {
1150
+ "internalType": "struct ConsensusV1.ValidatorData",
1151
+ "name": "data",
1152
+ "type": "tuple",
1153
+ "components": [
1154
+ {
1155
+ "internalType": "uint256",
1156
+ "name": "votersCount",
1157
+ "type": "uint256"
1158
+ },
1159
+ {
1160
+ "internalType": "uint256",
1161
+ "name": "voteBalance",
1162
+ "type": "uint256"
1163
+ },
1164
+ {
1165
+ "internalType": "bool",
1166
+ "name": "isResigned",
1167
+ "type": "bool"
1168
+ },
1169
+ {
1170
+ "internalType": "bytes",
1171
+ "name": "blsPublicKey",
1172
+ "type": "bytes"
1173
+ }
1174
+ ]
1175
+ }
1176
+ ]
1177
+ }
1178
+ ]
1179
+ },
1180
+ {
1181
+ "inputs": [
1182
+ {
1183
+ "internalType": "uint256",
1184
+ "name": "offset",
1185
+ "type": "uint256"
1186
+ },
1187
+ {
1188
+ "internalType": "uint256",
1189
+ "name": "count",
1190
+ "type": "uint256"
1191
+ }
1192
+ ],
1193
+ "stateMutability": "view",
1194
+ "type": "function",
1195
+ "name": "getRounds",
1196
+ "outputs": [
1197
+ {
1198
+ "internalType": "struct ConsensusV1.Round[]",
1199
+ "name": "",
1200
+ "type": "tuple[]",
1201
+ "components": [
1202
+ {
1203
+ "internalType": "uint256",
1204
+ "name": "round",
1205
+ "type": "uint256"
1206
+ },
1207
+ {
1208
+ "internalType": "struct ConsensusV1.RoundValidator[]",
1209
+ "name": "validators",
1210
+ "type": "tuple[]",
1211
+ "components": [
1212
+ {
1213
+ "internalType": "address",
1214
+ "name": "addr",
1215
+ "type": "address"
1216
+ },
1217
+ {
1218
+ "internalType": "uint256",
1219
+ "name": "voteBalance",
1220
+ "type": "uint256"
1221
+ }
1222
+ ]
1223
+ }
1224
+ ]
1225
+ }
1226
+ ]
1227
+ },
1228
+ {
1229
+ "inputs": [],
1230
+ "stateMutability": "view",
1231
+ "type": "function",
1232
+ "name": "getRoundsCount",
1233
+ "outputs": [
1234
+ {
1235
+ "internalType": "uint256",
1236
+ "name": "",
1237
+ "type": "uint256"
1238
+ }
1239
+ ]
1240
+ },
1241
+ {
1242
+ "inputs": [
1243
+ {
1244
+ "internalType": "address",
1245
+ "name": "addr",
1246
+ "type": "address"
1247
+ }
1248
+ ],
1249
+ "stateMutability": "view",
1250
+ "type": "function",
1251
+ "name": "getValidator",
1252
+ "outputs": [
1253
+ {
1254
+ "internalType": "struct ConsensusV1.Validator",
1255
+ "name": "",
1256
+ "type": "tuple",
1257
+ "components": [
1258
+ {
1259
+ "internalType": "address",
1260
+ "name": "addr",
1261
+ "type": "address"
1262
+ },
1263
+ {
1264
+ "internalType": "struct ConsensusV1.ValidatorData",
1265
+ "name": "data",
1266
+ "type": "tuple",
1267
+ "components": [
1268
+ {
1269
+ "internalType": "uint256",
1270
+ "name": "votersCount",
1271
+ "type": "uint256"
1272
+ },
1273
+ {
1274
+ "internalType": "uint256",
1275
+ "name": "voteBalance",
1276
+ "type": "uint256"
1277
+ },
1278
+ {
1279
+ "internalType": "bool",
1280
+ "name": "isResigned",
1281
+ "type": "bool"
1282
+ },
1283
+ {
1284
+ "internalType": "bytes",
1285
+ "name": "blsPublicKey",
1286
+ "type": "bytes"
1287
+ }
1288
+ ]
1289
+ }
1290
+ ]
1291
+ }
1292
+ ]
1293
+ },
1294
+ {
1295
+ "inputs": [
1296
+ {
1297
+ "internalType": "address",
1298
+ "name": "addr",
1299
+ "type": "address"
1300
+ },
1301
+ {
1302
+ "internalType": "uint256",
1303
+ "name": "count",
1304
+ "type": "uint256"
1305
+ }
1306
+ ],
1307
+ "stateMutability": "view",
1308
+ "type": "function",
1309
+ "name": "getVotes",
1310
+ "outputs": [
1311
+ {
1312
+ "internalType": "struct ConsensusV1.VoteResult[]",
1313
+ "name": "",
1314
+ "type": "tuple[]",
1315
+ "components": [
1316
+ {
1317
+ "internalType": "address",
1318
+ "name": "voter",
1319
+ "type": "address"
1320
+ },
1321
+ {
1322
+ "internalType": "address",
1323
+ "name": "validator",
1324
+ "type": "address"
1325
+ }
1326
+ ]
1327
+ }
1328
+ ]
1329
+ },
1330
+ {
1331
+ "inputs": [],
1332
+ "stateMutability": "view",
1333
+ "type": "function",
1334
+ "name": "getVotesCount",
1335
+ "outputs": [
1336
+ {
1337
+ "internalType": "uint256",
1338
+ "name": "",
1339
+ "type": "uint256"
1340
+ }
1341
+ ]
1342
+ },
1343
+ {
1344
+ "inputs": [],
1345
+ "stateMutability": "nonpayable",
1346
+ "type": "function",
1347
+ "name": "initialize"
1348
+ },
1349
+ {
1350
+ "inputs": [
1351
+ {
1352
+ "internalType": "address",
1353
+ "name": "addr",
1354
+ "type": "address"
1355
+ }
1356
+ ],
1357
+ "stateMutability": "view",
1358
+ "type": "function",
1359
+ "name": "isValidatorRegistered",
1360
+ "outputs": [
1361
+ { "internalType": "bool", "name": "", "type": "bool" }
1362
+ ]
1363
+ },
1364
+ {
1365
+ "inputs": [],
1366
+ "stateMutability": "view",
1367
+ "type": "function",
1368
+ "name": "owner",
1369
+ "outputs": [
1370
+ {
1371
+ "internalType": "address",
1372
+ "name": "",
1373
+ "type": "address"
1374
+ }
1375
+ ]
1376
+ },
1377
+ {
1378
+ "inputs": [],
1379
+ "stateMutability": "view",
1380
+ "type": "function",
1381
+ "name": "proxiableUUID",
1382
+ "outputs": [
1383
+ {
1384
+ "internalType": "bytes32",
1385
+ "name": "",
1386
+ "type": "bytes32"
1387
+ }
1388
+ ]
1389
+ },
1390
+ {
1391
+ "inputs": [
1392
+ {
1393
+ "internalType": "bytes",
1394
+ "name": "blsPublicKey",
1395
+ "type": "bytes"
1396
+ }
1397
+ ],
1398
+ "stateMutability": "nonpayable",
1399
+ "type": "function",
1400
+ "name": "registerValidator"
1401
+ },
1402
+ {
1403
+ "inputs": [],
1404
+ "stateMutability": "view",
1405
+ "type": "function",
1406
+ "name": "registeredValidatorsCount",
1407
+ "outputs": [
1408
+ {
1409
+ "internalType": "uint256",
1410
+ "name": "",
1411
+ "type": "uint256"
1412
+ }
1413
+ ]
1414
+ },
1415
+ {
1416
+ "inputs": [],
1417
+ "stateMutability": "nonpayable",
1418
+ "type": "function",
1419
+ "name": "renounceOwnership"
1420
+ },
1421
+ {
1422
+ "inputs": [],
1423
+ "stateMutability": "nonpayable",
1424
+ "type": "function",
1425
+ "name": "resignValidator"
1426
+ },
1427
+ {
1428
+ "inputs": [],
1429
+ "stateMutability": "view",
1430
+ "type": "function",
1431
+ "name": "resignedValidatorsCount",
1432
+ "outputs": [
1433
+ {
1434
+ "internalType": "uint256",
1435
+ "name": "",
1436
+ "type": "uint256"
1437
+ }
1438
+ ]
1439
+ },
1440
+ {
1441
+ "inputs": [
1442
+ {
1443
+ "internalType": "address",
1444
+ "name": "newOwner",
1445
+ "type": "address"
1446
+ }
1447
+ ],
1448
+ "stateMutability": "nonpayable",
1449
+ "type": "function",
1450
+ "name": "transferOwnership"
1451
+ },
1452
+ {
1453
+ "inputs": [],
1454
+ "stateMutability": "nonpayable",
1455
+ "type": "function",
1456
+ "name": "unvote"
1457
+ },
1458
+ {
1459
+ "inputs": [
1460
+ {
1461
+ "internalType": "bytes",
1462
+ "name": "blsPublicKey",
1463
+ "type": "bytes"
1464
+ }
1465
+ ],
1466
+ "stateMutability": "nonpayable",
1467
+ "type": "function",
1468
+ "name": "updateValidator"
1469
+ },
1470
+ {
1471
+ "inputs": [
1472
+ {
1473
+ "internalType": "address[]",
1474
+ "name": "voters",
1475
+ "type": "address[]"
1476
+ }
1477
+ ],
1478
+ "stateMutability": "nonpayable",
1479
+ "type": "function",
1480
+ "name": "updateVoters"
1481
+ },
1482
+ {
1483
+ "inputs": [
1484
+ {
1485
+ "internalType": "address",
1486
+ "name": "newImplementation",
1487
+ "type": "address"
1488
+ },
1489
+ {
1490
+ "internalType": "bytes",
1491
+ "name": "data",
1492
+ "type": "bytes"
1493
+ }
1494
+ ],
1495
+ "stateMutability": "payable",
1496
+ "type": "function",
1497
+ "name": "upgradeToAndCall"
1498
+ },
1499
+ {
1500
+ "inputs": [],
1501
+ "stateMutability": "pure",
1502
+ "type": "function",
1503
+ "name": "version",
1504
+ "outputs": [
1505
+ {
1506
+ "internalType": "uint256",
1507
+ "name": "",
1508
+ "type": "uint256"
1509
+ }
1510
+ ]
1511
+ },
1512
+ {
1513
+ "inputs": [
1514
+ {
1515
+ "internalType": "address",
1516
+ "name": "addr",
1517
+ "type": "address"
1518
+ }
1519
+ ],
1520
+ "stateMutability": "nonpayable",
1521
+ "type": "function",
1522
+ "name": "vote"
1523
+ }
1524
+ ],
1525
+ "devdoc": {
1526
+ "kind": "dev",
1527
+ "methods": {
1528
+ "owner()": {
1529
+ "details": "Returns the address of the current owner."
1530
+ },
1531
+ "proxiableUUID()": {
1532
+ "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."
1533
+ },
1534
+ "renounceOwnership()": {
1535
+ "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."
1536
+ },
1537
+ "transferOwnership(address)": {
1538
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
1539
+ },
1540
+ "upgradeToAndCall(address,bytes)": {
1541
+ "custom:oz-upgrades-unsafe-allow-reachable": "delegatecall",
1542
+ "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
1543
+ }
1544
+ },
1545
+ "version": 1
1546
+ },
1547
+ "userdoc": { "kind": "user", "methods": {}, "version": 1 }
1548
+ },
1549
+ "settings": {
1550
+ "remappings": [
1551
+ "@contracts/=src/",
1552
+ "@forge-std/=lib/forge-std/src/",
1553
+ "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
1554
+ "@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
1555
+ "ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
1556
+ "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
1557
+ "forge-std/=lib/forge-std/src/",
1558
+ "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
1559
+ "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
1560
+ "openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/",
1561
+ "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
1562
+ "solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"
1563
+ ],
1564
+ "optimizer": { "enabled": true, "runs": 200 },
1565
+ "metadata": { "bytecodeHash": "ipfs" },
1566
+ "compilationTarget": {
1567
+ "src/consensus/ConsensusV1.sol": "ConsensusV1"
1568
+ },
1569
+ "evmVersion": "shanghai",
1570
+ "libraries": {}
1571
+ },
1572
+ "sources": {
1573
+ "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": {
1574
+ "keccak256": "0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a",
1575
+ "urls": [
1576
+ "bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6",
1577
+ "dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"
1578
+ ],
1579
+ "license": "MIT"
1580
+ },
1581
+ "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": {
1582
+ "keccak256": "0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b",
1583
+ "urls": [
1584
+ "bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609",
1585
+ "dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"
1586
+ ],
1587
+ "license": "MIT"
1588
+ },
1589
+ "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol": {
1590
+ "keccak256": "0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27",
1591
+ "urls": [
1592
+ "bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e",
1593
+ "dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"
1594
+ ],
1595
+ "license": "MIT"
1596
+ },
1597
+ "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": {
1598
+ "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397",
1599
+ "urls": [
1600
+ "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9",
1601
+ "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"
1602
+ ],
1603
+ "license": "MIT"
1604
+ },
1605
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol": {
1606
+ "keccak256": "0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486",
1607
+ "urls": [
1608
+ "bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d",
1609
+ "dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"
1610
+ ],
1611
+ "license": "MIT"
1612
+ },
1613
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol": {
1614
+ "keccak256": "0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d",
1615
+ "urls": [
1616
+ "bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196",
1617
+ "dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"
1618
+ ],
1619
+ "license": "MIT"
1620
+ },
1621
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol": {
1622
+ "keccak256": "0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06",
1623
+ "urls": [
1624
+ "bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c",
1625
+ "dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"
1626
+ ],
1627
+ "license": "MIT"
1628
+ },
1629
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": {
1630
+ "keccak256": "0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c",
1631
+ "urls": [
1632
+ "bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa",
1633
+ "dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"
1634
+ ],
1635
+ "license": "MIT"
1636
+ },
1637
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol": {
1638
+ "keccak256": "0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5",
1639
+ "urls": [
1640
+ "bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23",
1641
+ "dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"
1642
+ ],
1643
+ "license": "MIT"
1644
+ },
1645
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol": {
1646
+ "keccak256": "0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123",
1647
+ "urls": [
1648
+ "bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf",
1649
+ "dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"
1650
+ ],
1651
+ "license": "MIT"
1652
+ },
1653
+ "lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol": {
1654
+ "keccak256": "0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97",
1655
+ "urls": [
1656
+ "bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b",
1657
+ "dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"
1658
+ ],
1659
+ "license": "MIT"
1660
+ },
1661
+ "src/consensus/ConsensusV1.sol": {
1662
+ "keccak256": "0xf46c47adfacce9f204df2223af8b3cde47b9fdcaa372d67fdd739cb6ec096733",
1663
+ "urls": [
1664
+ "bzz-raw://15318c1cdb08120eab84d5d1f6fe997749e843d0b6487f8ae58eaf189dafd27e",
1665
+ "dweb:/ipfs/QmbwYcnDQBG3NwBpUHvjGWPLuNYXhPxjitowEFjQk9BVqg"
1666
+ ],
1667
+ "license": "GNU GENERAL PUBLIC LICENSE"
1668
+ }
1669
+ },
1670
+ "version": 1
1671
+ },
1672
+ "id": 37
1673
+ }