@aztec-foundation/l1-artifacts 6.0.0-rc.1 → 6.0.0-rc.4

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 (374) hide show
  1. package/dest/AttesterExitExtLibAbi.d.ts +12 -48
  2. package/dest/AttesterExitExtLibAbi.d.ts.map +1 -1
  3. package/dest/AttesterExitExtLibAbi.js +16 -64
  4. package/dest/AttesterExitExtLibAbi.js.map +1 -1
  5. package/dest/AttesterExitExtLibBytecode.d.ts +1 -1
  6. package/dest/AttesterExitExtLibBytecode.js +1 -1
  7. package/dest/CoinIssuerAbi.d.ts +12 -48
  8. package/dest/CoinIssuerAbi.d.ts.map +1 -1
  9. package/dest/CoinIssuerAbi.js +16 -64
  10. package/dest/CoinIssuerAbi.js.map +1 -1
  11. package/dest/DateGatedRelayerAbi.d.ts +12 -48
  12. package/dest/DateGatedRelayerAbi.d.ts.map +1 -1
  13. package/dest/DateGatedRelayerAbi.js +16 -64
  14. package/dest/DateGatedRelayerAbi.js.map +1 -1
  15. package/dest/EmpireBaseAbi.d.ts +12 -48
  16. package/dest/EmpireBaseAbi.d.ts.map +1 -1
  17. package/dest/EmpireBaseAbi.js +16 -64
  18. package/dest/EmpireBaseAbi.js.map +1 -1
  19. package/dest/EpochProofExtLibAbi.d.ts +12 -48
  20. package/dest/EpochProofExtLibAbi.d.ts.map +1 -1
  21. package/dest/EpochProofExtLibAbi.js +16 -64
  22. package/dest/EpochProofExtLibAbi.js.map +1 -1
  23. package/dest/EpochProofExtLibBytecode.d.ts +1 -1
  24. package/dest/EpochProofExtLibBytecode.d.ts.map +1 -1
  25. package/dest/EpochProofExtLibBytecode.js +1 -1
  26. package/dest/EpochProofExtLibBytecode.js.map +1 -1
  27. package/dest/ErrorsAbi.d.ts +12 -48
  28. package/dest/ErrorsAbi.d.ts.map +1 -1
  29. package/dest/ErrorsAbi.js +16 -64
  30. package/dest/ErrorsAbi.js.map +1 -1
  31. package/dest/EscapeHatchAbi.d.ts +12 -48
  32. package/dest/EscapeHatchAbi.d.ts.map +1 -1
  33. package/dest/EscapeHatchAbi.js +16 -64
  34. package/dest/EscapeHatchAbi.js.map +1 -1
  35. package/dest/EscapeHatchBytecode.d.ts +1 -1
  36. package/dest/EscapeHatchBytecode.js +1 -1
  37. package/dest/EscapeHatchStorage.d.ts +2 -2
  38. package/dest/EscapeHatchStorage.js +2 -2
  39. package/dest/FeeAssetHandlerAbi.d.ts +12 -48
  40. package/dest/FeeAssetHandlerAbi.d.ts.map +1 -1
  41. package/dest/FeeAssetHandlerAbi.js +16 -64
  42. package/dest/FeeAssetHandlerAbi.js.map +1 -1
  43. package/dest/FeeJuicePortalAbi.d.ts +12 -48
  44. package/dest/FeeJuicePortalAbi.d.ts.map +1 -1
  45. package/dest/FeeJuicePortalAbi.js +16 -64
  46. package/dest/FeeJuicePortalAbi.js.map +1 -1
  47. package/dest/FeeJuicePortalBytecode.d.ts +1 -1
  48. package/dest/FeeJuicePortalBytecode.js +1 -1
  49. package/dest/GSEAbi.d.ts +12 -48
  50. package/dest/GSEAbi.d.ts.map +1 -1
  51. package/dest/GSEAbi.js +16 -64
  52. package/dest/GSEAbi.js.map +1 -1
  53. package/dest/GovernanceAbi.d.ts +12 -48
  54. package/dest/GovernanceAbi.d.ts.map +1 -1
  55. package/dest/GovernanceAbi.js +16 -64
  56. package/dest/GovernanceAbi.js.map +1 -1
  57. package/dest/GovernanceProposerAbi.d.ts +12 -48
  58. package/dest/GovernanceProposerAbi.d.ts.map +1 -1
  59. package/dest/GovernanceProposerAbi.js +16 -64
  60. package/dest/GovernanceProposerAbi.js.map +1 -1
  61. package/dest/HonkVerifierAbi.d.ts +12 -48
  62. package/dest/HonkVerifierAbi.d.ts.map +1 -1
  63. package/dest/HonkVerifierAbi.js +16 -64
  64. package/dest/HonkVerifierAbi.js.map +1 -1
  65. package/dest/IERC20Abi.d.ts +12 -48
  66. package/dest/IERC20Abi.d.ts.map +1 -1
  67. package/dest/IERC20Abi.js +16 -64
  68. package/dest/IERC20Abi.js.map +1 -1
  69. package/dest/ISequencerRewardCalculatorAbi.d.ts +2607 -0
  70. package/dest/ISequencerRewardCalculatorAbi.d.ts.map +1 -0
  71. package/dest/ISequencerRewardCalculatorAbi.js +3473 -0
  72. package/dest/ISequencerRewardCalculatorAbi.js.map +1 -0
  73. package/dest/ISequencerRewardCalculatorBytecode.d.ts +9 -0
  74. package/dest/ISequencerRewardCalculatorBytecode.d.ts.map +1 -0
  75. package/dest/ISequencerRewardCalculatorBytecode.js +9 -0
  76. package/dest/ISequencerRewardCalculatorBytecode.js.map +1 -0
  77. package/dest/IVerifierAbi.d.ts +12 -48
  78. package/dest/IVerifierAbi.d.ts.map +1 -1
  79. package/dest/IVerifierAbi.js +16 -64
  80. package/dest/IVerifierAbi.js.map +1 -1
  81. package/dest/InboxAbi.d.ts +12 -48
  82. package/dest/InboxAbi.d.ts.map +1 -1
  83. package/dest/InboxAbi.js +16 -64
  84. package/dest/InboxAbi.js.map +1 -1
  85. package/dest/InboxBytecode.d.ts +1 -1
  86. package/dest/InboxBytecode.js +1 -1
  87. package/dest/MockVerifierAbi.d.ts +12 -48
  88. package/dest/MockVerifierAbi.d.ts.map +1 -1
  89. package/dest/MockVerifierAbi.js +16 -64
  90. package/dest/MockVerifierAbi.js.map +1 -1
  91. package/dest/MockZKPassportVerifierAbi.d.ts +12 -48
  92. package/dest/MockZKPassportVerifierAbi.d.ts.map +1 -1
  93. package/dest/MockZKPassportVerifierAbi.js +16 -64
  94. package/dest/MockZKPassportVerifierAbi.js.map +1 -1
  95. package/dest/MultiAdderAbi.d.ts +12 -48
  96. package/dest/MultiAdderAbi.d.ts.map +1 -1
  97. package/dest/MultiAdderAbi.js +16 -64
  98. package/dest/MultiAdderAbi.js.map +1 -1
  99. package/dest/MultiAdderBytecode.d.ts +1 -1
  100. package/dest/MultiAdderBytecode.js +1 -1
  101. package/dest/NewGovernanceProposerPayloadAbi.d.ts +12 -48
  102. package/dest/NewGovernanceProposerPayloadAbi.d.ts.map +1 -1
  103. package/dest/NewGovernanceProposerPayloadAbi.js +16 -64
  104. package/dest/NewGovernanceProposerPayloadAbi.js.map +1 -1
  105. package/dest/OutboxAbi.d.ts +12 -48
  106. package/dest/OutboxAbi.d.ts.map +1 -1
  107. package/dest/OutboxAbi.js +16 -64
  108. package/dest/OutboxAbi.js.map +1 -1
  109. package/dest/OutboxBytecode.d.ts +1 -1
  110. package/dest/OutboxBytecode.js +1 -1
  111. package/dest/RegisterNewRollupVersionPayloadAbi.d.ts +12 -48
  112. package/dest/RegisterNewRollupVersionPayloadAbi.d.ts.map +1 -1
  113. package/dest/RegisterNewRollupVersionPayloadAbi.js +16 -64
  114. package/dest/RegisterNewRollupVersionPayloadAbi.js.map +1 -1
  115. package/dest/RegisterNewRollupVersionPayloadBytecode.d.ts +1 -1
  116. package/dest/RegisterNewRollupVersionPayloadBytecode.js +1 -1
  117. package/dest/RegistryAbi.d.ts +12 -48
  118. package/dest/RegistryAbi.d.ts.map +1 -1
  119. package/dest/RegistryAbi.js +16 -64
  120. package/dest/RegistryAbi.js.map +1 -1
  121. package/dest/RewardDistributorAbi.d.ts +12 -48
  122. package/dest/RewardDistributorAbi.d.ts.map +1 -1
  123. package/dest/RewardDistributorAbi.js +16 -64
  124. package/dest/RewardDistributorAbi.js.map +1 -1
  125. package/dest/RewardExtLibAbi.d.ts +59 -48
  126. package/dest/RewardExtLibAbi.d.ts.map +1 -1
  127. package/dest/RewardExtLibAbi.js +77 -64
  128. package/dest/RewardExtLibAbi.js.map +1 -1
  129. package/dest/RewardExtLibBytecode.d.ts +1 -1
  130. package/dest/RewardExtLibBytecode.d.ts.map +1 -1
  131. package/dest/RewardExtLibBytecode.js +1 -1
  132. package/dest/RewardExtLibBytecode.js.map +1 -1
  133. package/dest/RollupAbi.d.ts +72 -79
  134. package/dest/RollupAbi.d.ts.map +1 -1
  135. package/dest/RollupAbi.js +93 -104
  136. package/dest/RollupAbi.js.map +1 -1
  137. package/dest/RollupBytecode.d.ts +91 -82
  138. package/dest/RollupBytecode.d.ts.map +1 -1
  139. package/dest/RollupBytecode.js +94 -82
  140. package/dest/RollupBytecode.js.map +1 -1
  141. package/dest/RollupOperationsExtLibAbi.d.ts +12 -48
  142. package/dest/RollupOperationsExtLibAbi.d.ts.map +1 -1
  143. package/dest/RollupOperationsExtLibAbi.js +16 -64
  144. package/dest/RollupOperationsExtLibAbi.js.map +1 -1
  145. package/dest/RollupOperationsExtLibBytecode.d.ts +1 -1
  146. package/dest/RollupOperationsExtLibBytecode.d.ts.map +1 -1
  147. package/dest/RollupOperationsExtLibBytecode.js +1 -1
  148. package/dest/RollupOperationsExtLibBytecode.js.map +1 -1
  149. package/dest/RollupStorage.d.ts +2 -2
  150. package/dest/RollupStorage.js +2 -2
  151. package/dest/SlasherAbi.d.ts +12 -48
  152. package/dest/SlasherAbi.d.ts.map +1 -1
  153. package/dest/SlasherAbi.js +16 -64
  154. package/dest/SlasherAbi.js.map +1 -1
  155. package/dest/SlasherDeploymentExtLibAbi.d.ts +12 -48
  156. package/dest/SlasherDeploymentExtLibAbi.d.ts.map +1 -1
  157. package/dest/SlasherDeploymentExtLibAbi.js +16 -64
  158. package/dest/SlasherDeploymentExtLibAbi.js.map +1 -1
  159. package/dest/SlasherDeploymentExtLibBytecode.d.ts +1 -1
  160. package/dest/SlasherDeploymentExtLibBytecode.d.ts.map +1 -1
  161. package/dest/SlasherDeploymentExtLibBytecode.js +1 -1
  162. package/dest/SlasherDeploymentExtLibBytecode.js.map +1 -1
  163. package/dest/SlashingProposerAbi.d.ts +12 -48
  164. package/dest/SlashingProposerAbi.d.ts.map +1 -1
  165. package/dest/SlashingProposerAbi.js +16 -64
  166. package/dest/SlashingProposerAbi.js.map +1 -1
  167. package/dest/SlashingProposerBytecode.d.ts +1 -1
  168. package/dest/SlashingProposerBytecode.js +1 -1
  169. package/dest/StakingAssetHandlerAbi.d.ts +12 -48
  170. package/dest/StakingAssetHandlerAbi.d.ts.map +1 -1
  171. package/dest/StakingAssetHandlerAbi.js +16 -64
  172. package/dest/StakingAssetHandlerAbi.js.map +1 -1
  173. package/dest/TestERC20Abi.d.ts +12 -48
  174. package/dest/TestERC20Abi.d.ts.map +1 -1
  175. package/dest/TestERC20Abi.js +16 -64
  176. package/dest/TestERC20Abi.js.map +1 -1
  177. package/dest/TokenPortalAbi.d.ts +12 -48
  178. package/dest/TokenPortalAbi.d.ts.map +1 -1
  179. package/dest/TokenPortalAbi.js +16 -64
  180. package/dest/TokenPortalAbi.js.map +1 -1
  181. package/dest/TokenPortalBytecode.d.ts +1 -1
  182. package/dest/TokenPortalBytecode.js +1 -1
  183. package/dest/UniswapPortalAbi.d.ts +12 -48
  184. package/dest/UniswapPortalAbi.d.ts.map +1 -1
  185. package/dest/UniswapPortalAbi.js +16 -64
  186. package/dest/UniswapPortalAbi.js.map +1 -1
  187. package/dest/UniswapPortalBytecode.d.ts +1 -1
  188. package/dest/UniswapPortalBytecode.js +1 -1
  189. package/dest/ValidatorOperationsExtLibAbi.d.ts +12 -48
  190. package/dest/ValidatorOperationsExtLibAbi.d.ts.map +1 -1
  191. package/dest/ValidatorOperationsExtLibAbi.js +16 -64
  192. package/dest/ValidatorOperationsExtLibAbi.js.map +1 -1
  193. package/dest/ValidatorOperationsExtLibBytecode.d.ts +1 -1
  194. package/dest/ValidatorOperationsExtLibBytecode.d.ts.map +1 -1
  195. package/dest/ValidatorOperationsExtLibBytecode.js +1 -1
  196. package/dest/ValidatorOperationsExtLibBytecode.js.map +1 -1
  197. package/dest/ValidatorSelectionLibAbi.d.ts +12 -48
  198. package/dest/ValidatorSelectionLibAbi.d.ts.map +1 -1
  199. package/dest/ValidatorSelectionLibAbi.js +16 -64
  200. package/dest/ValidatorSelectionLibAbi.js.map +1 -1
  201. package/dest/ValidatorSelectionLibBytecode.d.ts +1 -1
  202. package/dest/ValidatorSelectionLibBytecode.js +1 -1
  203. package/dest/checksum.d.ts +1 -1
  204. package/dest/checksum.js +1 -1
  205. package/dest/index.d.ts +2 -0
  206. package/dest/index.d.ts.map +1 -1
  207. package/dest/index.js +2 -0
  208. package/dest/index.js.map +1 -1
  209. package/l1-contracts/cache/solidity-files-cache.json +1 -1
  210. package/l1-contracts/foundry.toml +1 -1
  211. package/l1-contracts/out/AddressSnapshotLib.sol/AddressSnapshotLib.json +1 -1
  212. package/l1-contracts/out/AttestationLib.sol/AttestationLib.json +1 -1
  213. package/l1-contracts/out/AttesterExitExtLib.sol/AttesterExitExtLib.json +1 -1
  214. package/l1-contracts/out/BN254Lib.sol/BN254Lib.json +1 -1
  215. package/l1-contracts/out/Ballot.sol/BallotLib.json +1 -1
  216. package/l1-contracts/out/BlobLib.sol/BlobLib.json +1 -1
  217. package/l1-contracts/out/Bn254LibWrapper.sol/Bn254LibWrapper.json +1 -1
  218. package/l1-contracts/out/CheckpointLog.sol/CompressedTempCheckpointLogLib.json +1 -1
  219. package/l1-contracts/out/CheckpointedUintLib.sol/CheckpointedUintLib.json +1 -1
  220. package/l1-contracts/out/CoinIssuer.sol/CoinIssuer.json +1 -1
  221. package/l1-contracts/out/CompressedTimeMath.sol/CompressedTimeMath.json +1 -1
  222. package/l1-contracts/out/Configuration.sol/CompressedConfigurationLib.json +1 -1
  223. package/l1-contracts/out/ConfigurationLib.sol/ConfigurationLib.json +1 -1
  224. package/l1-contracts/out/ConstantsGen.sol/Constants.json +1 -1
  225. package/l1-contracts/out/CoordinationSignatureLib.sol/CoordinationSignatureLib.json +1 -1
  226. package/l1-contracts/out/DataStructures.sol/DataStructures.json +1 -1
  227. package/l1-contracts/out/DateGatedRelayer.sol/DateGatedRelayer.json +1 -1
  228. package/l1-contracts/out/DeployAztecL1Contracts.s.sol/DeployAztecL1Contracts.json +1 -1
  229. package/l1-contracts/out/DeployRollupForUpgrade.s.sol/DeployRollupForUpgrade.json +1 -1
  230. package/l1-contracts/out/DeployRollupLib.sol/DeployRollupLib.json +1 -1
  231. package/l1-contracts/out/DeploymentConfiguration.sol/DeploymentConfiguration.json +1 -1
  232. package/l1-contracts/out/DeploymentConfiguration.sol/IDeploymentConfiguration.json +1 -1
  233. package/l1-contracts/out/DepositDelegationLib.sol/DepositDelegationLib.json +1 -1
  234. package/l1-contracts/out/EmpireBase.sol/EmpireBase.json +1 -1
  235. package/l1-contracts/out/EpochProofExtLib.sol/EpochProofExtLib.json +1 -1
  236. package/l1-contracts/out/EpochProofLib.sol/EpochProofLib.json +1 -1
  237. package/l1-contracts/out/Errors.sol/Errors.json +1 -1
  238. package/l1-contracts/out/EscapeHatch.sol/EscapeHatch.json +1 -1
  239. package/l1-contracts/out/FeeAssetHandler.sol/FeeAssetHandler.json +1 -1
  240. package/l1-contracts/out/FeeAssetHandler.sol/IFeeAssetHandler.json +1 -1
  241. package/l1-contracts/out/FeeConfig.sol/FeeConfigLib.json +1 -1
  242. package/l1-contracts/out/FeeConfig.sol/PriceLib.json +1 -1
  243. package/l1-contracts/out/FeeJuicePortal.sol/FeeJuicePortal.json +1 -1
  244. package/l1-contracts/out/FeeLib.sol/FeeLib.json +1 -1
  245. package/l1-contracts/out/FeeStructs.sol/FeeHeaderLib.json +1 -1
  246. package/l1-contracts/out/FeeStructs.sol/FeeStructsLib.json +1 -1
  247. package/l1-contracts/out/FieldLib.sol/FieldLib.json +1 -1
  248. package/l1-contracts/out/FlushRewarder.sol/FlushRewarder.json +1 -1
  249. package/l1-contracts/out/GSE.sol/GSE.json +1 -1
  250. package/l1-contracts/out/GSE.sol/GSECore.json +1 -1
  251. package/l1-contracts/out/GSE.sol/IGSE.json +1 -1
  252. package/l1-contracts/out/GSE.sol/IGSECore.json +1 -1
  253. package/l1-contracts/out/GSEPayload.sol/GSEPayload.json +1 -1
  254. package/l1-contracts/out/Governance.sol/Governance.json +1 -1
  255. package/l1-contracts/out/GovernanceProposer.sol/GovernanceProposer.json +1 -1
  256. package/l1-contracts/out/Hash.sol/Hash.json +1 -1
  257. package/l1-contracts/out/HonkVerifier.sol/HonkVerifier.json +1 -1
  258. package/l1-contracts/out/IBn254LibWrapper.sol/IBn254LibWrapper.json +1 -1
  259. package/l1-contracts/out/ICoinIssuer.sol/ICoinIssuer.json +1 -1
  260. package/l1-contracts/out/IDateGatedRelayer.sol/IDateGatedRelayer.json +1 -1
  261. package/l1-contracts/out/IEmpire.sol/IEmperor.json +1 -1
  262. package/l1-contracts/out/IEmpire.sol/IEmpire.json +1 -1
  263. package/l1-contracts/out/IFeeJuicePortal.sol/IFeeJuicePortal.json +1 -1
  264. package/l1-contracts/out/IFlushRewarder.sol/IFlushRewarder.json +1 -1
  265. package/l1-contracts/out/IGovernance.sol/IGovernance.json +1 -1
  266. package/l1-contracts/out/IGovernanceProposer.sol/IGovernanceProposer.json +1 -1
  267. package/l1-contracts/out/IInbox.sol/IInbox.json +1 -1
  268. package/l1-contracts/out/IInstance.sol/IInstance.json +1 -1
  269. package/l1-contracts/out/IMintableERC20.sol/IMintableERC20.json +1 -1
  270. package/l1-contracts/out/IOutbox.sol/IOutbox.json +1 -1
  271. package/l1-contracts/out/IPayload.sol/IPayload.json +1 -1
  272. package/l1-contracts/out/IProposerPayload.sol/IProposerPayload.json +1 -1
  273. package/l1-contracts/out/IRegistry.sol/IHaveVersion.json +1 -1
  274. package/l1-contracts/out/IRegistry.sol/IRegistry.json +1 -1
  275. package/l1-contracts/out/IRewardDistributor.sol/IRewardDistributor.json +1 -1
  276. package/l1-contracts/out/IRollup.sol/IRollup.json +1 -1
  277. package/l1-contracts/out/IRollup.sol/IRollupCore.json +1 -1
  278. package/l1-contracts/out/IRootRegistry.sol/IRootRegistry.json +1 -1
  279. package/l1-contracts/out/ISequencerRewardCalculator.sol/ISequencerRewardCalculator.json +1 -0
  280. package/l1-contracts/out/ISlasher.sol/ISlasher.json +1 -1
  281. package/l1-contracts/out/IStaking.sol/IStaking.json +1 -1
  282. package/l1-contracts/out/IStaking.sol/IStakingCore.json +1 -1
  283. package/l1-contracts/out/IValidatorSelection.sol/IValidatorSelection.json +1 -1
  284. package/l1-contracts/out/IValidatorSelection.sol/IValidatorSelectionCore.json +1 -1
  285. package/l1-contracts/out/IVerifier.sol/IVerifier.json +1 -1
  286. package/l1-contracts/out/Inbox.sol/Inbox.json +1 -1
  287. package/l1-contracts/out/InputsExtractor.sol/InputsExtractor.json +1 -1
  288. package/l1-contracts/out/InvalidateLib.sol/InvalidateLib.json +1 -1
  289. package/l1-contracts/out/MerkleLib.sol/MerkleLib.json +1 -1
  290. package/l1-contracts/out/MockERC20.sol/MockERC20.json +1 -1
  291. package/l1-contracts/out/MockERC721.sol/MockERC721.json +1 -1
  292. package/l1-contracts/out/MockFeeJuicePortal.sol/MockFeeJuicePortal.json +1 -1
  293. package/l1-contracts/out/MockVerifier.sol/MockVerifier.json +1 -1
  294. package/l1-contracts/out/MockZKPassportVerifier.sol/IZKPassportVerifier.json +1 -1
  295. package/l1-contracts/out/MockZKPassportVerifier.sol/MockZKPassportVerifier.json +1 -1
  296. package/l1-contracts/out/MultiAdder.sol/IMultiAdder.json +1 -1
  297. package/l1-contracts/out/MultiAdder.sol/MultiAdder.json +1 -1
  298. package/l1-contracts/out/Outbox.sol/Outbox.json +1 -1
  299. package/l1-contracts/out/OuterCount8.sol/HonkVerifier.json +1 -1
  300. package/l1-contracts/out/Proposal.sol/CompressedProposalLib.json +1 -1
  301. package/l1-contracts/out/ProposalLib.sol/ProposalLib.json +1 -1
  302. package/l1-contracts/out/ProposeLib.sol/ProposeLib.json +1 -1
  303. package/l1-contracts/out/ProposedHeaderLib.sol/ProposedHeaderLib.json +1 -1
  304. package/l1-contracts/out/RegisterNewRollupVersionPayload.sol/RegisterNewRollupVersionPayload.json +1 -1
  305. package/l1-contracts/out/Registry.sol/Registry.json +1 -1
  306. package/l1-contracts/out/RewardBooster.sol/IBooster.json +1 -1
  307. package/l1-contracts/out/RewardBooster.sol/IBoosterCore.json +1 -1
  308. package/l1-contracts/out/RewardBooster.sol/RewardBooster.json +1 -1
  309. package/l1-contracts/out/RewardDistributor.sol/RewardDistributor.json +1 -1
  310. package/l1-contracts/out/RewardExtLib.sol/RewardExtLib.json +1 -1
  311. package/l1-contracts/out/RewardLib.sol/BpsLib.json +1 -1
  312. package/l1-contracts/out/RewardLib.sol/RewardLib.json +1 -1
  313. package/l1-contracts/out/Rollup.sol/Rollup.json +1 -1
  314. package/l1-contracts/out/RollupConfiguration.sol/IRollupConfiguration.json +1 -1
  315. package/l1-contracts/out/RollupConfiguration.sol/RollupConfiguration.json +1 -1
  316. package/l1-contracts/out/RollupCore.sol/RollupCore.json +1 -1
  317. package/l1-contracts/out/RollupOperationsExtLib.sol/RollupOperationsExtLib.json +1 -1
  318. package/l1-contracts/out/STFLib.sol/STFLib.json +1 -1
  319. package/l1-contracts/out/SampleLib.sol/SampleLib.json +1 -1
  320. package/l1-contracts/out/SequencerRewardCalculatorLib.sol/SequencerRewardCalculatorLib.json +1 -0
  321. package/l1-contracts/out/SignatureLib.sol/SignatureLib.json +1 -1
  322. package/l1-contracts/out/SlashPayload.sol/SlashPayload.json +1 -1
  323. package/l1-contracts/out/SlashPayloadCloneable.sol/SlashPayloadCloneable.json +1 -1
  324. package/l1-contracts/out/SlashPayloadLib.sol/SlashPayloadLib.json +1 -1
  325. package/l1-contracts/out/SlashRoundLib.sol/CompressedSlashRoundMath.json +1 -1
  326. package/l1-contracts/out/Slasher.sol/Slasher.json +1 -1
  327. package/l1-contracts/out/SlasherDeploymentExtLib.sol/SlasherDeploymentExtLib.json +1 -1
  328. package/l1-contracts/out/SlashingProposer.sol/SlashingProposer.json +1 -1
  329. package/l1-contracts/out/StakingAssetHandler.sol/IStakingAssetHandler.json +1 -1
  330. package/l1-contracts/out/StakingAssetHandler.sol/StakingAssetHandler.json +1 -1
  331. package/l1-contracts/out/StakingLib.sol/StakingLib.json +1 -1
  332. package/l1-contracts/out/StakingQueue.sol/StakingQueueLib.json +1 -1
  333. package/l1-contracts/out/StakingQueueConfig.sol/StakingQueueConfigLib.json +1 -1
  334. package/l1-contracts/out/StdError.sol/stdError.json +1 -1
  335. package/l1-contracts/out/TestERC20.sol/TestERC20.json +1 -1
  336. package/l1-contracts/out/TestPayloads.sol/CallAssetPayload.json +1 -1
  337. package/l1-contracts/out/TestPayloads.sol/CallRevertingPayload.json +1 -1
  338. package/l1-contracts/out/TestPayloads.sol/EmptyPayload.json +1 -1
  339. package/l1-contracts/out/TestPayloads.sol/FakeRollup.json +1 -1
  340. package/l1-contracts/out/TestPayloads.sol/RevertingCall.json +1 -1
  341. package/l1-contracts/out/TestPayloads.sol/UpgradePayload.json +1 -1
  342. package/l1-contracts/out/TimeLib.sol/TimeLib.json +1 -1
  343. package/l1-contracts/out/Tips.sol/ChainTipsLib.json +1 -1
  344. package/l1-contracts/out/ValidatorOperationsExtLib.sol/ValidatorOperationsExtLib.json +1 -1
  345. package/l1-contracts/out/ValidatorSelectionLib.sol/ValidatorSelectionLib.json +1 -1
  346. package/l1-contracts/out/ZKPassportHelper.sol/ZKPassportHelper.json +1 -1
  347. package/l1-contracts/out/ZKPassportRootVerifier.sol/ZKPassportRootVerifier.json +1 -1
  348. package/l1-contracts/out/ZKPassportSubVerifier.sol/ZKPassportSubVerifier.json +1 -1
  349. package/l1-contracts/out/build-info/4cb7b5442b848dcc.json +1 -0
  350. package/l1-contracts/out/generated/HonkVerifier.sol/HonkVerifier.json +1 -1
  351. package/l1-contracts/out/libraries/Errors.sol/Errors.json +1 -1
  352. package/l1-contracts/out/rollup/BlobLib.sol/BlobLib.json +1 -1
  353. package/l1-contracts/out/src/ZKPassportHelper.sol/ZKPassportHelper.json +1 -1
  354. package/l1-contracts/out/src/ZKPassportRootVerifier.sol/ZKPassportRootVerifier.json +1 -1
  355. package/l1-contracts/out/src/ZKPassportSubVerifier.sol/ZKPassportSubVerifier.json +1 -1
  356. package/l1-contracts/script/deploy/RollupConfiguration.sol +5 -19
  357. package/l1-contracts/scripts/network-defaults.json +1 -2
  358. package/l1-contracts/src/core/Rollup.sol +18 -12
  359. package/l1-contracts/src/core/RollupCore.sol +14 -27
  360. package/l1-contracts/src/core/interfaces/IRollup.sol +7 -11
  361. package/l1-contracts/src/core/interfaces/ISequencerRewardCalculator.sol +39 -0
  362. package/l1-contracts/src/core/interfaces/IValidatorSelection.sol +0 -2
  363. package/l1-contracts/src/core/libraries/Errors.sol +3 -6
  364. package/l1-contracts/src/core/libraries/rollup/BlobLib.sol +16 -6
  365. package/l1-contracts/src/core/libraries/rollup/EpochProofExtLib.sol +2 -7
  366. package/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol +4 -12
  367. package/l1-contracts/src/core/libraries/rollup/RewardExtLib.sol +30 -12
  368. package/l1-contracts/src/core/libraries/rollup/RewardLib.sol +187 -250
  369. package/l1-contracts/src/core/libraries/rollup/SequencerRewardCalculatorLib.sol +110 -0
  370. package/l1-contracts/src/core/libraries/rollup/ValidatorSelectionLib.sol +2 -4
  371. package/package.json +1 -1
  372. package/l1-contracts/out/RewardLib.sol/IATP.json +0 -1
  373. package/l1-contracts/out/RewardLib.sol/IATPStaker.json +0 -1
  374. package/l1-contracts/out/build-info/f88e638ee47a1ead.json +0 -1
@@ -1 +1 @@
1
- {"abi":[{"type":"constructor","inputs":[{"name":"_asset","type":"address","internalType":"contract IERC20"},{"name":"_governanceProposer","type":"address","internalType":"address"},{"name":"_beneficiary","type":"address","internalType":"address"},{"name":"_configuration","type":"tuple","internalType":"struct Configuration","components":[{"name":"proposeConfig","type":"tuple","internalType":"struct ProposeWithLockConfiguration","components":[{"name":"lockDelay","type":"uint256","internalType":"Timestamp"},{"name":"lockAmount","type":"uint256","internalType":"uint256"}]},{"name":"votingDelay","type":"uint256","internalType":"Timestamp"},{"name":"votingDuration","type":"uint256","internalType":"Timestamp"},{"name":"executionDelay","type":"uint256","internalType":"Timestamp"},{"name":"gracePeriod","type":"uint256","internalType":"Timestamp"},{"name":"quorum","type":"uint256","internalType":"uint256"},{"name":"requiredYeaMargin","type":"uint256","internalType":"uint256"},{"name":"minimumVotes","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"ASSET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"addBeneficiary","inputs":[{"name":"_beneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"_beneficiary","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dropProposal","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"execute","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeWithdraw","inputs":[{"name":"_withdrawalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getBallot","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Ballot","components":[{"name":"yea","type":"uint256","internalType":"uint256"},{"name":"nay","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getConfiguration","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Configuration","components":[{"name":"proposeConfig","type":"tuple","internalType":"struct ProposeWithLockConfiguration","components":[{"name":"lockDelay","type":"uint256","internalType":"Timestamp"},{"name":"lockAmount","type":"uint256","internalType":"uint256"}]},{"name":"votingDelay","type":"uint256","internalType":"Timestamp"},{"name":"votingDuration","type":"uint256","internalType":"Timestamp"},{"name":"executionDelay","type":"uint256","internalType":"Timestamp"},{"name":"gracePeriod","type":"uint256","internalType":"Timestamp"},{"name":"quorum","type":"uint256","internalType":"uint256"},{"name":"requiredYeaMargin","type":"uint256","internalType":"uint256"},{"name":"minimumVotes","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getProposal","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Proposal","components":[{"name":"config","type":"tuple","internalType":"struct ProposalConfiguration","components":[{"name":"votingDelay","type":"uint256","internalType":"Timestamp"},{"name":"votingDuration","type":"uint256","internalType":"Timestamp"},{"name":"executionDelay","type":"uint256","internalType":"Timestamp"},{"name":"gracePeriod","type":"uint256","internalType":"Timestamp"},{"name":"quorum","type":"uint256","internalType":"uint256"},{"name":"requiredYeaMargin","type":"uint256","internalType":"uint256"},{"name":"minimumVotes","type":"uint256","internalType":"uint256"}]},{"name":"cachedState","type":"uint8","internalType":"enum ProposalState"},{"name":"payload","type":"address","internalType":"contract IPayload"},{"name":"proposer","type":"address","internalType":"address"},{"name":"creation","type":"uint256","internalType":"Timestamp"},{"name":"summedBallot","type":"tuple","internalType":"struct Ballot","components":[{"name":"yea","type":"uint256","internalType":"uint256"},{"name":"nay","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"view"},{"type":"function","name":"getProposalState","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint8","internalType":"enum ProposalState"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawal","inputs":[{"name":"_withdrawalId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Withdrawal","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"unlocksAt","type":"uint256","internalType":"Timestamp"},{"name":"recipient","type":"address","internalType":"address"},{"name":"claimed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"governanceProposer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initiateWithdraw","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"isAllBeneficiariesAllowed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedInGovernance","inputs":[{"name":"_beneficiary","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"openFloodgates","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"powerAt","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_ts","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"powerNow","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proposalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"propose","inputs":[{"name":"_proposal","type":"address","internalType":"contract IPayload"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"proposeWithLock","inputs":[{"name":"_proposal","type":"address","internalType":"contract IPayload"},{"name":"_to","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"totalPowerAt","inputs":[{"name":"_ts","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalPowerNow","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateConfiguration","inputs":[{"name":"_configuration","type":"tuple","internalType":"struct Configuration","components":[{"name":"proposeConfig","type":"tuple","internalType":"struct ProposeWithLockConfiguration","components":[{"name":"lockDelay","type":"uint256","internalType":"Timestamp"},{"name":"lockAmount","type":"uint256","internalType":"uint256"}]},{"name":"votingDelay","type":"uint256","internalType":"Timestamp"},{"name":"votingDuration","type":"uint256","internalType":"Timestamp"},{"name":"executionDelay","type":"uint256","internalType":"Timestamp"},{"name":"gracePeriod","type":"uint256","internalType":"Timestamp"},{"name":"quorum","type":"uint256","internalType":"uint256"},{"name":"requiredYeaMargin","type":"uint256","internalType":"uint256"},{"name":"minimumVotes","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateGovernanceProposer","inputs":[{"name":"_governanceProposer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vote","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"BeneficiaryAdded","inputs":[{"name":"beneficiary","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ConfigurationUpdated","inputs":[{"name":"time","type":"uint256","indexed":true,"internalType":"Timestamp"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"onBehalfOf","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FloodGatesOpened","inputs":[],"anonymous":false},{"type":"event","name":"GovernanceProposerUpdated","inputs":[{"name":"governanceProposer","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProposalDropped","inputs":[{"name":"proposalId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProposalExecuted","inputs":[{"name":"proposalId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Proposed","inputs":[{"name":"proposalId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"proposal","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VoteCast","inputs":[{"name":"proposalId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"voter","type":"address","indexed":true,"internalType":"address"},{"name":"support","type":"bool","indexed":false,"internalType":"bool"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawFinalized","inputs":[{"name":"withdrawalId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawInitiated","inputs":[{"name":"withdrawalId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"Governance__CallFailed","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CallerCannotBeSelf","inputs":[]},{"type":"error","name":"Governance__CallerNotGovernanceProposer","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"governanceProposer","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CallerNotSelf","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"self","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CannotCallAsset","inputs":[]},{"type":"error","name":"Governance__CannotWithdrawToAddressZero","inputs":[]},{"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"have","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__CheckpointedUintLib__NotInPast","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__InvalidMinimumVotes","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__LockAmountTooBig","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__LockAmountTooSmall","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__QuorumTooBig","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__QuorumTooSmall","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__RequiredYeaMarginTooBig","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__TimeTooBig","inputs":[{"name":"name","type":"string","internalType":"string"}]},{"type":"error","name":"Governance__ConfigurationLib__TimeTooSmall","inputs":[{"name":"name","type":"string","internalType":"string"}]},{"type":"error","name":"Governance__DepositNotAllowed","inputs":[]},{"type":"error","name":"Governance__GovernanceProposerCannotBeSelf","inputs":[]},{"type":"error","name":"Governance__InsufficientPower","inputs":[{"name":"voter","type":"address","internalType":"address"},{"name":"have","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__ProposalAlreadyDropped","inputs":[]},{"type":"error","name":"Governance__ProposalCannotBeDropped","inputs":[]},{"type":"error","name":"Governance__ProposalDoesNotExists","inputs":[{"name":"proposalId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__ProposalNotActive","inputs":[]},{"type":"error","name":"Governance__ProposalNotExecutable","inputs":[]},{"type":"error","name":"Governance__WithdrawalAlreadyClaimed","inputs":[]},{"type":"error","name":"Governance__WithdrawalNotInitiated","inputs":[]},{"type":"error","name":"Governance__WithdrawalNotUnlockedYet","inputs":[{"name":"currentTime","type":"uint256","internalType":"Timestamp"},{"name":"unlocksAt","type":"uint256","internalType":"Timestamp"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a060405234801561000f575f5ffd5b50604051613ea1380380613ea183398101604081905261002e91610a06565b6001600160a01b038481166080525f80546001600160a01b03191691851691909117905561005b81610223565b61006481610608565b805160078054602084015160408501516060860151608087015160a088015163ffffffff9788166001600160401b0319909616959095176401000000009488169490940293909317600160401b600160801b031916680100000000000000009287169290920263ffffffff60601b1916919091176c010000000000000000000000009186168202176001600160801b0316600160801b6001600160401b03938416026001600160c01b031617600160c01b9290931682029290921790925560c08401516008805460e0870151610100909701516001600160601b039384166001600160c01b031990921691909117929096169092021763ffffffff60c01b191693909216029190911790556001600160a01b0382166101b7576002805460ff191660011790556040517f8d67419becc56dd5daf39212ee5e2cb8d9c40cf1184863a77318db110bfc77d9905f90a161021a565b6002805460ff199081169091556001600160a01b0383165f818152600160208181526040928390208054909516909117909355519081527fc3e089fc6227e049d0e41c3d7a383d57efe69c1955c5752f7e5a9b5f1f113020910160405180910390a15b50505050610af8565b60018160a0015110156102495760405163245ca84960e11b815260040160405180910390fd5b670de0b6b3a76400008160a00151111561027657604051637a9fd76760e11b815260040160405180910390fd5b670de0b6b3a76400008160c0015111156102a3576040516323bdbbbb60e01b815260040160405180910390fd5b60018160e0015110156102c95760405163505c925360e11b815260040160405180910390fd5b60e08101516001600160601b0310156102f55760405163505c925360e11b815260040160405180910390fd5b8051602001516002111561031c5760405163ec4abc2f60e01b815260040160405180910390fd5b8051602001516001600160601b03101561034957604051635590b7bd60e11b815260040160405180910390fd5b805151603c111561038e576040516302b2633f60e21b81526020600482015260096024820152684c6f636b44656c617960b81b60448201526064015b60405180910390fd5b80515163ffffffff10156103d157604051637ac6b2f960e11b81526020600482015260096024820152684c6f636b44656c617960b81b6044820152606401610385565b6020810151603c1115610415576040516302b2633f60e21b815260206004820152600b60248201526a566f74696e6744656c617960a81b6044820152606401610385565b60208101516276a700101561045b57604051637ac6b2f960e11b815260206004820152600b60248201526a566f74696e6744656c617960a81b6044820152606401610385565b6040810151603c11156104a2576040516302b2633f60e21b815260206004820152600e60248201526d2b37ba34b733a23ab930ba34b7b760911b6044820152606401610385565b60408101516276a70010156104eb57604051637ac6b2f960e11b815260206004820152600e60248201526d2b37ba34b733a23ab930ba34b7b760911b6044820152606401610385565b6060810151603c1115610532576040516302b2633f60e21b815260206004820152600e60248201526d457865637574696f6e44656c617960901b6044820152606401610385565b60608101516276a700101561057b57604051637ac6b2f960e11b815260206004820152600e60248201526d457865637574696f6e44656c617960901b6044820152606401610385565b6080810151603c11156105bf576040516302b2633f60e21b815260206004820152600b60248201526a11dc9858d954195c9a5bd960aa1b6044820152606401610385565b60808101516276a700101561060557604051637ac6b2f960e11b815260206004820152600b60248201526a11dc9858d954195c9a5bd960aa1b6044820152606401610385565b50565b60408051610120810182525f8082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201528251909101516001600160601b0310156106aa5760405162461bcd60e51b815260206004820152601960248201527f6c6f636b416d6f756e7420657863656564732075696e743936000000000000006044820152606401610385565b60e08201516001600160601b0310156107055760405162461bcd60e51b815260206004820152601b60248201527f6d696e696d756d566f74657320657863656564732075696e74393600000000006044820152606401610385565b60a08201516001600160401b0310156107605760405162461bcd60e51b815260206004820152601560248201527f71756f72756d20657863656564732075696e74363400000000000000000000006044820152606401610385565b60c08201516001600160401b0310156107bb5760405162461bcd60e51b815260206004820181905260248201527f72657175697265645965614d617267696e20657863656564732075696e7436346044820152606401610385565b6040518061012001604052806107da84602001516108e360201b60201c565b63ffffffff1681526020016107f884604001516108e360201b60201c565b63ffffffff16815260200161081684606001516108e360201b60201c565b63ffffffff16815260200161083484608001516108e360201b60201c565b63ffffffff1681526020016108528460a001516108f360201b60201c565b6001600160401b031681526020016108738460c001516108f360201b60201c565b6001600160401b031681526020016108948460e0015161092c60201b60201c565b6001600160601b031681526020016108b8845f01516020015161092c60201b60201c565b6001600160601b031681528351516020909101906108d5906108e3565b63ffffffff16905292915050565b5f6108ed8261095f565b92915050565b5f6001600160401b0382111561092857604080516306dfcc6560e41b8152600481019190915260248101839052604401610385565b5090565b5f6001600160601b03821115610928576040516306dfcc6560e41b81526060600482015260248101839052604401610385565b5f63ffffffff821115610928576040516306dfcc6560e41b81526020600482015260248101839052604401610385565b6001600160a01b0381168114610605575f5ffd5b60405161010081016001600160401b03811182821017156109d257634e487b7160e01b5f52604160045260245ffd5b60405290565b604080519081016001600160401b03811182821017156109d257634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f848603610180811215610a1b575f5ffd5b8551610a268161098f565b6020870151909550610a378161098f565b6040870151909450610a488161098f565b9250605f1901610120811215610a5c575f5ffd5b610a646109a3565b6040821215610a71575f5ffd5b610a796109d8565b60608881015182526080808a015160208085019190915292845260a0808b01519385019390935260c0808b0151604086015260e0808c0151938601939093526101008b0151918501919091526101208a015192840192909252610140890151918301919091526101609097015196810196909652509295919450929150565b60805161337c610b255f395f8181610223015281816106e30152818161087601526111e2015261337c5ff3fe608060405234801561000f575f5ffd5b5060043610610174575f3560e01c806371706cbe116100d5578063c4bf093611610084578063c4bf093614610452578063c7f758a814610465578063da35c66414610485578063e1d746441461048e578063edb884e9146104a1578063fe0d94c1146104b4578063fe7f0e8b146104c7575f5ffd5b806371706cbe1461030e5780637f514e78146103175780638a4fb16a1461031f5780639080936f146103e25780639efbc2df14610402578063b907c0ea1461042d578063c3a5051514610440575f5ffd5b80633d24e054116101315780633d24e0541461020357806347e7ef241461020b5780634800d97f1461021e57806355ead34a146102525780635926651d146102725780636a18ff7a146102855780636bd50cef14610298575f5ffd5b80630126795114610178578063083b42461461019e5780630928d152146101b357806330eb4bdd146101c65780633a00b7ee146101d95780633b8f880d146101f0575b5f5ffd5b61018b610186366004612cac565b6104da565b6040519081526020015b60405180910390f35b6101b16101ac366004612cc7565b610531565b005b6101b16101c1366004612cc7565b6105ee565b61018b6101d4366004612cde565b610711565b60025460ff165b6040519015158152602001610195565b61018b6101fe366004612d15565b61077e565b6101b16107a6565b6101b1610219366004612d15565b610803565b6102457f000000000000000000000000000000000000000000000000000000000000000081565b6040516101959190612d3f565b610265610260366004612d53565b610914565b6040516101959190612d76565b6101b1610280366004612cac565b61094f565b6101b1610293366004612d8d565b6109d4565b6102a0610b80565b60405161019591905f610120820190508251805183526020810151602084015250602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e083015161010083015292915050565b61018b600b5481565b61018b610c28565b6103a461032d366004612cc7565b604080516080810182525f808252602082018190529181018290526060810191909152505f90815260066020908152604091829020825160808101845281548152600182015492810192909252600201546001600160a01b03811692820192909252600160a01b90910460ff161515606082015290565b604051610195919081518152602080830151908201526040808301516001600160a01b03169082015260609182015115159181019190915260800190565b6103f56103f0366004612cc7565b610c33565b6040516101959190612dfb565b6101e0610410366004612cac565b6001600160a01b03165f9081526001602052604090205460ff1690565b6101b161043b366004612cac565b610dbf565b5f54610245906001600160a01b031681565b61018b610460366004612d15565b610e55565b610478610473366004612cc7565b610e6b565b6040516101959190612e09565b61018b600a5481565b61018b61049c366004612cac565b610f83565b6101b16104af366004612f3f565b610fa3565b6101b16104c2366004612cc7565b611107565b61018b6104d5366004612cc7565b61135a565b5f805433906001600160a01b0316818114610513576040516307aa341360e31b815260040161050a929190612fe5565b60405180910390fd5b50505f5461052b9083906001600160a01b0316611366565b92915050565b5f8181526003602052604090206007600182015460ff16600881111561055957610559612dc7565b0361057757604051630595c07760e51b815260040160405180910390fd5b600661058283610c33565b600881111561059357610593612dc7565b146105b1576040516308adbf2160e01b815260040160405180910390fd5b60018101805460ff1916600717905560405182907fbe0d6497a32a201ada887344ab9138dacd7d057f44cd070946394838a0960276905f90a25050565b5f81815260066020526040902060028101546001600160a01b031661062557604051626fa8b560e61b815260040160405180910390fd5b6002810154600160a01b900460ff161561065257604051632bbd3b8d60e11b815260040160405180910390fd5b610660428260010154111590565b6001820154429161068d57604051630d02d71b60e21b81526004810192909252602482015260440161050a565b505060028101805460ff60a01b1916600160a01b17905560405182907fcebf724a837e6c3b3bf571f17587621a5b8b13a5c49e854ff99f2700a9fc3666905f90a26002810154815461070d916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116929116906115d5565b5050565b6040805180820182525f8082526020918201819052825180840190935260085463ffffffff600160c01b8204168452600160601b90046001600160601b0316918301919091529061076b33848360200151845f0151611639565b506107768430611366565b949350505050565b6001600160a01b0382165f90815260056020526040812061079f908361176b565b9392505050565b33308181146107ca5760405163f18e42a160e01b815260040161050a929190612fe5565b50506002805460ff191660011790556040517f8d67419becc56dd5daf39212ee5e2cb8d9c40cf1184863a77318db110bfc77d9905f90a1565b81303303610824576040516306fdffd960e51b815260040160405180910390fd5b60025460ff168061084c57506001600160a01b0381165f9081526001602052604090205460ff165b61086957604051636c26e61960e01b815260040160405180910390fd5b61089e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856117b5565b6001600160a01b0383165f9081526005602052604090206108bf90836117f4565b506108cd90506009836117f4565b50506040518281526001600160a01b0384169033907f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629060200160405180910390a3505050565b6040805180820182525f8082526020808301829052858252600481528382206001600160a01b03861683529052919091205461079f9061186e565b33308181146109735760405163f18e42a160e01b815260040161050a929190612fe5565b50506001600160a01b0381165f90815260016020819052604091829020805460ff19169091179055517fc3e089fc6227e049d0e41c3d7a383d57efe69c1955c5752f7e5a9b5f1f113020906109c9908390612d3f565b60405180910390a150565b5f6109de84610c33565b905060018160088111156109f4576109f4612dc7565b14610a1257604051632d85b5cb60e01b815260040160405180910390fd5b5f848152600360205260408120610a4090610a2c906118ae565b335f9081526005602052604090209061176b565b5f868152600460209081526040808320338452909152812054919250610a668260801c90565b610a79906001600160801b038416613013565b610a839084613026565b905033818781811115610ac257604051631186c4ab60e31b81526001600160a01b0390931660048401526024830191909152604482015260640161050a565b5050505f8781526003602052604090208515610b0a57610ae283886118d3565b5f898152600460209081526040808320338452909152902055610b058188611923565b610b37565b610b14838861193e565b5f898152600460209081526040808320338452909152902055610b37818861197d565b6040805187151581526020810189905233918a917fcbdf6214089cba887ecbf35a0b6a734589959c9763342c756bb2a80ca2bc9f6e910160405180910390a35050505050505050565b610b88612bb5565b604080516101208101825260075463ffffffff8082168352600160201b820481166020840152600160401b8204811693830193909352600160601b808204841660608401526001600160401b03600160801b830481166080850152600160c01b928390041660a08401526008546001600160601b0380821660c086015291810490911660e084015204909116610100820152610c239061198c565b905090565b5f610c236009611a4c565b5f600a5482108290610c5b576040516320c68f5560e21b815260040161050a91815260200190565b505f8281526003602052604090206005600182015460ff166008811115610c8457610c84612dc7565b1480610ca857506007600182015460ff166008811115610ca657610ca6612dc7565b145b15610cba576001015460ff1692915050565b80545f546001600160a01b03908116911614801590610ce3575080546001600160a01b03163014155b15610cf15750600692915050565b42610d0481610cff846118ae565b101590565b15610d1257505f9392505050565b610d1f81610cff84611a65565b15610d2e575060019392505050565b5f610d43610d3b846118ae565b60099061176b565b90505f610d508483611a89565b5090505f816002811115610d6657610d66612dc7565b14610d775750600495945050505050565b610d8483610cff86611bfe565b15610d955750600295945050505050565b610da283610cff86611c22565b15610db35750600395945050505050565b50600895945050505050565b3330818114610de35760405163f18e42a160e01b815260040161050a929190612fe5565b5050306001600160a01b03821603610e0e576040516304eb9a0360e31b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917f58b9023fe926532b1c6a397a00102fcce3ac81725a232d9d235104cd1a28e43291a250565b5f61079f338484610e666007611c46565b611639565b610e73612c05565b5f8281526003602090815260409182902082516101808101845281546001600160a01b0381168252600160a01b90046001600160601b031692810192909252600181015461052b9383019060ff166008811115610ed257610ed2612dc7565b6008811115610ee357610ee3612dc7565b8152600182015461010080820463ffffffff9081166020850152600160281b830481166040850152600160481b830481166060850152600160681b830481166080850152600160881b83041660a0840152600160a81b9091046001600160401b0390811660c0840152600284015460e08401526003909301546001600160a01b03811691830191909152600160a01b900490911661012090910152611c83565b6001600160a01b0381165f90815260056020526040812061052b90611a4c565b3330818114610fc75760405163f18e42a160e01b815260040161050a929190612fe5565b5050610fd281611d7b565b610fdb81612027565b80516007805460208401516040808601516060870151608088015160a089015163ffffffff98891667ffffffffffffffff1990971696909617600160201b958916959095029490941767ffffffffffffffff60401b1916600160401b9288169290920263ffffffff60601b191691909117600160601b9187168202176001600160801b0316600160801b6001600160401b03948516026001600160c01b031617600160c01b9390941683029390931790935560c08501516008805460e0880151610100909801516001600160601b039384166001600160c01b031990921691909117929097169093021763ffffffff60c01b1916949093169092029290921790555142907f7d096a764e5ea306d0946e3a05ca9ffd9ea0af82aecf12cf8eee26b2485f9a0c905f90a250565b5f61111182610c33565b9050600381600881111561112757611127612dc7565b146111455760405163b6ae35c160e01b815260040160405180910390fd5b5f82815260036020819052604080832060018101805460ff1916600517905591820154815163504d080b60e01b815291519293926001600160a01b039091169163504d080b91600480830192869291908290030181865afa1580156111ac573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111d39190810190613039565b90505f5b8151811015611329577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682828151811061121c5761121c6131a2565b60200260200101515f01516001600160a01b03160361124e576040516304f6c78960e21b815260040160405180910390fd5b5f828281518110611261576112616131a2565b60200260200101515f01516001600160a01b0316838381518110611287576112876131a2565b6020026020010151602001516040516112a091906131b6565b5f604051808303815f865af19150503d805f81146112d9576040519150601f19603f3d011682016040523d82523d5f602084013e6112de565b606091505b50509050808383815181106112f5576112f56131a2565b60200260200101515f01519061131f57604051633cb8c30160e01b815260040161050a9190612d3f565b50506001016111d7565b5060405184907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f905f90a250505050565b5f61052b60098361176b565b600a80545f9182919082611379836131cc565b90915550604080516101208101825260075463ffffffff8082168352600160201b820481166020840152600160401b8204811693830193909352600160601b808204841660608401526001600160401b03600160801b830481166080850152600160c01b928390041660a08401526008546001600160601b0380821660c086015291810490911660e084015204909116610100820152909150611421908490869042906122c6565b5f828152600360209081526040918290208351918401516001600160601b0316600160a01b026001600160a01b039092169190911781559082015160018083018054909160ff199091169083600881111561147e5761147e612dc7565b02179055506060820151600182018054608085015160a086015160c087015160e0880151610100808a01516001600160401b03908116600160a81b0267ffffffffffffffff60a81b1963ffffffff948516600160881b02166bffffffffffffffffffffffff60881b19958516600160681b0263ffffffff60681b19978616600160481b029790971667ffffffffffffffff60481b19988616600160281b0268ffffffff00000000001996909c169094029490941668ffffffffffffffff00199098169790971798909817949094169390931791909117161717905561012083015160028301556101408301516003909201805461016090940151909116600160a01b026001600160e01b03199093166001600160a01b0392831617929092179091556040519085169082907faa9a4d6243341331785569c732ffe9c81a3e9c2aafa58faab1afe4797668433f905f90a39392505050565b6040516001600160a01b0383811660248301526044820183905261163491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506123ef565b505050565b5f6001600160a01b038416611661576040516312c8cda160e01b815260040160405180910390fd5b6001600160a01b0385165f9081526005602052604090206116829084612452565b506116909050600984612452565b5050600b80545f91826116a2836131cc565b91905055905060405180608001604052808581526020016116c342866124ff565b81526001600160a01b0380881660208084018290525f6040948501819052868152600682528490208551815590850151600182015584840151600290910180546060909601511515600160a01b026001600160a81b031990961691909316179390931790555182907f35572b4263de54e794ffcb886cb01a64870892fe896854fd2ca93810d5c66f7e9061175a9088815260200190565b60405180910390a395945050505050565b5f61177582421190565b611792576040516334dcb7d760e21b815260040160405180910390fd5b6117a561179e8361250a565b849061253e565b6001600160e01b03169392505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526117ee9186918216906323b872dd90608401611602565b50505050565b5f5f5f611800856125ec565b9050835f0361181c576001600160e01b03169150819050611867565b5f61182685612623565b90506118466118344261250a565b61183e83856131e4565b889190612656565b5082905061185482826131e4565b6001600160e01b03918216955016925050505b9250929050565b604080518082019091525f808252602082015260405180604001604052806118968460801c90565b81526020016001600160801b0384165b905292915050565b60018101545f9061052b9063ffffffff6101008204811691600160281b9004166124ff565b5f5f6118df8460801c90565b90505f6118ec8483613013565b905061191a856118fb83612670565b6001600160801b0316608081901b6001600160801b0383161792915050565b95945050505050565b600282015461193290826118d3565b82600201819055505050565b5f6001600160801b038316816119548483613013565b905061191a8561196383612670565b6001600160801b03166001600160801b0319919091161790565b6002820154611932908261193e565b611994612bb5565b60408051610140810182526101008481015163ffffffff90811691830191825260e08601516001600160601b0316610120840152908252845181166020808401919091528501518116828401529184015190916060830191168152602001611a09846060015163ffffffff1663ffffffff1690565b815260200183608001516001600160401b031681526020018360a001516001600160401b031681526020018360c001516001600160601b03168152509050919050565b5f611a56826125ec565b6001600160e01b031692915050565b5f61052b611a72836118ae565b6001840154600160481b900463ffffffff166124ff565b81545f908190600160a01b90046001600160601b0316831015611ab15750600190505f611867565b5f611ae7848660010160159054906101000a90046001600160401b03166001600160401b0316670de0b6b3a764000060016126a3565b9050805f03611afe57600260019250925050611867565b83811115611b13576002809250925050611867565b5f5f611b1e876126e5565b90925090505f611b2e8383613013565b905083811015611b4957600160039550955050505050611867565b808303611b60575f60079550955050505050611867565b60038801545f90611b9d90611b8d90600160a01b90046001600160401b0316670de0b6b3a7640000613203565b6001600160401b03166002612712565b90505f611bb58383670de0b6b3a764000060016126a3565b905082811115611bd2576002600597509750505050505050611867565b808511611bec576001600897509750505050505050611867565b505f9960099950975050505050505050565b5f61052b611c0b83611a65565b6001840154600160681b900463ffffffff166124ff565b5f61052b611c2f83611bfe565b6001840154600160881b900463ffffffff166124ff565b80545f9063ffffffff80821691600160201b8104821691600160401b9091041661191a611c7d611c77600586613236565b846124ff565b826124ff565b611c8b612c05565b604080516101a08101909152608083015163ffffffff90811660c080840191825260a0860151831660e08501528501518392610100840191168152602001611ce08660e0015163ffffffff1663ffffffff1690565b81526020018561010001516001600160401b031681526020018561016001516001600160401b0316815260200185602001516001600160601b0316815250815260200183604001516008811115611d3957611d39612dc7565b81526101408401516001600160a01b039081166020830152845116604082015260608085015191019063ffffffff1681526020016118a684610120015161186e565b60018160a001511015611da15760405163245ca84960e11b815260040160405180910390fd5b670de0b6b3a76400008160a001511115611dce57604051637a9fd76760e11b815260040160405180910390fd5b670de0b6b3a76400008160c001511115611dfb576040516323bdbbbb60e01b815260040160405180910390fd5b60018160e001511015611e215760405163505c925360e11b815260040160405180910390fd5b60e08101516001600160601b031015611e4d5760405163505c925360e11b815260040160405180910390fd5b80516020015160021115611e745760405163ec4abc2f60e01b815260040160405180910390fd5b8051602001516001600160601b031015611ea157604051635590b7bd60e11b815260040160405180910390fd5b805151603c1115611ec5576040516302b2633f60e21b815260040161050a90613249565b80515163ffffffff1015611eec57604051637ac6b2f960e11b815260040161050a90613249565b6020810151603c1115611f12576040516302b2633f60e21b815260040161050a9061326c565b60208101516276a7001015611f3a57604051637ac6b2f960e11b815260040161050a9061326c565b6040810151603c1115611f60576040516302b2633f60e21b815260040161050a90613291565b60408101516276a7001015611f8857604051637ac6b2f960e11b815260040161050a90613291565b6060810151603c1115611fae576040516302b2633f60e21b815260040161050a906132b9565b60608101516276a7001015611fd657604051637ac6b2f960e11b815260040161050a906132b9565b6080810151603c1115611ffc576040516302b2633f60e21b815260040161050a906132e1565b60808101516276a700101561202457604051637ac6b2f960e11b815260040161050a906132e1565b50565b60408051610120810182525f8082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201528251909101516001600160601b0310156120c55760405162461bcd60e51b81526020600482015260196024820152783637b1b5a0b6b7bab73a1032bc31b2b2b239903ab4b73a1c9b60391b604482015260640161050a565b60e08201516001600160601b0310156121205760405162461bcd60e51b815260206004820152601b60248201527f6d696e696d756d566f74657320657863656564732075696e7439360000000000604482015260640161050a565b60a08201516001600160401b0310156121735760405162461bcd60e51b81526020600482015260156024820152741c5d5bdc9d5b48195e18d959591cc81d5a5b9d0d8d605a1b604482015260640161050a565b60c08201516001600160401b0310156121ce5760405162461bcd60e51b815260206004820181905260248201527f72657175697265645965614d617267696e20657863656564732075696e743634604482015260640161050a565b6040518061012001604052806121e78460200151612745565b63ffffffff1681526020016121ff8460400151612745565b63ffffffff1681526020016122178460600151612745565b63ffffffff16815260200161222f8460800151612745565b63ffffffff1681526020016122478460a0015161274f565b6001600160401b031681526020016122628460c0015161274f565b6001600160401b0316815260200161227d8460e00151612784565b6001600160601b0316815260200161229b845f015160200151612784565b6001600160601b031681526020016122b8845f01515f0151612745565b63ffffffff16905292915050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260408051610180810182526001600160a01b038716815260c08401516001600160601b031660208201529081015f815260200161236285612745565b63ffffffff168152602001835f015163ffffffff168152602001836020015163ffffffff168152602001836040015163ffffffff168152602001836060015163ffffffff16815260200183608001516001600160401b031681526020015f8152602001856001600160a01b031681526020018360a001516001600160401b03168152509050949350505050565b5f5f60205f8451602086015f885af18061240e576040513d5f823e3d81fd5b50505f513d91508115612425578060011415612432565b6001600160a01b0384163b155b156117ee5783604051635274afe760e01b815260040161050a9190612d3f565b5f5f5f61245e856125ec565b9050835f0361247a576001600160e01b03169150819050611867565b5f61248485612623565b90503382826001600160e01b0380821690831610156124d85760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b03918216602484015216604482015260640161050a565b5050506124f16124e74261250a565b61183e8385613306565b508290506118548282613306565b5f61079f8284613013565b5f63ffffffff82111561253a576040516306dfcc6560e41b8152602060048201526024810183905260440161050a565b5090565b81545f9081816005811115612598575f612557846127b7565b6125619085613026565b5f8881526020902090915081015463ffffffff908116908716101561258857809150612596565b612593816001613013565b92505b505b5f6125a587878585612909565b905080156125df576125c9876125bc600184613026565b5f91825260209091200190565b54600160201b90046001600160e01b03166125e1565b5f5b979650505050505050565b80545f90801561261b57612605836125bc600184613026565b54600160201b90046001600160e01b031661079f565b5f9392505050565b5f6001600160e01b0382111561253a576040516306dfcc6560e41b815260e060048201526024810183905260440161050a565b5f80612663858585612964565b915091505b935093915050565b5f6001600160801b0382111561253a576040516306dfcc6560e41b8152608060048201526024810183905260440161050a565b5f6126d06126b083612aa8565b80156126cb57505f84806126c6576126c6613222565b868809115b151590565b6126db868686612ad4565b61191a9190613013565b5f5f6126f5836002015460801c90565b915061270b83600201546001600160801b031690565b9050915091565b5f815f03612724576127246012612b8a565b81600184038161273657612736613222565b04600101831515029392505050565b5f61052b8261250a565b5f6001600160401b0382111561253a57604080516306dfcc6560e41b815260048101919091526024810183905260440161050a565b5f6001600160601b0382111561253a576040516306dfcc6560e41b8152606060048201526024810183905260440161050a565b5f600182116127c4575090565b816001600160801b82106127dd5760809190911c9060401b5b600160401b82106127f35760409190911c9060201b5b600160201b82106128095760209190911c9060101b5b62010000821061281e5760109190911c9060081b5b61010082106128325760089190911c9060041b5b601082106128455760049190911c9060021b5b600482106128515760011b5b600302600190811c9081858161286957612869613222565b048201901c9050600181858161288157612881613222565b048201901c9050600181858161289957612899613222565b048201901c905060018185816128b1576128b1613222565b048201901c905060018185816128c9576128c9613222565b048201901c905060018185816128e1576128e1613222565b048201901c90506129008185816128fa576128fa613222565b04821190565b90039392505050565b5f5b8183101561295c575f61291e8484612b9b565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561294857809250612956565b612953816001613013565b93505b5061290b565b509392505050565b82545f9081908015612a50575f612980876125bc600185613026565b805490915063ffffffff80821691600160201b90046001600160e01b03169088168211156129c157604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff16036129f457825463ffffffff16600160201b6001600160e01b03891602178355612a42565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061266892505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b029190931617920191909155905081612668565b5f6002826003811115612abd57612abd612dc7565b612ac79190613325565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f03612b0857838281612afe57612afe613222565b049250505061079f565b808411612b1f57612b1f6003851502601118612b8a565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b634e487b715f52806020526024601cfd5b5f612ba96002848418613236565b61079f90848416613013565b6040805161014081019091525f6101008201818152610120830191909152819081526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060c00160405280612c496040518060e001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f8152602001612c9360405180604001604052805f81526020015f81525090565b905290565b6001600160a01b0381168114612024575f5ffd5b5f60208284031215612cbc575f5ffd5b813561079f81612c98565b5f60208284031215612cd7575f5ffd5b5035919050565b5f5f60408385031215612cef575f5ffd5b8235612cfa81612c98565b91506020830135612d0a81612c98565b809150509250929050565b5f5f60408385031215612d26575f5ffd5b8235612d3181612c98565b946020939093013593505050565b6001600160a01b0391909116815260200190565b5f5f60408385031215612d64575f5ffd5b823591506020830135612d0a81612c98565b81518152602080830151908201526040810161052b565b5f5f5f60608486031215612d9f575f5ffd5b833592506020840135915060408401358015158114612dbc575f5ffd5b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b60098110612df757634e487b7160e01b5f52602160045260245ffd5b9052565b6020810161052b8284612ddb565b5f6101a0820190508251805183526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c0840152506020830151612e6660e0840182612ddb565b5060408301516001600160a01b03908116610100840152606084015116610120830152608083015161014083015260a0909201518051610160830152602001516101809091015290565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612ee757612ee7612eb0565b60405290565b604080519081016001600160401b0381118282101715612ee757612ee7612eb0565b604051601f8201601f191681016001600160401b0381118282101715612f3757612f37612eb0565b604052919050565b5f81830361012081128015612f52575f5ffd5b50612f5b612ec4565b6040821215612f68575f5ffd5b612f70612eed565b843581526020808601358183015290825260408086013591830191909152606080860135918301919091526080808601359183019190915260a0808601359183019190915260c0808601359183019190915260e080860135918301919091526101009094013593810193909352509092915050565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561052b5761052b612fff565b8181038181111561052b5761052b612fff565b5f60208284031215613049575f5ffd5b81516001600160401b0381111561305e575f5ffd5b8201601f8101841361306e575f5ffd5b80516001600160401b0381111561308757613087612eb0565b8060051b61309760208201612f0f565b918252602081840181019290810190878411156130b2575f5ffd5b6020850192505b838310156125e15782516001600160401b038111156130d6575f5ffd5b85016040818a03601f190112156130eb575f5ffd5b6130f3612eed565b602082015161310181612c98565b815260408201516001600160401b0381111561311b575f5ffd5b60208184010192505089601f830112613132575f5ffd5b81516001600160401b0381111561314b5761314b612eb0565b61315e601f8201601f1916602001612f0f565b8181528b6020838601011115613172575f5ffd5b8160208501602083015e5f60208383010152806020840152505080845250506020820191506020830192506130b9565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f600182016131dd576131dd612fff565b5060010190565b6001600160e01b03818116838216019081111561052b5761052b612fff565b6001600160401b03818116838216019081111561052b5761052b612fff565b634e487b7160e01b5f52601260045260245ffd5b5f8261324457613244613222565b500490565b6020808252600990820152684c6f636b44656c617960b81b604082015260600190565b6020808252600b908201526a566f74696e6744656c617960a81b604082015260600190565b6020808252600e908201526d2b37ba34b733a23ab930ba34b7b760911b604082015260600190565b6020808252600e908201526d457865637574696f6e44656c617960901b604082015260600190565b6020808252600b908201526a11dc9858d954195c9a5bd960aa1b604082015260600190565b6001600160e01b03828116828216039081111561052b5761052b612fff565b5f60ff83168061333757613337613222565b8060ff8416069150509291505056fea26469706673582212203c40d5b041cca34250ae8e34f6deccbba5e45d5de79bb8598438b8bf066ad5db64736f6c634300081e0033","sourceMap":"6395:26203:130:-:0;;;10190:586;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10311:14:130;;;;;10331:18;:40;;-1:-1:-1;;;;;;10331:40:130;;;;;;;;;;10378:28;:14;:26;:28::i;:::-;10428:51;10464:14;10428:35;:51::i;:::-;10412:67;;:13;:67;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10412:67:130;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;10412:67:130;;;;;;;;;-1:-1:-1;;;;10412:67:130;;;;;;;;;;;;-1:-1:-1;;;;;10412:67:130;-1:-1:-1;;;;;;;;10412:67:130;;;;-1:-1:-1;;;;;10412:67:130;;-1:-1:-1;;;10412:67:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10412:67:130;;;-1:-1:-1;;;;;;10412:67:130;;;;;;;;;;;;;;;-1:-1:-1;;;;10412:67:130;;;;;;;;;;;;-1:-1:-1;;;;;10490:26:130;;10486:286;;10526:38;:45;;-1:-1:-1;;10526:45:130;10567:4;10526:45;;;10584:18;;;;10526:38;;10584:18;10486:286;;;10623:38;:46;;-1:-1:-1;;10623:46:130;;;;;;-1:-1:-1;;;;;10677:38:130;;-1:-1:-1;10677:38:130;;;-1:-1:-1;10677:38:130;;;;;;;;;:45;;;;;;;;;;;10735:30;2936:51:182;;;10735:30:130;;2909:18:182;10735:30:130;;;;;;;10486:286;10190:586;;;;6395:26203;;2591:2409:144;630:1;2668:5;:12;;;:28;;2660:92;;;;-1:-1:-1;;;2660:92:144;;;;;;;;;;;;676:4;2766:5;:12;;;:28;;2758:90;;;;-1:-1:-1;;;2758:90:144;;;;;;;;;;;;739:4;2870:5;:23;;;:52;;2855:143;;;;-1:-1:-1;;;2855:143:144;;;;;;;;;;;;788:1;3013:5;:18;;;:33;;3005:102;;;;-1:-1:-1;;;3005:102:144;;;;;;;;;;;;3121:18;;;;-1:-1:-1;;;;;;3121:33:144;3113:102;;;;-1:-1:-1;;;3113:102:144;;;;;;;;;;;;3237:19;;:30;;;943:1;-1:-1:-1;3237:51:144;3222:131;;;;-1:-1:-1;;;3222:131:144;;;;;;;;;;;;3374:19;;:30;;;-1:-1:-1;;;;;;3374:51:144;3359:129;;;;-1:-1:-1;;;3359:129:144;;;;;;;;;;;;3811:19;;:29;1114:2;-1:-1:-1;938:44:180;3803:116:144;;;;-1:-1:-1;;;3803:116:144;;3200:2:182;3803:116:144;;;3182:21:182;3239:1;3219:18;;;3212:29;-1:-1:-1;;;3257:18:182;;;3250:39;3306:18;;3803:116:144;;;;;;;;;3940:19;;:29;3988:16;-1:-1:-1;680:44:180;3925:154:144;;;;-1:-1:-1;;;3925:154:144;;3200:2:182;3925:154:144;;;3182:21:182;3239:1;3219:18;;;3212:29;-1:-1:-1;;;3257:18:182;;;3250:39;3306:18;;3925:154:144;2998:332:182;3925:154:144;4094:17;;;;1114:2;-1:-1:-1;938:44:180;4086:106:144;;;;-1:-1:-1;;;4086:106:144;;3537:2:182;4086:106:144;;;3519:21:182;3576:2;3556:18;;;3549:30;-1:-1:-1;;;3595:18:182;;;3588:41;3646:18;;4086:106:144;3335:335:182;4086:106:144;4206:17;;;;1177:14;-1:-1:-1;680:44:180;4198:104:144;;;;-1:-1:-1;;;4198:104:144;;3537:2:182;4198:104:144;;;3519:21:182;3576:2;3556:18;;;3549:30;-1:-1:-1;;;3595:18:182;;;3588:41;3646:18;;4198:104:144;3335:335:182;4198:104:144;4317:20;;;;1114:2;-1:-1:-1;938:44:180;4309:112:144;;;;-1:-1:-1;;;4309:112:144;;3877:2:182;4309:112:144;;;3859:21:182;3916:2;3896:18;;;3889:30;-1:-1:-1;;;3935:18:182;;;3928:44;3989:18;;4309:112:144;3675:338:182;4309:112:144;4435:20;;;;1177:14;-1:-1:-1;680:44:180;4427:110:144;;;;-1:-1:-1;;;4427:110:144;;3877:2:182;4427:110:144;;;3859:21:182;3916:2;3896:18;;;3889:30;-1:-1:-1;;;3935:18:182;;;3928:44;3989:18;;4427:110:144;3675:338:182;4427:110:144;4552:20;;;;1114:2;-1:-1:-1;938:44:180;4544:112:144;;;;-1:-1:-1;;;4544:112:144;;4220:2:182;4544:112:144;;;4202:21:182;4259:2;4239:18;;;4232:30;-1:-1:-1;;;4278:18:182;;;4271:44;4332:18;;4544:112:144;4018:338:182;4544:112:144;4670:20;;;;1177:14;-1:-1:-1;680:44:180;4662:110:144;;;;-1:-1:-1;;;4662:110:144;;4220:2:182;4662:110:144;;;4202:21:182;4259:2;4239:18;;;4232:30;-1:-1:-1;;;4278:18:182;;;4271:44;4332:18;;4662:110:144;4018:338:182;4662:110:144;4787:17;;;;1114:2;-1:-1:-1;938:44:180;4779:106:144;;;;-1:-1:-1;;;4779:106:144;;4563:2:182;4779:106:144;;;4545:21:182;4602:2;4582:18;;;4575:30;-1:-1:-1;;;4621:18:182;;;4614:41;4672:18;;4779:106:144;4361:335:182;4779:106:144;4899:17;;;;1177:14;-1:-1:-1;680:44:180;4891:104:144;;;;-1:-1:-1;;;4891:104:144;;4563:2:182;4891:104:144;;;4545:21:182;4602:2;4582:18;;;4575:30;-1:-1:-1;;;4621:18:182;;;4614:41;4672:18;;4891:104:144;4361:335:182;4891:104:144;2591:2409;:::o;2580:1061:149:-;6395:26203:130;;;;;;;;-1:-1:-1;6395:26203:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2756:21:149;;:32;;;;-1:-1:-1;;;;;;2756:52:149;2748:90;;;;-1:-1:-1;;;2748:90:149;;4903:2:182;2748:90:149;;;4885:21:182;4942:2;4922:18;;;4915:30;4981:27;4961:18;;;4954:55;5026:18;;2748:90:149;4701:349:182;2748:90:149;2852:20;;;;-1:-1:-1;;;;;;2852:40:149;2844:80;;;;-1:-1:-1;;;2844:80:149;;5257:2:182;2844:80:149;;;5239:21:182;5296:2;5276:18;;;5269:30;5335:29;5315:18;;;5308:57;5382:18;;2844:80:149;5055:351:182;2844:80:149;2938:14;;;;-1:-1:-1;;;;;;2938:34:149;2930:68;;;;-1:-1:-1;;;2930:68:149;;5613:2:182;2930:68:149;;;5595:21:182;5652:2;5632:18;;;5625:30;5691:23;5671:18;;;5664:51;5732:18;;2930:68:149;5411:345:182;2930:68:149;3012:25;;;;-1:-1:-1;;;;;;3012:45:149;3004:90;;;;-1:-1:-1;;;3004:90:149;;5963:2:182;3004:90:149;;;5945:21:182;;;5982:18;;;5975:30;6041:34;6021:18;;;6014:62;6093:18;;3004:90:149;5761:356:182;3004:90:149;3108:528;;;;;;;;3153:30;:7;:19;;;:28;;;:30;;:::i;:::-;3108:528;;;;;;3207:33;:7;:22;;;:31;;;:33;;:::i;:::-;3108:528;;;;;;3264:33;:7;:22;;;:31;;;:33;;:::i;:::-;3108:528;;;;;;3318:30;:7;:19;;;:28;;;:30;;:::i;:::-;3108:528;;;;;;3364:25;:7;:14;;;:23;;;:25;;:::i;:::-;-1:-1:-1;;;;;3108:528:149;;;;;3416:36;:7;:25;;;:34;;;:36;;:::i;:::-;-1:-1:-1;;;;;3108:528:149;;;;;3474:31;:7;:20;;;:29;;;:31;;:::i;:::-;-1:-1:-1;;;;;3108:528:149;;;;;3525:43;:7;:21;;;:32;;;:41;;;:43;;:::i;:::-;-1:-1:-1;;;;;3108:528:149;;;3587:21;;:31;3108:528;;;;;3587:42;;:40;:42::i;:::-;3108:528;;;;3101:535;2580:1061;-1:-1:-1;;2580:1061:149:o;339:175:178:-;402:19;461:47;496:10;461:17;:47::i;:::-;429:80;339:175;-1:-1:-1;;339:175:178:o;13296:213:62:-;13352:6;-1:-1:-1;;;;;13374:24:62;;13370:103;;;13452:2;13421:41;;-1:-1:-1;;;13421:41:62;;;;;6303:36:182;;;;6355:18;;;6348:34;;;6276:18;;13421:41:62;6122:266:182;13370:103:62;-1:-1:-1;13496:5:62;13296:213::o;11296:::-;11352:6;-1:-1:-1;;;;;11374:24:62;;11370:103;;;11421:41;;-1:-1:-1;;;11421:41:62;;11452:2;11421:41;;;6303:36:182;6355:18;;;6348:34;;;6276:18;;11421:41:62;6122:266:182;15296:213:62;15352:6;15382:16;15374:24;;15370:103;;;15421:41;;-1:-1:-1;;;15421:41:62;;15452:2;15421:41;;;6303:36:182;6355:18;;;6348:34;;;6276:18;;15421:41:62;6122:266:182;14:139;-1:-1:-1;;;;;97:31:182;;87:42;;77:70;;143:1;140;133:12;158:351;229:2;223:9;271:6;259:19;;-1:-1:-1;;;;;293:34:182;;329:22;;;290:62;287:185;;;394:10;389:3;385:20;382:1;375:31;429:4;426:1;419:15;457:4;454:1;447:15;287:185;488:2;481:22;158:351;:::o;514:343::-;581:2;575:9;;;611:15;;-1:-1:-1;;;;;641:34:182;;677:22;;;638:62;635:185;;;742:10;737:3;733:20;730:1;723:31;777:4;774:1;767:15;805:4;802:1;795:15;862:1923;1007:6;1015;1023;1031;1075:9;1066:7;1062:23;1105:3;1101:2;1097:12;1094:32;;;1122:1;1119;1112:12;1094:32;1154:9;1148:16;1173:39;1206:5;1173:39;:::i;:::-;1281:2;1266:18;;1260:25;1231:5;;-1:-1:-1;1294:41:182;1260:25;1294:41;:::i;:::-;1406:2;1391:18;;1385:25;1354:7;;-1:-1:-1;1419:41:182;1385:25;1419:41;:::i;:::-;1479:7;-1:-1:-1;;;1505:16:182;1541:6;1533:15;;1530:35;;;1561:1;1558;1551:12;1530:35;1589:21;;:::i;:::-;1630:2;1626;1622:11;1619:31;;;1646:1;1643;1636:12;1619:31;1674:17;;:::i;:::-;1757:2;1742:18;;;1736:25;1770:24;;1860:3;1845:19;;;1839:26;1894:2;1881:16;;;1874:33;;;;1916:24;;;2006:3;1991:19;;;1985:26;2027:16;;;2020:33;;;;2119:3;2104:19;;;2098:26;2153:2;2140:16;;2133:33;2232:3;2217:19;;;2211:26;2253:16;;;2246:33;;;;2347:6;2332:22;;2326:29;2371:17;;;2364:35;;;;2467:6;2452:22;;2446:29;2491:17;;;2484:35;;;;2587:3;2572:19;;2566:26;2608:17;;;2601:35;;;;2704:3;2689:19;;;2683:26;2725:17;;;2718:35;;;;-1:-1:-1;862:1923:182;;;;-1:-1:-1;862:1923:182;1923:7;-1:-1:-1;862:1923:182:o;6664:266::-;6395:26203:130;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610174575f3560e01c806371706cbe116100d5578063c4bf093611610084578063c4bf093614610452578063c7f758a814610465578063da35c66414610485578063e1d746441461048e578063edb884e9146104a1578063fe0d94c1146104b4578063fe7f0e8b146104c7575f5ffd5b806371706cbe1461030e5780637f514e78146103175780638a4fb16a1461031f5780639080936f146103e25780639efbc2df14610402578063b907c0ea1461042d578063c3a5051514610440575f5ffd5b80633d24e054116101315780633d24e0541461020357806347e7ef241461020b5780634800d97f1461021e57806355ead34a146102525780635926651d146102725780636a18ff7a146102855780636bd50cef14610298575f5ffd5b80630126795114610178578063083b42461461019e5780630928d152146101b357806330eb4bdd146101c65780633a00b7ee146101d95780633b8f880d146101f0575b5f5ffd5b61018b610186366004612cac565b6104da565b6040519081526020015b60405180910390f35b6101b16101ac366004612cc7565b610531565b005b6101b16101c1366004612cc7565b6105ee565b61018b6101d4366004612cde565b610711565b60025460ff165b6040519015158152602001610195565b61018b6101fe366004612d15565b61077e565b6101b16107a6565b6101b1610219366004612d15565b610803565b6102457f000000000000000000000000000000000000000000000000000000000000000081565b6040516101959190612d3f565b610265610260366004612d53565b610914565b6040516101959190612d76565b6101b1610280366004612cac565b61094f565b6101b1610293366004612d8d565b6109d4565b6102a0610b80565b60405161019591905f610120820190508251805183526020810151602084015250602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e083015161010083015292915050565b61018b600b5481565b61018b610c28565b6103a461032d366004612cc7565b604080516080810182525f808252602082018190529181018290526060810191909152505f90815260066020908152604091829020825160808101845281548152600182015492810192909252600201546001600160a01b03811692820192909252600160a01b90910460ff161515606082015290565b604051610195919081518152602080830151908201526040808301516001600160a01b03169082015260609182015115159181019190915260800190565b6103f56103f0366004612cc7565b610c33565b6040516101959190612dfb565b6101e0610410366004612cac565b6001600160a01b03165f9081526001602052604090205460ff1690565b6101b161043b366004612cac565b610dbf565b5f54610245906001600160a01b031681565b61018b610460366004612d15565b610e55565b610478610473366004612cc7565b610e6b565b6040516101959190612e09565b61018b600a5481565b61018b61049c366004612cac565b610f83565b6101b16104af366004612f3f565b610fa3565b6101b16104c2366004612cc7565b611107565b61018b6104d5366004612cc7565b61135a565b5f805433906001600160a01b0316818114610513576040516307aa341360e31b815260040161050a929190612fe5565b60405180910390fd5b50505f5461052b9083906001600160a01b0316611366565b92915050565b5f8181526003602052604090206007600182015460ff16600881111561055957610559612dc7565b0361057757604051630595c07760e51b815260040160405180910390fd5b600661058283610c33565b600881111561059357610593612dc7565b146105b1576040516308adbf2160e01b815260040160405180910390fd5b60018101805460ff1916600717905560405182907fbe0d6497a32a201ada887344ab9138dacd7d057f44cd070946394838a0960276905f90a25050565b5f81815260066020526040902060028101546001600160a01b031661062557604051626fa8b560e61b815260040160405180910390fd5b6002810154600160a01b900460ff161561065257604051632bbd3b8d60e11b815260040160405180910390fd5b610660428260010154111590565b6001820154429161068d57604051630d02d71b60e21b81526004810192909252602482015260440161050a565b505060028101805460ff60a01b1916600160a01b17905560405182907fcebf724a837e6c3b3bf571f17587621a5b8b13a5c49e854ff99f2700a9fc3666905f90a26002810154815461070d916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116929116906115d5565b5050565b6040805180820182525f8082526020918201819052825180840190935260085463ffffffff600160c01b8204168452600160601b90046001600160601b0316918301919091529061076b33848360200151845f0151611639565b506107768430611366565b949350505050565b6001600160a01b0382165f90815260056020526040812061079f908361176b565b9392505050565b33308181146107ca5760405163f18e42a160e01b815260040161050a929190612fe5565b50506002805460ff191660011790556040517f8d67419becc56dd5daf39212ee5e2cb8d9c40cf1184863a77318db110bfc77d9905f90a1565b81303303610824576040516306fdffd960e51b815260040160405180910390fd5b60025460ff168061084c57506001600160a01b0381165f9081526001602052604090205460ff165b61086957604051636c26e61960e01b815260040160405180910390fd5b61089e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856117b5565b6001600160a01b0383165f9081526005602052604090206108bf90836117f4565b506108cd90506009836117f4565b50506040518281526001600160a01b0384169033907f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629060200160405180910390a3505050565b6040805180820182525f8082526020808301829052858252600481528382206001600160a01b03861683529052919091205461079f9061186e565b33308181146109735760405163f18e42a160e01b815260040161050a929190612fe5565b50506001600160a01b0381165f90815260016020819052604091829020805460ff19169091179055517fc3e089fc6227e049d0e41c3d7a383d57efe69c1955c5752f7e5a9b5f1f113020906109c9908390612d3f565b60405180910390a150565b5f6109de84610c33565b905060018160088111156109f4576109f4612dc7565b14610a1257604051632d85b5cb60e01b815260040160405180910390fd5b5f848152600360205260408120610a4090610a2c906118ae565b335f9081526005602052604090209061176b565b5f868152600460209081526040808320338452909152812054919250610a668260801c90565b610a79906001600160801b038416613013565b610a839084613026565b905033818781811115610ac257604051631186c4ab60e31b81526001600160a01b0390931660048401526024830191909152604482015260640161050a565b5050505f8781526003602052604090208515610b0a57610ae283886118d3565b5f898152600460209081526040808320338452909152902055610b058188611923565b610b37565b610b14838861193e565b5f898152600460209081526040808320338452909152902055610b37818861197d565b6040805187151581526020810189905233918a917fcbdf6214089cba887ecbf35a0b6a734589959c9763342c756bb2a80ca2bc9f6e910160405180910390a35050505050505050565b610b88612bb5565b604080516101208101825260075463ffffffff8082168352600160201b820481166020840152600160401b8204811693830193909352600160601b808204841660608401526001600160401b03600160801b830481166080850152600160c01b928390041660a08401526008546001600160601b0380821660c086015291810490911660e084015204909116610100820152610c239061198c565b905090565b5f610c236009611a4c565b5f600a5482108290610c5b576040516320c68f5560e21b815260040161050a91815260200190565b505f8281526003602052604090206005600182015460ff166008811115610c8457610c84612dc7565b1480610ca857506007600182015460ff166008811115610ca657610ca6612dc7565b145b15610cba576001015460ff1692915050565b80545f546001600160a01b03908116911614801590610ce3575080546001600160a01b03163014155b15610cf15750600692915050565b42610d0481610cff846118ae565b101590565b15610d1257505f9392505050565b610d1f81610cff84611a65565b15610d2e575060019392505050565b5f610d43610d3b846118ae565b60099061176b565b90505f610d508483611a89565b5090505f816002811115610d6657610d66612dc7565b14610d775750600495945050505050565b610d8483610cff86611bfe565b15610d955750600295945050505050565b610da283610cff86611c22565b15610db35750600395945050505050565b50600895945050505050565b3330818114610de35760405163f18e42a160e01b815260040161050a929190612fe5565b5050306001600160a01b03821603610e0e576040516304eb9a0360e31b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917f58b9023fe926532b1c6a397a00102fcce3ac81725a232d9d235104cd1a28e43291a250565b5f61079f338484610e666007611c46565b611639565b610e73612c05565b5f8281526003602090815260409182902082516101808101845281546001600160a01b0381168252600160a01b90046001600160601b031692810192909252600181015461052b9383019060ff166008811115610ed257610ed2612dc7565b6008811115610ee357610ee3612dc7565b8152600182015461010080820463ffffffff9081166020850152600160281b830481166040850152600160481b830481166060850152600160681b830481166080850152600160881b83041660a0840152600160a81b9091046001600160401b0390811660c0840152600284015460e08401526003909301546001600160a01b03811691830191909152600160a01b900490911661012090910152611c83565b6001600160a01b0381165f90815260056020526040812061052b90611a4c565b3330818114610fc75760405163f18e42a160e01b815260040161050a929190612fe5565b5050610fd281611d7b565b610fdb81612027565b80516007805460208401516040808601516060870151608088015160a089015163ffffffff98891667ffffffffffffffff1990971696909617600160201b958916959095029490941767ffffffffffffffff60401b1916600160401b9288169290920263ffffffff60601b191691909117600160601b9187168202176001600160801b0316600160801b6001600160401b03948516026001600160c01b031617600160c01b9390941683029390931790935560c08501516008805460e0880151610100909801516001600160601b039384166001600160c01b031990921691909117929097169093021763ffffffff60c01b1916949093169092029290921790555142907f7d096a764e5ea306d0946e3a05ca9ffd9ea0af82aecf12cf8eee26b2485f9a0c905f90a250565b5f61111182610c33565b9050600381600881111561112757611127612dc7565b146111455760405163b6ae35c160e01b815260040160405180910390fd5b5f82815260036020819052604080832060018101805460ff1916600517905591820154815163504d080b60e01b815291519293926001600160a01b039091169163504d080b91600480830192869291908290030181865afa1580156111ac573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111d39190810190613039565b90505f5b8151811015611329577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682828151811061121c5761121c6131a2565b60200260200101515f01516001600160a01b03160361124e576040516304f6c78960e21b815260040160405180910390fd5b5f828281518110611261576112616131a2565b60200260200101515f01516001600160a01b0316838381518110611287576112876131a2565b6020026020010151602001516040516112a091906131b6565b5f604051808303815f865af19150503d805f81146112d9576040519150601f19603f3d011682016040523d82523d5f602084013e6112de565b606091505b50509050808383815181106112f5576112f56131a2565b60200260200101515f01519061131f57604051633cb8c30160e01b815260040161050a9190612d3f565b50506001016111d7565b5060405184907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f905f90a250505050565b5f61052b60098361176b565b600a80545f9182919082611379836131cc565b90915550604080516101208101825260075463ffffffff8082168352600160201b820481166020840152600160401b8204811693830193909352600160601b808204841660608401526001600160401b03600160801b830481166080850152600160c01b928390041660a08401526008546001600160601b0380821660c086015291810490911660e084015204909116610100820152909150611421908490869042906122c6565b5f828152600360209081526040918290208351918401516001600160601b0316600160a01b026001600160a01b039092169190911781559082015160018083018054909160ff199091169083600881111561147e5761147e612dc7565b02179055506060820151600182018054608085015160a086015160c087015160e0880151610100808a01516001600160401b03908116600160a81b0267ffffffffffffffff60a81b1963ffffffff948516600160881b02166bffffffffffffffffffffffff60881b19958516600160681b0263ffffffff60681b19978616600160481b029790971667ffffffffffffffff60481b19988616600160281b0268ffffffff00000000001996909c169094029490941668ffffffffffffffff00199098169790971798909817949094169390931791909117161717905561012083015160028301556101408301516003909201805461016090940151909116600160a01b026001600160e01b03199093166001600160a01b0392831617929092179091556040519085169082907faa9a4d6243341331785569c732ffe9c81a3e9c2aafa58faab1afe4797668433f905f90a39392505050565b6040516001600160a01b0383811660248301526044820183905261163491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506123ef565b505050565b5f6001600160a01b038416611661576040516312c8cda160e01b815260040160405180910390fd5b6001600160a01b0385165f9081526005602052604090206116829084612452565b506116909050600984612452565b5050600b80545f91826116a2836131cc565b91905055905060405180608001604052808581526020016116c342866124ff565b81526001600160a01b0380881660208084018290525f6040948501819052868152600682528490208551815590850151600182015584840151600290910180546060909601511515600160a01b026001600160a81b031990961691909316179390931790555182907f35572b4263de54e794ffcb886cb01a64870892fe896854fd2ca93810d5c66f7e9061175a9088815260200190565b60405180910390a395945050505050565b5f61177582421190565b611792576040516334dcb7d760e21b815260040160405180910390fd5b6117a561179e8361250a565b849061253e565b6001600160e01b03169392505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526117ee9186918216906323b872dd90608401611602565b50505050565b5f5f5f611800856125ec565b9050835f0361181c576001600160e01b03169150819050611867565b5f61182685612623565b90506118466118344261250a565b61183e83856131e4565b889190612656565b5082905061185482826131e4565b6001600160e01b03918216955016925050505b9250929050565b604080518082019091525f808252602082015260405180604001604052806118968460801c90565b81526020016001600160801b0384165b905292915050565b60018101545f9061052b9063ffffffff6101008204811691600160281b9004166124ff565b5f5f6118df8460801c90565b90505f6118ec8483613013565b905061191a856118fb83612670565b6001600160801b0316608081901b6001600160801b0383161792915050565b95945050505050565b600282015461193290826118d3565b82600201819055505050565b5f6001600160801b038316816119548483613013565b905061191a8561196383612670565b6001600160801b03166001600160801b0319919091161790565b6002820154611932908261193e565b611994612bb5565b60408051610140810182526101008481015163ffffffff90811691830191825260e08601516001600160601b0316610120840152908252845181166020808401919091528501518116828401529184015190916060830191168152602001611a09846060015163ffffffff1663ffffffff1690565b815260200183608001516001600160401b031681526020018360a001516001600160401b031681526020018360c001516001600160601b03168152509050919050565b5f611a56826125ec565b6001600160e01b031692915050565b5f61052b611a72836118ae565b6001840154600160481b900463ffffffff166124ff565b81545f908190600160a01b90046001600160601b0316831015611ab15750600190505f611867565b5f611ae7848660010160159054906101000a90046001600160401b03166001600160401b0316670de0b6b3a764000060016126a3565b9050805f03611afe57600260019250925050611867565b83811115611b13576002809250925050611867565b5f5f611b1e876126e5565b90925090505f611b2e8383613013565b905083811015611b4957600160039550955050505050611867565b808303611b60575f60079550955050505050611867565b60038801545f90611b9d90611b8d90600160a01b90046001600160401b0316670de0b6b3a7640000613203565b6001600160401b03166002612712565b90505f611bb58383670de0b6b3a764000060016126a3565b905082811115611bd2576002600597509750505050505050611867565b808511611bec576001600897509750505050505050611867565b505f9960099950975050505050505050565b5f61052b611c0b83611a65565b6001840154600160681b900463ffffffff166124ff565b5f61052b611c2f83611bfe565b6001840154600160881b900463ffffffff166124ff565b80545f9063ffffffff80821691600160201b8104821691600160401b9091041661191a611c7d611c77600586613236565b846124ff565b826124ff565b611c8b612c05565b604080516101a08101909152608083015163ffffffff90811660c080840191825260a0860151831660e08501528501518392610100840191168152602001611ce08660e0015163ffffffff1663ffffffff1690565b81526020018561010001516001600160401b031681526020018561016001516001600160401b0316815260200185602001516001600160601b0316815250815260200183604001516008811115611d3957611d39612dc7565b81526101408401516001600160a01b039081166020830152845116604082015260608085015191019063ffffffff1681526020016118a684610120015161186e565b60018160a001511015611da15760405163245ca84960e11b815260040160405180910390fd5b670de0b6b3a76400008160a001511115611dce57604051637a9fd76760e11b815260040160405180910390fd5b670de0b6b3a76400008160c001511115611dfb576040516323bdbbbb60e01b815260040160405180910390fd5b60018160e001511015611e215760405163505c925360e11b815260040160405180910390fd5b60e08101516001600160601b031015611e4d5760405163505c925360e11b815260040160405180910390fd5b80516020015160021115611e745760405163ec4abc2f60e01b815260040160405180910390fd5b8051602001516001600160601b031015611ea157604051635590b7bd60e11b815260040160405180910390fd5b805151603c1115611ec5576040516302b2633f60e21b815260040161050a90613249565b80515163ffffffff1015611eec57604051637ac6b2f960e11b815260040161050a90613249565b6020810151603c1115611f12576040516302b2633f60e21b815260040161050a9061326c565b60208101516276a7001015611f3a57604051637ac6b2f960e11b815260040161050a9061326c565b6040810151603c1115611f60576040516302b2633f60e21b815260040161050a90613291565b60408101516276a7001015611f8857604051637ac6b2f960e11b815260040161050a90613291565b6060810151603c1115611fae576040516302b2633f60e21b815260040161050a906132b9565b60608101516276a7001015611fd657604051637ac6b2f960e11b815260040161050a906132b9565b6080810151603c1115611ffc576040516302b2633f60e21b815260040161050a906132e1565b60808101516276a700101561202457604051637ac6b2f960e11b815260040161050a906132e1565b50565b60408051610120810182525f8082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201528251909101516001600160601b0310156120c55760405162461bcd60e51b81526020600482015260196024820152783637b1b5a0b6b7bab73a1032bc31b2b2b239903ab4b73a1c9b60391b604482015260640161050a565b60e08201516001600160601b0310156121205760405162461bcd60e51b815260206004820152601b60248201527f6d696e696d756d566f74657320657863656564732075696e7439360000000000604482015260640161050a565b60a08201516001600160401b0310156121735760405162461bcd60e51b81526020600482015260156024820152741c5d5bdc9d5b48195e18d959591cc81d5a5b9d0d8d605a1b604482015260640161050a565b60c08201516001600160401b0310156121ce5760405162461bcd60e51b815260206004820181905260248201527f72657175697265645965614d617267696e20657863656564732075696e743634604482015260640161050a565b6040518061012001604052806121e78460200151612745565b63ffffffff1681526020016121ff8460400151612745565b63ffffffff1681526020016122178460600151612745565b63ffffffff16815260200161222f8460800151612745565b63ffffffff1681526020016122478460a0015161274f565b6001600160401b031681526020016122628460c0015161274f565b6001600160401b0316815260200161227d8460e00151612784565b6001600160601b0316815260200161229b845f015160200151612784565b6001600160601b031681526020016122b8845f01515f0151612745565b63ffffffff16905292915050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260408051610180810182526001600160a01b038716815260c08401516001600160601b031660208201529081015f815260200161236285612745565b63ffffffff168152602001835f015163ffffffff168152602001836020015163ffffffff168152602001836040015163ffffffff168152602001836060015163ffffffff16815260200183608001516001600160401b031681526020015f8152602001856001600160a01b031681526020018360a001516001600160401b03168152509050949350505050565b5f5f60205f8451602086015f885af18061240e576040513d5f823e3d81fd5b50505f513d91508115612425578060011415612432565b6001600160a01b0384163b155b156117ee5783604051635274afe760e01b815260040161050a9190612d3f565b5f5f5f61245e856125ec565b9050835f0361247a576001600160e01b03169150819050611867565b5f61248485612623565b90503382826001600160e01b0380821690831610156124d85760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b03918216602484015216604482015260640161050a565b5050506124f16124e74261250a565b61183e8385613306565b508290506118548282613306565b5f61079f8284613013565b5f63ffffffff82111561253a576040516306dfcc6560e41b8152602060048201526024810183905260440161050a565b5090565b81545f9081816005811115612598575f612557846127b7565b6125619085613026565b5f8881526020902090915081015463ffffffff908116908716101561258857809150612596565b612593816001613013565b92505b505b5f6125a587878585612909565b905080156125df576125c9876125bc600184613026565b5f91825260209091200190565b54600160201b90046001600160e01b03166125e1565b5f5b979650505050505050565b80545f90801561261b57612605836125bc600184613026565b54600160201b90046001600160e01b031661079f565b5f9392505050565b5f6001600160e01b0382111561253a576040516306dfcc6560e41b815260e060048201526024810183905260440161050a565b5f80612663858585612964565b915091505b935093915050565b5f6001600160801b0382111561253a576040516306dfcc6560e41b8152608060048201526024810183905260440161050a565b5f6126d06126b083612aa8565b80156126cb57505f84806126c6576126c6613222565b868809115b151590565b6126db868686612ad4565b61191a9190613013565b5f5f6126f5836002015460801c90565b915061270b83600201546001600160801b031690565b9050915091565b5f815f03612724576127246012612b8a565b81600184038161273657612736613222565b04600101831515029392505050565b5f61052b8261250a565b5f6001600160401b0382111561253a57604080516306dfcc6560e41b815260048101919091526024810183905260440161050a565b5f6001600160601b0382111561253a576040516306dfcc6560e41b8152606060048201526024810183905260440161050a565b5f600182116127c4575090565b816001600160801b82106127dd5760809190911c9060401b5b600160401b82106127f35760409190911c9060201b5b600160201b82106128095760209190911c9060101b5b62010000821061281e5760109190911c9060081b5b61010082106128325760089190911c9060041b5b601082106128455760049190911c9060021b5b600482106128515760011b5b600302600190811c9081858161286957612869613222565b048201901c9050600181858161288157612881613222565b048201901c9050600181858161289957612899613222565b048201901c905060018185816128b1576128b1613222565b048201901c905060018185816128c9576128c9613222565b048201901c905060018185816128e1576128e1613222565b048201901c90506129008185816128fa576128fa613222565b04821190565b90039392505050565b5f5b8183101561295c575f61291e8484612b9b565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561294857809250612956565b612953816001613013565b93505b5061290b565b509392505050565b82545f9081908015612a50575f612980876125bc600185613026565b805490915063ffffffff80821691600160201b90046001600160e01b03169088168211156129c157604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff16036129f457825463ffffffff16600160201b6001600160e01b03891602178355612a42565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061266892505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b029190931617920191909155905081612668565b5f6002826003811115612abd57612abd612dc7565b612ac79190613325565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f03612b0857838281612afe57612afe613222565b049250505061079f565b808411612b1f57612b1f6003851502601118612b8a565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b634e487b715f52806020526024601cfd5b5f612ba96002848418613236565b61079f90848416613013565b6040805161014081019091525f6101008201818152610120830191909152819081526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060c00160405280612c496040518060e001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f8152602001612c9360405180604001604052805f81526020015f81525090565b905290565b6001600160a01b0381168114612024575f5ffd5b5f60208284031215612cbc575f5ffd5b813561079f81612c98565b5f60208284031215612cd7575f5ffd5b5035919050565b5f5f60408385031215612cef575f5ffd5b8235612cfa81612c98565b91506020830135612d0a81612c98565b809150509250929050565b5f5f60408385031215612d26575f5ffd5b8235612d3181612c98565b946020939093013593505050565b6001600160a01b0391909116815260200190565b5f5f60408385031215612d64575f5ffd5b823591506020830135612d0a81612c98565b81518152602080830151908201526040810161052b565b5f5f5f60608486031215612d9f575f5ffd5b833592506020840135915060408401358015158114612dbc575f5ffd5b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b60098110612df757634e487b7160e01b5f52602160045260245ffd5b9052565b6020810161052b8284612ddb565b5f6101a0820190508251805183526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c0840152506020830151612e6660e0840182612ddb565b5060408301516001600160a01b03908116610100840152606084015116610120830152608083015161014083015260a0909201518051610160830152602001516101809091015290565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612ee757612ee7612eb0565b60405290565b604080519081016001600160401b0381118282101715612ee757612ee7612eb0565b604051601f8201601f191681016001600160401b0381118282101715612f3757612f37612eb0565b604052919050565b5f81830361012081128015612f52575f5ffd5b50612f5b612ec4565b6040821215612f68575f5ffd5b612f70612eed565b843581526020808601358183015290825260408086013591830191909152606080860135918301919091526080808601359183019190915260a0808601359183019190915260c0808601359183019190915260e080860135918301919091526101009094013593810193909352509092915050565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561052b5761052b612fff565b8181038181111561052b5761052b612fff565b5f60208284031215613049575f5ffd5b81516001600160401b0381111561305e575f5ffd5b8201601f8101841361306e575f5ffd5b80516001600160401b0381111561308757613087612eb0565b8060051b61309760208201612f0f565b918252602081840181019290810190878411156130b2575f5ffd5b6020850192505b838310156125e15782516001600160401b038111156130d6575f5ffd5b85016040818a03601f190112156130eb575f5ffd5b6130f3612eed565b602082015161310181612c98565b815260408201516001600160401b0381111561311b575f5ffd5b60208184010192505089601f830112613132575f5ffd5b81516001600160401b0381111561314b5761314b612eb0565b61315e601f8201601f1916602001612f0f565b8181528b6020838601011115613172575f5ffd5b8160208501602083015e5f60208383010152806020840152505080845250506020820191506020830192506130b9565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f600182016131dd576131dd612fff565b5060010190565b6001600160e01b03818116838216019081111561052b5761052b612fff565b6001600160401b03818116838216019081111561052b5761052b612fff565b634e487b7160e01b5f52601260045260245ffd5b5f8261324457613244613222565b500490565b6020808252600990820152684c6f636b44656c617960b81b604082015260600190565b6020808252600b908201526a566f74696e6744656c617960a81b604082015260600190565b6020808252600e908201526d2b37ba34b733a23ab930ba34b7b760911b604082015260600190565b6020808252600e908201526d457865637574696f6e44656c617960901b604082015260600190565b6020808252600b908201526a11dc9858d954195c9a5bd960aa1b604082015260600190565b6001600160e01b03828116828216039081111561052b5761052b612fff565b5f60ff83168061333757613337613222565b8060ff8416069150509291505056fea26469706673582212203c40d5b041cca34250ae8e34f6deccbba5e45d5de79bb8598438b8bf066ad5db64736f6c634300081e0033","sourceMap":"6395:26203:130:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16944:282;;;;;;:::i;:::-;;:::i;:::-;;;586:25:182;;;574:2;559:18;16944:282:130;;;;;;;;22303:446;;;;;;:::i;:::-;;:::i;:::-;;15511:877;;;;;;:::i;:::-;;:::i;18276:340::-;;;;;;:::i;:::-;;:::i;25000:144::-;25101:38;;;;25000:144;;;1449:14:182;;1442:22;1424:41;;1412:2;1397:18;25000:144:130;1284:187:182;22998:146:130;;;;;;:::i;:::-;;:::i;11410:151::-;;;:::i;14098:317::-;;;;;;:::i;:::-;;:::i;6819:29::-;;;;;;;;;;;;:::i;26343:173::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11047:183::-;;;;;;:::i;:::-;;:::i;19424:1278::-;;;;;;:::i;:::-;;:::i;25148:139::-;;;:::i;:::-;;;;;;4335:4:182;4377:3;4366:9;4362:19;4354:27;;4406:6;4400:13;4446:2;4440:9;4429;4422:28;4502:4;4498:2;4494:13;4488:20;4481:4;4470:9;4466:20;4459:50;;4565:4;4557:6;4553:17;4547:24;4540:4;4529:9;4525:20;4518:54;4628:4;4620:6;4616:17;4610:24;4603:4;4592:9;4588:20;4581:54;4691:4;4683:6;4679:17;4673:24;4666:4;4655:9;4651:20;4644:54;4754:4;4746:6;4742:17;4736:24;4729:4;4718:9;4714:20;4707:54;4817:4;4809:6;4805:17;4799:24;4792:4;4781:9;4777:20;4770:54;4880:4;4872:6;4868:17;4862:24;4855:4;4844:9;4840:20;4833:54;4945:4;4937:6;4933:17;4927:24;4918:6;4907:9;4903:22;4896:56;4179:779;;;;;9339:30:130;;;;;;24341:113;;;:::i;25888:154::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26011:26:130;;;;:11;:26;;;;;;;;;26004:33;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26004:33:130;;;;;;;;;-1:-1:-1;;;26004:33:130;;;;;;;;;;;;25888:154;;;;;;;5186:13:182;;5168:32;;5256:4;5244:17;;;5238:24;5216:20;;;5209:54;5323:4;5311:17;;;5305:24;-1:-1:-1;;;;;5301:50:182;5279:20;;;5272:80;5422:4;5410:17;;;5404:24;5397:32;5390:40;5368:20;;;5361:70;;;;5155:3;5140:19;;4963:474;28723:1617:130;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24672:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;24791:38:130;24772:4;24791:38;;;:14;:38;;;;;;;;;24672:162;12033:315;;;;;;:::i;:::-;;:::i;7019:33::-;;;;;-1:-1:-1;;;;;7019:33:130;;;14933:202;;;;;;:::i;:::-;;:::i;25504:157::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9140:28::-;;;;;;23655:130;;;;;;:::i;:::-;;:::i;12557:350::-;;;;;;:::i;:::-;;:::i;21177:862::-;;;;;;:::i;:::-;;:::i;23979:127::-;;;;;;:::i;:::-;;:::i;16944:282::-;17021:7;17065:18;;17051:10;;-1:-1:-1;;;;;17065:18:130;17051:32;;;17036:133;;;;-1:-1:-1;;;17036:133:130;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;17202:18:130;;17182:39;;17191:9;;-1:-1:-1;;;;;17202:18:130;17182:8;:39::i;:::-;17175:46;16944:282;-1:-1:-1;;16944:282:130:o;22303:446::-;22383:31;22417:22;;;:9;:22;;;;;22473:21;22453:16;;;;;;:41;;;;;;;;:::i;:::-;;22445:95;;;;-1:-1:-1;;;22445:95:130;;;;;;;;;;;;22587:23;22554:29;22571:11;22554:16;:29::i;:::-;:56;;;;;;;;:::i;:::-;;22546:111;;;;-1:-1:-1;;;22546:111:130;;;;;;;;;;;;22664:16;;;:40;;-1:-1:-1;;22664:40:130;22683:21;22664:40;;;22716:28;;22732:11;;22716:28;;-1:-1:-1;;22716:28:130;22377:372;22303:446;:::o;15511:877::-;15597:29;15629:26;;;:11;:26;;;;;15893:20;;;;-1:-1:-1;;;;;15893:20:130;15885:88;;;;-1:-1:-1;;;15885:88:130;;;;;;;;;;;;15988:18;;;;-1:-1:-1;;;15988:18:130;;;;15987:19;15979:75;;;;-1:-1:-1;;;15979:75:130;;;;;;;;;;;;16075:55;16090:15;16110:10;:20;;;-1:-1:-1;938:44:180;;857:128;16075:55:130;16215:20;;;;16197:15;;16060:182;;;;-1:-1:-1;;;16060:182:130;;;;;10675:25:182;;;;10716:18;;;10709:34;10648:18;;16060:182:130;10437:312:182;16060:182:130;-1:-1:-1;;16248:18:130;;;:25;;-1:-1:-1;;;;16248:25:130;-1:-1:-1;;;16248:25:130;;;16285:32;;16303:13;;16285:32;;16248:25;;16285:32;16343:20;;;;16365:17;;16324:59;;-1:-1:-1;;;;;16324:5:130;:18;;;16343:20;;;16324:18;:59::i;:::-;15591:797;15511:877;:::o;18276:340::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;2117:125:149;;;;;;;;2165:21;;;-1:-1:-1;;;2165:21:149;;;2117:125;;-1:-1:-1;;;2213:22:149;;-1:-1:-1;;;;;2213:22:149;2117:125;;;;;;;-1:-1:-1;18479:85:130;18497:10;18509:3;18514:13;:24;;;18540:13;:23;;;18479:17;:85::i;:::-;;18577:34;18586:9;18605:4;18577:8;:34::i;:::-;18570:41;18276:340;-1:-1:-1;;;;18276:340:130:o;22998:146::-;-1:-1:-1;;;;;23113:13:130;;23091:7;23113:13;;;:5;:13;;;;;:26;;23135:3;23113:21;:26::i;:::-;23106:33;22998:146;-1:-1:-1;;;22998:146:130:o;11410:151::-;9584:10;9606:4;9584:27;;;9576:97;;;;-1:-1:-1;;;9576:97:130;;;;;;;;;:::i;:::-;-1:-1:-1;;11482:38:130;:45;;-1:-1:-1;;11482:45:130::1;11523:4;11482:45;::::0;;11538:18:::1;::::0;::::1;::::0;11482:38:::1;::::0;11538:18:::1;11410:151::o:0;14098:317::-;14214:12;9875:4;9853:10;:27;9845:77;;;;-1:-1:-1;;;9845:77:130;;;;;;;;;;;;9943:38;;;;;:80;;-1:-1:-1;;;;;;9985:38:130;;:24;:38;;;:14;:38;;;;;;;;9943:80;9928:147;;;;-1:-1:-1;;;9928:147:130;;;;;;;;;;;;14236:58:::1;-1:-1:-1::0;;;;;14236:5:130::1;:22;14259:10;14279:4;14286:7:::0;14236:22:::1;:58::i;:::-;-1:-1:-1::0;;;;;14300:19:130;::::1;;::::0;;;:5:::1;:19;::::0;;;;:32:::1;::::0;14324:7;14300:23:::1;:32::i;:::-;-1:-1:-1::0;14338:18:130::1;::::0;-1:-1:-1;14338:5:130::1;14348:7:::0;14338:9:::1;:18::i;:::-;-1:-1:-1::0;;14368:42:130::1;::::0;586:25:182;;;-1:-1:-1;;;;;14368:42:130;::::1;::::0;14376:10:::1;::::0;14368:42:::1;::::0;574:2:182;559:18;14368:42:130::1;;;;;;;14098:317:::0;;;:::o;26343:173::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;26471:20:130;;;:7;:20;;;;;-1:-1:-1;;;;;26471:27:130;;;;;;;;;;;:40;;:38;:40::i;11047:183::-;9584:10;9606:4;9584:27;;;9576:97;;;;-1:-1:-1;;;9576:97:130;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;11139:38:130;::::1;:24;:38:::0;;;11180:4:::1;11139:38;::::0;;;;;;;;:45;;-1:-1:-1;;11139:45:130::1;::::0;;::::1;::::0;;11195:30;::::1;::::0;::::1;::::0;11164:12;;11195:30:::1;:::i;:::-;;;;;;;;11047:183:::0;:::o;19424:1278::-;19528:19;19550:29;19567:11;19550:16;:29::i;:::-;19528:51;-1:-1:-1;19602:20:130;19593:5;:29;;;;;;;;:::i;:::-;;19585:78;;;;-1:-1:-1;;;19585:78:130;;;;;;;;;;;;19968:17;20014:22;;;:9;:22;;;;;19988:66;;20014:39;;:37;:39::i;:::-;19994:10;19988:17;;;;:5;:17;;;;;;:25;:66::i;:::-;20061:27;20091:20;;;:7;:20;;;;;;;;20112:10;20091:32;;;;;;;;19968:86;;-1:-1:-1;20190:19:130;20091:32;614:3:148;568:49;;471:151;20190:19:130;20168:41;;-1:-1:-1;;;;;723:53:148;;20168:41:130;:::i;:::-;20155:55;;:9;:55;:::i;:::-;20130:80;-1:-1:-1;20288:10:130;20130:80;20224:7;:25;;;;20216:109;;;;-1:-1:-1;;;20216:109:130;;-1:-1:-1;;;;;11369:32:182;;;20216:109:130;;;11351:51:182;11418:18;;;11411:34;;;;11461:18;;;11454:34;11324:18;;20216:109:130;11149:345:182;20216:109:130;-1:-1:-1;;;20332:35:130;20370:22;;;:9;:22;;;;;20398:236;;;;20455:26;:10;20473:7;20455:17;:26::i;:::-;20420:20;;;;:7;:20;;;;;;;;20441:10;20420:32;;;;;;;:61;20489:24;:8;20505:7;20489:15;:24::i;:::-;20398:236;;;20569:26;:10;20587:7;20569:17;:26::i;:::-;20534:20;;;;:7;:20;;;;;;;;20555:10;20534:32;;;;;;;:61;20603:24;:8;20619:7;20603:15;:24::i;:::-;20645:52;;;11692:14:182;;11685:22;11667:41;;11739:2;11724:18;;11717:34;;;20667:10:130;;20654:11;;20645:52;;11640:18:182;20645:52:130;;;;;;;19522:1180;;;;;19424:1278;;;:::o;25148:139::-;25221:20;;:::i;:::-;25256:24;;;;;;;;:13;:24;;;;;;;-1:-1:-1;;;25256:24:130;;;;;;;;-1:-1:-1;;;25256:24:130;;;;;;;;;;;-1:-1:-1;;;25256:24:130;;;;;;;;;-1:-1:-1;;;;;;;;25256:24:130;;;;;;;;-1:-1:-1;;;25256:24:130;;;;;;;;;;;-1:-1:-1;;;;;25256:24:130;;;;;;;;;;;;;;;;;;;;;;;;;:26;;:24;:26::i;:::-;25249:33;;25148:139;:::o;24341:113::-;24411:7;24433:16;:5;:14;:16::i;28723:1617::-;28813:13;28856;;28842:11;:27;28912:11;28834:91;;;;;-1:-1:-1;;;28834:91:130;;;;;;586:25:182;;574:2;559:18;;440:177;28834:91:130;-1:-1:-1;28932:31:130;28966:22;;;:9;:22;;;;;29266;29246:16;;;;;;:42;;;;;;;;:::i;:::-;;:87;;;-1:-1:-1;29312:21:130;29292:16;;;;;;:41;;;;;;;;:::i;:::-;;29246:87;29242:131;;;29350:16;;;;;;28723:1617;-1:-1:-1;;28723:1617:130:o;29242:131::-;29557:13;;;29535:18;-1:-1:-1;;;;;29535:18:130;;;29557:13;;29535:35;;;;:69;;-1:-1:-1;29591:13:130;;-1:-1:-1;;;;;29591:13:130;29582:4;29574:30;;29535:69;29531:120;;;-1:-1:-1;29621:23:130;;28723:1617;-1:-1:-1;;28723:1617:130:o;29531:120::-;29696:15;29723:36;29696:15;29738:21;:4;:19;:21::i;:::-;-1:-1:-1;680:44:180;;599:128;29723:36:130;29719:85;;;-1:-1:-1;29776:21:130;;28723:1617;-1:-1:-1;;;28723:1617:130:o;29719:85::-;29814:35;:11;29829:20;:4;:18;:20::i;29814:35::-;29810:83;;;-1:-1:-1;29866:20:130;;28723:1617;-1:-1:-1;;;28723:1617:130:o;29810:83::-;29899:18;29920:36;29934:21;:4;:19;:21::i;:::-;29920:5;;:13;:36::i;:::-;29899:57;-1:-1:-1;29963:24:130;29992:31;:4;29899:57;29992:19;:31::i;:::-;-1:-1:-1;29962:61:130;-1:-1:-1;30040:29:130;30033:3;:36;;;;;;;;:::i;:::-;;30029:86;;-1:-1:-1;30086:22:130;;28723:1617;-1:-1:-1;;;;;28723:1617:130:o;30029:86::-;30125:35;:11;30140:20;:4;:18;:20::i;30125:35::-;30121:83;;;-1:-1:-1;30177:20:130;;28723:1617;-1:-1:-1;;;;;28723:1617:130:o;30121:83::-;30214:39;:11;30229:24;:4;:22;:24::i;30214:39::-;30210:91;;;-1:-1:-1;30270:24:130;;28723:1617;-1:-1:-1;;;;;28723:1617:130:o;30210:91::-;-1:-1:-1;30314:21:130;;28723:1617;-1:-1:-1;;;;;28723:1617:130:o;12033:315::-;9584:10;9606:4;9584:27;;;9576:97;;;;-1:-1:-1;;;9576:97:130;;;;;;;;;:::i;:::-;-1:-1:-1;;12181:4:130::1;-1:-1:-1::0;;;;;12150:36:130;::::1;::::0;12142:98:::1;;;;-1:-1:-1::0;;;12142:98:130::1;;;;;;;;;;;;12246:18;:40:::0;;-1:-1:-1;;;;;;12246:40:130::1;-1:-1:-1::0;;;;;12246:40:130;::::1;::::0;;::::1;::::0;;12297:46:::1;::::0;12246:40;;12297:46:::1;::::0;::::1;12033:315:::0;:::o;14933:202::-;15029:7;15051:79;15069:10;15081:3;15086:7;15095:34;:13;:32;:34::i;:::-;15051:17;:79::i;25504:157::-;25591:15;;:::i;:::-;25621:22;;;;:9;:22;;;;;;;;;:33;;;;;;;;;-1:-1:-1;;;;;25621:33:130;;;;-1:-1:-1;;;25621:33:130;;-1:-1:-1;;;;;25621:33:130;;;;;;;;;;;;:35;;:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25621:33:130;;;;;;;;-1:-1:-1;;;25621:33:130;;;;;;;;-1:-1:-1;;;25621:33:130;;;;;;;;-1:-1:-1;;;25621:33:130;;;;;;;-1:-1:-1;;;25621:33:130;;;-1:-1:-1;;;;;25621:33:130;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25621:33:130;;;;;;;;;-1:-1:-1;;;25621:33:130;;;;;;;;;;;:35::i;23655:130::-;-1:-1:-1;;;;;23756:13:130;;23734:7;23756:13;;;:5;:13;;;;;:24;;:22;:24::i;12557:350::-;9584:10;9606:4;9584:27;;;9576:97;;;;-1:-1:-1;;;9576:97:130;;;;;;;;;:::i;:::-;;;12735:28:::1;:14;:26;:28::i;:::-;12786:51;12822:14;12786:35;:51::i;:::-;12770:67:::0;;:13:::1;:67:::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;12770:67:130;;;;;;;-1:-1:-1;;;12770:67:130;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;12770:67:130;-1:-1:-1;;;12770:67:130;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;12770:67:130;;;;;-1:-1:-1;;;12770:67:130;;::::1;::::0;::::1;;-1:-1:-1::0;;;;;12770:67:130;-1:-1:-1;;;;;;;;12770:67:130;;::::1;;-1:-1:-1::0;;;;;12770:67:130;;-1:-1:-1;;;12770:67:130;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;12770:67:130;;::::1;-1:-1:-1::0;;;;;;12770:67:130;;;;;;;;;;::::1;::::0;;::::1;;-1:-1:-1::0;;;;12770:67:130::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;12849:53;12885:15:::1;::::0;12849:53:::1;::::0;-1:-1:-1;;12849:53:130::1;12557:350:::0;:::o;21177:862::-;21252:19;21274:29;21291:11;21274:16;:29::i;:::-;21252:51;-1:-1:-1;21326:24:130;21317:5;:33;;;;;;;;:::i;:::-;;21309:86;;;;-1:-1:-1;;;21309:86:130;;;;;;;;;;;;21402:35;21440:22;;;:9;:22;;;;;;;;21468:20;;;:45;;-1:-1:-1;;21468:45:130;21491:22;21468:45;;;21555:16;;;;:29;;-1:-1:-1;;;21555:29:130;;;;21440:22;;21402:35;-1:-1:-1;;;;;21555:16:130;;;;:27;;:29;;;;;21402:35;;21555:29;;;;;;;:16;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21555:29:130;;;;;;;;;;;;:::i;:::-;21520:64;-1:-1:-1;21596:9:130;21591:403;21615:7;:14;21611:1;:18;21591:403;;;21681:5;-1:-1:-1;;;;;21652:35:130;:7;21660:1;21652:10;;;;;;;;:::i;:::-;;;;;;;:17;;;-1:-1:-1;;;;;21652:35:130;;21644:82;;;;-1:-1:-1;;;21644:82:130;;;;;;;;;;;;21857:12;21874:7;21882:1;21874:10;;;;;;;;:::i;:::-;;;;;;;:17;;;-1:-1:-1;;;;;21874:22:130;21897:7;21905:1;21897:10;;;;;;;;:::i;:::-;;;;;;;:15;;;21874:39;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21856:57;;;21929:7;21968;21976:1;21968:10;;;;;;;;:::i;:::-;;;;;;;:17;;;21921:66;;;;;-1:-1:-1;;;21921:66:130;;;;;;;;:::i;:::-;-1:-1:-1;;21631:3:130;;21591:403;;;-1:-1:-1;22005:29:130;;22022:11;;22005:29;;;;;21246:793;;;21177:862;:::o;23979:127::-;24061:7;24083:18;:5;24097:3;24083:13;:18::i;32254:342::-;32365:13;:15;;32329:7;;;;32365:15;32329:7;32365:15;;;:::i;:::-;;;;-1:-1:-1;32417:98:130;;;;;;;;32501:13;32417:98;;;;;;;-1:-1:-1;;;32417:98:130;;;;;;;;-1:-1:-1;;;32417:98:130;;;;;;;;;;;-1:-1:-1;;;32417:98:130;;;;;;;;;-1:-1:-1;;;;;;;;32417:98:130;;;;;;;;-1:-1:-1;;;32417:98:130;;;;;;;;;;;-1:-1:-1;;;;;32417:98:130;;;;;;;;;;;;;;;;;;;;;;;;;32344:36;;-1:-1:-1;32417:98:130;;32446:9;;32457;;32483:15;;32417:28;:98::i;:::-;32387:21;;;;:9;:21;;;;;;;;;:128;;;;;;-1:-1:-1;;;;;32387:128:130;-1:-1:-1;;;32387:128:130;-1:-1:-1;;;;;32387:128:130;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32387:128:130;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;32387:128:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32387:128:130;;;-1:-1:-1;;;32387:128:130;-1:-1:-1;;;;32387:128:130;;;;-1:-1:-1;;;32387:128:130;;-1:-1:-1;;;;32387:128:130;;;-1:-1:-1;;;32387:128:130;-1:-1:-1;;;;32387:128:130;;;-1:-1:-1;;;32387:128:130;;;;;-1:-1:-1;;;;32387:128:130;;;-1:-1:-1;;;32387:128:130;-1:-1:-1;;32387:128:130;;;;;;;;;;;-1:-1:-1;;32387:128:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32387:128:130;-1:-1:-1;;;;;;32387:128:130;;;-1:-1:-1;;;;;32387:128:130;;;;;;;;;;;32527:40;;;;;;32536:10;;32527:40;;-1:-1:-1;;32527:40:130;32581:10;32254:342;-1:-1:-1;;;32254:342:130:o;1219:160:46:-;1328:43;;-1:-1:-1;;;;;14590:32:182;;;1328:43:46;;;14572:51:182;14639:18;;;14632:34;;;1301:71:46;;1321:5;;1343:14;;;;;14545:18:182;;1328:43:46;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1328:43:46;;;;;;;;;;;1301:19;:71::i;:::-;1219:160;;;:::o;30924:550:130:-;31032:7;-1:-1:-1;;;;;31055:17:130;;31047:76;;;;-1:-1:-1;;;31047:76:130;;;;;;;;;;;;-1:-1:-1;;;;;31129:12:130;;;;;;:5;:12;;;;;:25;;31146:7;31129:16;:25::i;:::-;-1:-1:-1;31160:18:130;;-1:-1:-1;31160:5:130;31170:7;31160:9;:18::i;:::-;-1:-1:-1;;31208:15:130;:17;;31185:20;;;31208:17;;;:::i;:::-;;;;;31185:40;;31260:126;;;;;;;;31287:7;31260:126;;;;31307:40;31322:15;31341:6;31307:40;:::i;:::-;31260:126;;-1:-1:-1;;;;;31260:126:130;;;;;;;;;;-1:-1:-1;31260:126:130;;;;;;;31232:25;;;:11;:25;;;;;:154;;;;;;;;31260:126;31232:154;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31232:154:130;-1:-1:-1;;;;;;31232:154:130;;;;;;;;;;;;;;31398:45;31244:12;;31398:45;;;;31435:7;586:25:182;;574:2;559:18;;440:177;31398:45:130;;;;;;;;31457:12;30924:550;-1:-1:-1;;;;;30924:550:130:o;2731:286:143:-;2824:7;2847:39;:5;2870:15;-1:-1:-1;551:43:180;471:126;2847:39:143;2839:101;;;;-1:-1:-1;;;2839:101:143;;;;;;;;;;;;2953:59;2977:34;2994:5;2977:32;:34::i;:::-;2953:5;;:23;:59::i;:::-;-1:-1:-1;;;;;2946:66:143;;2731:286;-1:-1:-1;;;2731:286:143:o;1618:188:46:-;1745:53;;-1:-1:-1;;;;;14897:32:182;;;1745:53:46;;;14879:51:182;14966:32;;;14946:18;;;14939:60;15015:18;;;15008:34;;;1718:81:46;;1738:5;;1760:18;;;;;14852::182;;1745:53:46;14677:371:182;1718:81:46;1618:188;;;;:::o;957:352:143:-;1041:7;1050;1065:15;1083:14;:5;:12;:14::i;:::-;1065:32;;1107:7;1118:1;1107:12;1103:58;;-1:-1:-1;;;;;1129:25:143;;-1:-1:-1;1129:25:143;;-1:-1:-1;1129:25:143;;1103:58;1166:14;1183:19;:7;:17;:19::i;:::-;1166:36;;1208:56;1219:26;:15;:24;:26::i;:::-;1247:16;1257:6;1247:7;:16;:::i;:::-;1208:5;;:56;:10;:56::i;:::-;-1:-1:-1;1278:7:143;;-1:-1:-1;1287:16:143;1297:6;1278:7;1287:16;:::i;:::-;-1:-1:-1;;;;;1270:34:143;;;;-1:-1:-1;1270:34:143;;-1:-1:-1;;;957:352:143;;;;;;:::o;2145:184:148:-;-1:-1:-1;;;;;;;;;;;;;;;;;2252:72:148;;;;;;;;2265:25;2272:17;614:3;568:49;;471:151;2265:25;2252:72;;;;-1:-1:-1;;;;;723:53:148;;2297:25;2252:72;;2245:79;2145:184;-1:-1:-1;;2145:184:148:o;7274:188:147:-;7385:20;;;;7361:9;;7385:72;;:20;;;;;;;-1:-1:-1;;;7421:23:147;;;7385:72;:::i;1280:271:148:-;1372:16;1396:18;1417:25;1424:17;614:3;568:49;;471:151;1417:25;1396:46;-1:-1:-1;1448:14:148;1465:20;1478:7;1396:46;1465:20;:::i;:::-;1448:37;;1498:48;1508:17;1527:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;1498:48:148;1023:3;1015:11;;;-1:-1:-1;;;;;917:54:148;;1006:21;785:248;;;;;1498:48;1491:55;1280:271;-1:-1:-1;;;;;1280:271:148:o;2502:160:150:-;2617:24;;;;:40;;2649:7;2617:31;:40::i;:::-;2590:11;:24;;:67;;;;2502:160;;:::o;1555:271:148:-;1647:16;-1:-1:-1;;;;;723:53:148;;1647:16;1740:20;1753:7;723:53;1740:20;:::i;:::-;1723:37;;1773:48;1783:17;1802:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;1773:48:148;-1:-1:-1;;;;;;1169:54:148;;;;1258:12;;1037:239;2835:160:150;2950:24;;;;:40;;2982:7;2950:31;:40::i;3823:676:149:-;3910:20;;:::i;:::-;3945:549;;;3982:129;;;;;3945:549;4032:21;;;;:32;;;;3945:549;;;3982:129;;;4080:22;;;;-1:-1:-1;;;;;3982:129:149;;;;;3945:549;;;4132:23;;:34;;3982:129;3945:549;;;;;;;4192:26;;;:37;;3945:549;;;;4255:26;;;;3945:549;;;;;;4255:37;3945:549;;;;4315:36;:11;:23;;;:34;;929:40:178;;;822:153;4315:36:149;3945:549;;;;4367:11;:18;;;-1:-1:-1;;;;;3945:549:149;;;;;4412:11;:29;;;-1:-1:-1;;;;;3945:549:149;;;;;4463:11;:24;;;-1:-1:-1;;;;;3945:549:149;;;;3938:556;;3823:676;;;:::o;2147:118:143:-;2224:7;2246:14;:5;:12;:14::i;:::-;-1:-1:-1;;;;;2239:21:143;;2147:118;-1:-1:-1;;2147:118:143:o;7635:184:147:-;7721:9;7745:69;:27;7760:11;7745:14;:27::i;:::-;7775:26;;;;-1:-1:-1;;;7775:26:147;;;;7385:72;:::i;4658:2441::-;4840:18;;4772:20;;;;-1:-1:-1;;;4840:18:147;;-1:-1:-1;;;;;4840:18:147;4826:32;;4822:131;;;-1:-1:-1;4876:29:147;;-1:-1:-1;4907:38:147;4868:78;;4822:131;4959:19;4981:64;4993:11;5006:5;:12;;;;;;;;;;-1:-1:-1;;;;;5006:12:147;-1:-1:-1;;;;;4981:64:147;5020:4;5026:18;4981:11;:64::i;:::-;4959:86;;5055:11;5070:1;5055:16;5051:112;;5089:28;5119:36;5081:75;;;;;;;5051:112;5186:11;5172;:25;5168:127;;;5215:28;5245:42;5207:81;;;;;;;5168:127;5302:11;5315;5330:16;:5;:14;:16::i;:::-;5301:45;;-1:-1:-1;5301:45:147;-1:-1:-1;5352:17:147;5372:9;5301:45;;5372:9;:::i;:::-;5352:29;;5403:11;5391:9;:23;5387:125;;;5432:29;5463:41;5424:81;;;;;;;;;;5387:125;5754:9;5747:3;:16;5743:115;;5781:29;5812:38;5773:78;;;;;;;;;;5743:115;5924:23;;;;5864:37;;5904:47;;5917:30;;-1:-1:-1;;;5924:23:147;;-1:-1:-1;;;;;5924:23:147;5917:4;:30;:::i;:::-;-1:-1:-1;;;;;5904:47:147;5949:1;5904:12;:47::i;:::-;5864:87;;5957:29;5989:79;6001:9;6012:29;6043:4;6049:18;5989:11;:79::i;:::-;5957:111;;6499:9;6475:21;:33;6471:131;;;6526:28;6556:38;6518:77;;;;;;;;;;;;6471:131;6896:21;6889:3;:28;6885:126;;6935:29;6966:37;6927:77;;;;;;;;;;;;6885:126;-1:-1:-1;7025:29:147;;7056:37;;-1:-1:-1;4658:2441:147;-1:-1:-1;;;;;;;;4658:2441:147:o;7992:183::-;8078:9;8102:68;:26;8116:11;8102:13;:26::i;:::-;8131;;;;-1:-1:-1;;;8131:26:147;;;;7385:72;:::i;8356:184::-;8446:9;8470:65;:26;8484:11;8470:13;:26::i;:::-;8499:23;;;;-1:-1:-1;;;8499:23:147;;;;7385:72;:::i;1638:395:144:-;1769:17;;1728:9;;1769:17;;;;;-1:-1:-1;;;1832:20:144;;;;;-1:-1:-1;;;1898:20:144;;;;1945:83;:66;1960:33;1992:1;1769:17;1960:33;:::i;:::-;1997:14;1945:66;:::i;:::-;2014:14;1945:83;:::i;5546:798:150:-;5628:15;;:::i;:::-;5658:681;;;5683:421;;;;;;5728:23;;;;:34;;;;5658:681;;;;5683:421;;;5790:26;;;;:37;;5683:421;;;;5855:26;;;5658:681;;5683:421;;;;5855:37;5683:421;;;;5917:36;:11;:23;;;:34;;929:40:178;;;822:153;5917:36:150;5683:421;;;;5971:11;:18;;;-1:-1:-1;;;;;5683:421:150;;;;;6018:11;:29;;;-1:-1:-1;;;;;5683:421:150;;;;;6071:11;:24;;;-1:-1:-1;;;;;5683:421:150;;;;5658:681;;;;6125:11;:23;;;5658:681;;;;;;;;:::i;:::-;;;6165:19;;;;-1:-1:-1;;;;;5658:681:150;;;;;;;6202:20;;5658:681;;;;;;6240:20;;;;5658:681;;;6240:31;;5658:681;;;;6295:37;:11;:24;;;:35;:37::i;2591:2409:144:-;630:1;2668:5;:12;;;:28;;2660:92;;;;-1:-1:-1;;;2660:92:144;;;;;;;;;;;;676:4;2766:5;:12;;;:28;;2758:90;;;;-1:-1:-1;;;2758:90:144;;;;;;;;;;;;739:4;2870:5;:23;;;:52;;2855:143;;;;-1:-1:-1;;;2855:143:144;;;;;;;;;;;;788:1;3013:5;:18;;;:33;;3005:102;;;;-1:-1:-1;;;3005:102:144;;;;;;;;;;;;3121:18;;;;-1:-1:-1;;;;;;3121:33:144;3113:102;;;;-1:-1:-1;;;3113:102:144;;;;;;;;;;;;3237:19;;:30;;;943:1;-1:-1:-1;3237:51:144;3222:131;;;;-1:-1:-1;;;3222:131:144;;;;;;;;;;;;3374:19;;:30;;;-1:-1:-1;;;;;;3374:51:144;3359:129;;;;-1:-1:-1;;;3359:129:144;;;;;;;;;;;;3811:19;;:29;1114:2;-1:-1:-1;938:44:180;3803:116:144;;;;-1:-1:-1;;;3803:116:144;;;;;;;:::i;:::-;3940:19;;:29;3988:16;-1:-1:-1;680:44:180;3925:154:144;;;;-1:-1:-1;;;3925:154:144;;;;;;;:::i;:::-;4094:17;;;;1114:2;-1:-1:-1;938:44:180;4086:106:144;;;;-1:-1:-1;;;4086:106:144;;;;;;;:::i;:::-;4206:17;;;;1177:14;-1:-1:-1;680:44:180;4198:104:144;;;;-1:-1:-1;;;4198:104:144;;;;;;;:::i;:::-;4317:20;;;;1114:2;-1:-1:-1;938:44:180;4309:112:144;;;;-1:-1:-1;;;4309:112:144;;;;;;;:::i;:::-;4435:20;;;;1177:14;-1:-1:-1;680:44:180;4427:110:144;;;;-1:-1:-1;;;4427:110:144;;;;;;;:::i;:::-;4552:20;;;;1114:2;-1:-1:-1;938:44:180;4544:112:144;;;;-1:-1:-1;;;4544:112:144;;;;;;;:::i;:::-;4670:20;;;;1177:14;-1:-1:-1;680:44:180;4662:110:144;;;;-1:-1:-1;;;4662:110:144;;;;;;;:::i;:::-;4787:17;;;;1114:2;-1:-1:-1;938:44:180;4779:106:144;;;;-1:-1:-1;;;4779:106:144;;;;;;;:::i;:::-;4899:17;;;;1177:14;-1:-1:-1;680:44:180;4891:104:144;;;;-1:-1:-1;;;4891:104:144;;;;;;;:::i;:::-;2591:2409;:::o;2580:1061:149:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2756:21:149;;:32;;;;-1:-1:-1;;;;;;2756:52:149;2748:90;;;;-1:-1:-1;;;2748:90:149;;17611:2:182;2748:90:149;;;17593:21:182;17650:2;17630:18;;;17623:30;-1:-1:-1;;;17669:18:182;;;17662:55;17734:18;;2748:90:149;17409:349:182;2748:90:149;2852:20;;;;-1:-1:-1;;;;;;2852:40:149;2844:80;;;;-1:-1:-1;;;2844:80:149;;17965:2:182;2844:80:149;;;17947:21:182;18004:2;17984:18;;;17977:30;18043:29;18023:18;;;18016:57;18090:18;;2844:80:149;17763:351:182;2844:80:149;2938:14;;;;-1:-1:-1;;;;;;2938:34:149;2930:68;;;;-1:-1:-1;;;2930:68:149;;18321:2:182;2930:68:149;;;18303:21:182;18360:2;18340:18;;;18333:30;-1:-1:-1;;;18379:18:182;;;18372:51;18440:18;;2930:68:149;18119:345:182;2930:68:149;3012:25;;;;-1:-1:-1;;;;;;3012:45:149;3004:90;;;;-1:-1:-1;;;3004:90:149;;18671:2:182;3004:90:149;;;18653:21:182;;;18690:18;;;18683:30;18749:34;18729:18;;;18722:62;18801:18;;3004:90:149;18469:356:182;3004:90:149;3108:528;;;;;;;;3153:30;:7;:19;;;:28;:30::i;:::-;3108:528;;;;;;3207:33;:7;:22;;;:31;:33::i;:::-;3108:528;;;;;;3264:33;:7;:22;;;:31;:33::i;:::-;3108:528;;;;;;3318:30;:7;:19;;;:28;:30::i;:::-;3108:528;;;;;;3364:25;:7;:14;;;:23;:25::i;:::-;-1:-1:-1;;;;;3108:528:149;;;;;3416:36;:7;:25;;;:34;:36::i;:::-;-1:-1:-1;;;;;3108:528:149;;;;;3474:31;:7;:20;;;:29;:31::i;:::-;-1:-1:-1;;;;;3108:528:149;;;;;3525:43;:7;:21;;;:32;;;:41;:43::i;:::-;-1:-1:-1;;;;;3108:528:149;;;;;3587:42;:7;:21;;;:31;;;:40;:42::i;:::-;3108:528;;;;3101:535;2580:1061;-1:-1:-1;;2580:1061:149:o;3692:697:150:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3884:500:150;;;;;;;;-1:-1:-1;;;;;3884:500:150;;;;3952:20;;;;-1:-1:-1;;;;;3884:500:150;;;;;;;;-1:-1:-1;3884:500:150;;;;4032:20;:9;:18;:20::i;:::-;3884:500;;;;;;4073:7;:19;;;3884:500;;;;;;4116:7;:22;;;3884:500;;;;;;4162:7;:22;;;3884:500;;;;;;4205:7;:19;;;3884:500;;;;;;4240:7;:14;;;-1:-1:-1;;;;;3884:500:150;;;;;4298:1;3884:500;;;;4317:8;-1:-1:-1;;;;;3884:500:150;;;;;4352:7;:25;;;-1:-1:-1;;;;;3884:500:150;;;;3877:507;;3692:697;;;;;;:::o;7686:720:46:-;7766:18;7794:19;7932:4;7929:1;7922:4;7916:11;7909:4;7903;7899:15;7896:1;7889:5;7882;7877:60;7989:7;7979:176;;8033:4;8027:11;8078:16;8075:1;8070:3;8055:40;8124:16;8119:3;8112:29;7979:176;-1:-1:-1;;8232:1:46;8226:8;8182:16;;-1:-1:-1;8258:15:46;;:68;;8310:11;8325:1;8310:16;;8258:68;;;-1:-1:-1;;;;;8276:26:46;;;:31;8258:68;8254:146;;;8382:5;8349:40;;-1:-1:-1;;;8349:40:46;;;;;;;;:::i;1532:472:143:-;1616:7;1625;1640:15;1658:14;:5;:12;:14::i;:::-;1640:32;;1682:7;1693:1;1682:12;1678:58;;-1:-1:-1;;;;;1704:25:143;;-1:-1:-1;1704:25:143;;-1:-1:-1;1704:25:143;;1678:58;1741:14;1758:19;:7;:17;:19::i;:::-;1741:36;-1:-1:-1;1868:10:143;1791:7;1741:36;-1:-1:-1;;;;;1791:17:143;;;;;;;;1783:114;;;;-1:-1:-1;;;1783:114:143;;-1:-1:-1;;;;;19050:32:182;;;1783:114:143;;;19032:51:182;-1:-1:-1;;;;;19119:32:182;;;19099:18;;;19092:60;19188:32;19168:18;;;19161:60;19005:18;;1783:114:143;18830:397:182;1783:114:143;;;;1903:56;1914:26;:15;:24;:26::i;:::-;1942:16;1952:6;1942:7;:16;:::i;1903:56::-;-1:-1:-1;1973:7:143;;-1:-1:-1;1982:16:143;1992:6;1973:7;1982:16;:::i;171:148:180:-;235:9;272:43;312:2;289;272:43;:::i;15296:213:62:-;15352:6;15382:16;15374:24;;15370:103;;;15421:41;;-1:-1:-1;;;15421:41:62;;15452:2;15421:41;;;19616:36:182;19668:18;;;19661:34;;;19589:18;;15421:41:62;19435:266:182;15370:103:62;-1:-1:-1;15496:5:62;15296:213::o;2716:606:65:-;2834:24;;2801:7;;;2834:24;2933:1;2927:7;;2923:234;;;2950:11;2970:14;2980:3;2970:9;:14::i;:::-;2964:20;;:3;:20;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;2950:34;;-1:-1:-1;7642:28:65;;3008:42;;;;;3002:48;;;;2998:149;;;3077:3;3070:10;;2998:149;;;3125:7;:3;3131:1;3125:7;:::i;:::-;3119:13;;2998:149;2936:221;2923:234;3167:11;3181:53;3200:4;3219:3;3224;3229:4;3181:18;:53::i;:::-;3167:67;-1:-1:-1;3252:8:65;;:63;;3267:41;3281:4;3300:7;3306:1;3300:3;:7;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;;7642:28;;7421:265;3267:41;:48;-1:-1:-1;;;3267:48:65;;-1:-1:-1;;;;;3267:48:65;3252:63;;;3263:1;3252:63;3245:70;2716:606;-1:-1:-1;;;;;;;2716:606:65:o;3442:206::-;3537:24;;3504:7;;3578:8;;:63;;3593:41;3607:4;3626:7;3632:1;3626:3;:7;:::i;3593:41::-;:48;-1:-1:-1;;;3593:48:65;;-1:-1:-1;;;;;3593:48:65;3578:63;;;3589:1;3571:70;3442:206;-1:-1:-1;;;3442:206:65:o;3156:218:62:-;3213:7;-1:-1:-1;;;;;3236:25:62;;3232:105;;;3284:42;;-1:-1:-1;;;3284:42:62;;3315:3;3284:42;;;19616:36:182;19668:18;;;19661:34;;;19589:18;;3284:42:62;19435:266:182;1277:210:65;1389:16;;1442:38;1450:4;1469:3;1474:5;1442:7;:38::i;:::-;1435:45;;;;1277:210;;;;;;;:::o;9264:218:62:-;9321:7;-1:-1:-1;;;;;9344:25:62;;9340:105;;;9392:42;;-1:-1:-1;;;9392:42:62;;9423:3;9392:42;;;19616:36:182;19668:18;;;19661:34;;;19589:18;;9392:42:62;19435:266:182;9351:238:61;9452:7;9506:76;9522:26;9539:8;9522:16;:26::i;:::-;:59;;;;;9580:1;9565:11;9552:25;;;;;:::i;:::-;9562:1;9559;9552:25;:29;9522:59;34914:9:62;34907:17;;34795:145;9506:76:61;9478:25;9485:1;9488;9491:11;9478:6;:25::i;:::-;:104;;;;:::i;3171:202:150:-;3252:11;3265;3290:33;:11;:24;;;614:3:148;568:49;;471:151;3290:33:150;3284:39;;3335:33;:11;:24;;;-1:-1:-1;;;;;723:53:148;;626:155;3335:33:150;3329:39;;3171:202;;;:::o;3969:704:61:-;4031:7;4054:1;4059;4054:6;4050:150;;4154:35;1035:4:51;4154:11:61;:35::i;:::-;4650:1;4645;4641;:5;4640:11;;;;;:::i;:::-;;4654:1;4640:15;4630:5;;;4614:42;;3969:704;-1:-1:-1;;;3969:704:61:o;339:175:178:-;402:19;461:47;496:10;461:17;:47::i;13296:213:62:-;13352:6;-1:-1:-1;;;;;13374:24:62;;13370:103;;;13452:2;13421:41;;-1:-1:-1;;;13421:41:62;;;;;19616:36:182;;;;19668:18;;;19661:34;;;19589:18;;13421:41:62;19435:266:182;11296:213:62;11352:6;-1:-1:-1;;;;;11374:24:62;;11370:103;;;11421:41;;-1:-1:-1;;;11421:41:62;;11452:2;11421:41;;;19616:36:182;19668:18;;;19661:34;;;19589:18;;11421:41:62;19435:266:182;18080:5181:61;18128:7;18246:1;18241;:6;18237:53;;-1:-1:-1;18274:1:61;18080:5181::o;18237:53::-;19230:1;19258;-1:-1:-1;;;19278:16:61;;19274:92;;19321:3;19314:10;;;;;19349:2;19342:9;19274:92;-1:-1:-1;;;19383:2:61;:15;19379:90;;19425:2;19418:9;;;;;19452:2;19445:9;19379:90;-1:-1:-1;;;19486:2:61;:15;19482:90;;19528:2;19521:9;;;;;19555:2;19548:9;19482:90;19596:7;19589:2;:15;19585:89;;19631:2;19624:9;;;;;19658:1;19651:8;19585:89;19698:6;19691:2;:14;19687:87;;19732:1;19725:8;;;;;19758:1;19751:8;19687:87;19798:6;19791:2;:14;19787:87;;19832:1;19825:8;;;;;19858:1;19851:8;19787:87;19898:6;19891:2;:14;19887:61;;19932:1;19925:8;19887:61;20374:1;:6;20385:1;20373:13;;;;;22284:1;20373:13;22284:6;;;;:::i;:::-;;22279:2;:11;22278:18;;22273:23;;22404:1;22397:2;22393:1;:6;;;;;:::i;:::-;;22388:2;:11;22387:18;;22382:23;;22515:1;22508:2;22504:1;:6;;;;;:::i;:::-;;22499:2;:11;22498:18;;22493:23;;22624:1;22617:2;22613:1;:6;;;;;:::i;:::-;;22608:2;:11;22607:18;;22602:23;;22734:1;22727:2;22723:1;:6;;;;;:::i;:::-;;22718:2;:11;22717:18;;22712:23;;22844:1;22837:2;22833:1;:6;;;;;:::i;:::-;;22828:2;:11;22827:18;;22822:23;;23216:28;23241:2;23237:1;:6;;;;;:::i;:::-;;23232:11;;;34795:145:62;23216:28:61;23211:33;;;18080:5181;-1:-1:-1;;;18080:5181:61:o;6061:433:65:-;6218:7;6237:230;6250:4;6244:3;:10;6237:230;;;6270:11;6284:23;6297:3;6302:4;6284:12;:23::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;6270:37;;-1:-1:-1;6325:35:65;;;;7642:28;;6325:29;;;:35;6321:136;;;6387:3;6380:10;;6321:136;;;6435:7;:3;6441:1;6435:7;:::i;:::-;6429:13;;6321:136;6256:211;6237:230;;;-1:-1:-1;6483:4:65;6061:433;-1:-1:-1;;;6061:433:65:o;4789:922::-;4970:11;;4910:16;;;;4996:7;;4992:713;;5019:26;5048:28;5062:4;5068:7;5074:1;5068:3;:7;:::i;5048:28::-;5107:9;;;;-1:-1:-1;5107:9:65;;;;;-1:-1:-1;;;5150:11:65;;-1:-1:-1;;;;;5150:11:65;;5235:13;;;;5231:89;;;5275:30;;-1:-1:-1;;;5275:30:65;;;;;;;;;;;5231:89;5394:3;5383:14;;:7;:14;;;5379:163;;5417:19;;;;-1:-1:-1;;;;;;;;5417:19:65;;;;;;5379:163;;;5485:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;5485:41:65;;;;;;;;;;5475:52;;;;;;;-1:-1:-1;5475:52:65;;;;;;;;;;;;;;-1:-1:-1;;;5475:52:65;;;;;;;;;;5379:163;5563:9;-1:-1:-1;5574:5:65;;-1:-1:-1;5555:25:65;;-1:-1:-1;;;5555:25:65;4992:713;-1:-1:-1;;5621:41:65;;;;;;;;;;;;;;;-1:-1:-1;;;;;5621:41:65;;;;;;;;;;5611:52;;;;;;;-1:-1:-1;5611:52:65;;;;;;;;;;;;;-1:-1:-1;;;5611:52:65;;;;;;;;;;;;-1:-1:-1;;5655:5:65;5677:17;;29534:122:61;29602:4;29643:1;29631:8;29625:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;29648:1;29625:24;29618:31;;29534:122;;;:::o;4996:4226::-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:61;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:51;3060:42:61;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:61;;;;;:::o;1776:194:51:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;3595:153:61;3657:7;3730:11;3740:1;3731:5;;;3730:11;:::i;:::-;3720:21;;3721:5;;;3720:21;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:141:182:-;-1:-1:-1;;;;;99:31:182;;89:42;;79:70;;145:1;142;135:12;160:275;237:6;290:2;278:9;269:7;265:23;261:32;258:52;;;306:1;303;296:12;258:52;345:9;332:23;364:41;399:5;364:41;:::i;622:226::-;681:6;734:2;722:9;713:7;709:23;705:32;702:52;;;750:1;747;740:12;702:52;-1:-1:-1;795:23:182;;622:226;-1:-1:-1;622:226:182:o;853:426::-;939:6;947;1000:2;988:9;979:7;975:23;971:32;968:52;;;1016:1;1013;1006:12;968:52;1055:9;1042:23;1074:41;1109:5;1074:41;:::i;:::-;1134:5;-1:-1:-1;1191:2:182;1176:18;;1163:32;1204:43;1163:32;1204:43;:::i;:::-;1266:7;1256:17;;;853:426;;;;;:::o;1476:409::-;1576:6;1584;1637:2;1625:9;1616:7;1612:23;1608:32;1605:52;;;1653:1;1650;1643:12;1605:52;1692:9;1679:23;1711:41;1746:5;1711:41;:::i;:::-;1771:5;1849:2;1834:18;;;;1821:32;;-1:-1:-1;;;1476:409:182:o;2389:219::-;-1:-1:-1;;;;;2569:32:182;;;;2551:51;;2539:2;2524:18;;2389:219::o;2613:377::-;2681:6;2689;2742:2;2730:9;2721:7;2717:23;2713:32;2710:52;;;2758:1;2755;2748:12;2710:52;2803:23;;;-1:-1:-1;2902:2:182;2887:18;;2874:32;2915:43;2874:32;2915:43;:::i;3147:245::-;3067:12;;3055:25;;3129:4;3118:16;;;3112:23;3096:14;;;3089:47;3331:2;3316:18;;3343:43;2995:147;3659:515;3733:6;3741;3749;3802:2;3790:9;3781:7;3777:23;3773:32;3770:52;;;3818:1;3815;3808:12;3770:52;3863:23;;;-1:-1:-1;3983:2:182;3968:18;;3955:32;;-1:-1:-1;4065:2:182;4050:18;;4037:32;4107:15;;4100:23;4088:36;;4078:64;;4138:1;4135;4128:12;4078:64;4161:7;4151:17;;;3659:515;;;;;:::o;5442:127::-;5503:10;5498:3;5494:20;5491:1;5484:31;5534:4;5531:1;5524:15;5558:4;5555:1;5548:15;5574:241;5659:1;5652:5;5649:12;5639:143;;5704:10;5699:3;5695:20;5692:1;5685:31;5739:4;5736:1;5729:15;5767:4;5764:1;5757:15;5639:143;5791:18;;5574:241::o;5820:217::-;5971:2;5956:18;;5983:48;5960:9;6013:6;5983:48;:::i;6250:1201::-;6396:4;6438:3;6427:9;6423:19;6415:27;;6467:6;6461:13;6507:2;6501:9;6490;6483:28;6563:4;6559:2;6555:13;6549:20;6542:4;6531:9;6527:20;6520:50;6622:4;6618:2;6614:13;6608:20;6601:4;6590:9;6586:20;6579:50;6681:4;6677:2;6673:13;6667:20;6660:4;6649:9;6645:20;6638:50;6740:4;6736:2;6732:13;6726:20;6719:4;6708:9;6704:20;6697:50;6799:4;6795:2;6791:13;6785:20;6778:4;6767:9;6763:20;6756:50;6858:4;6854:2;6850:13;6844:20;6837:4;6826:9;6822:20;6815:50;;6912:4;6904:6;6900:17;6894:24;6927:65;6986:4;6975:9;6971:20;6957:12;6927:65;:::i;:::-;-1:-1:-1;7041:4:182;7029:17;;7023:24;-1:-1:-1;;;;;2346:31:182;;;7114:6;7099:22;;2334:44;7171:4;7159:17;;7153:24;2346:31;7244:6;7229:22;;2334:44;7310:4;7298:17;;7292:24;7283:6;7268:22;;7261:56;7366:4;7354:17;;;7348:24;3067:12;;7437:6;7422:22;;3055:25;3129:4;3118:16;3112:23;3096:14;;;;3089:47;6250:1201;:::o;7456:127::-;7517:10;7512:3;7508:20;7505:1;7498:31;7548:4;7545:1;7538:15;7572:4;7569:1;7562:15;7588:255;7660:2;7654:9;7702:6;7690:19;;-1:-1:-1;;;;;7724:34:182;;7760:22;;;7721:62;7718:88;;;7786:18;;:::i;:::-;7822:2;7815:22;7588:255;:::o;7848:257::-;7920:4;7914:11;;;7952:17;;-1:-1:-1;;;;;7984:34:182;;8020:22;;;7981:62;7978:88;;;8046:18;;:::i;8110:275::-;8181:2;8175:9;8246:2;8227:13;;-1:-1:-1;;8223:27:182;8211:40;;-1:-1:-1;;;;;8266:34:182;;8302:22;;;8263:62;8260:88;;;8328:18;;:::i;:::-;8364:2;8357:22;8110:275;;-1:-1:-1;8110:275:182:o;8390:1474::-;8481:6;8525:9;8516:7;8512:23;8562:3;8558:2;8554:12;8578:2;8575:22;;;8593:1;8590;8583:12;8575:22;-1:-1:-1;8635:22:182;;:::i;:::-;8677:4;8673:2;8669:13;8666:33;;;8695:1;8692;8685:12;8666:33;8723:22;;:::i;:::-;8790:23;;8822:24;;8919:2;8904:18;;;8891:32;8939:16;;;8932:33;8974:22;;;9069:4;9054:20;;;9041:34;9091:14;;;9084:31;;;;9188:2;9173:18;;;9160:32;9208:16;;;9201:33;;;;9307:3;9292:19;;;9279:33;9328:14;;;9321:31;;;;9425:3;9410:19;;;9397:33;9446:15;;;9439:32;;;;9544:3;9529:19;;;9516:33;9565:15;;;9558:32;;;;9663:3;9648:19;;;9635:33;9684:15;;;9677:32;;;;9784:6;9769:22;;;9756:36;9808:15;;;9801:33;;;;-1:-1:-1;8981:5:182;;8390:1474;-1:-1:-1;;8390:1474:182:o;10132:300::-;-1:-1:-1;;;;;10324:32:182;;;10306:51;;10393:32;;10388:2;10373:18;;10366:60;10294:2;10279:18;;10132:300::o;10754:127::-;10815:10;10810:3;10806:20;10803:1;10796:31;10846:4;10843:1;10836:15;10870:4;10867:1;10860:15;10886:125;10951:9;;;10972:10;;;10969:36;;;10985:18;;:::i;11016:128::-;11083:9;;;11104:11;;;11101:37;;;11118:18;;:::i;11762:2053::-;11882:6;11935:2;11923:9;11914:7;11910:23;11906:32;11903:52;;;11951:1;11948;11941:12;11903:52;11984:9;11978:16;-1:-1:-1;;;;;12009:6:182;12006:30;12003:50;;;12049:1;12046;12039:12;12003:50;12072:22;;12125:4;12117:13;;12113:27;-1:-1:-1;12103:55:182;;12154:1;12151;12144:12;12103:55;12187:2;12181:9;-1:-1:-1;;;;;12205:6:182;12202:30;12199:56;;;12235:18;;:::i;:::-;12281:6;12278:1;12274:14;12308:28;12332:2;12328;12324:11;12308:28;:::i;:::-;12370:19;;;12414:2;12444:11;;;12440:20;;;12405:12;;;;12472:19;;;12469:39;;;12504:1;12501;12494:12;12469:39;12536:2;12532;12528:11;12517:22;;12548:1237;12564:6;12559:3;12556:15;12548:1237;;;12643:3;12637:10;-1:-1:-1;;;;;12666:11:182;12663:35;12660:55;;;12711:1;12708;12701:12;12660:55;12738:20;;12810:4;12782:16;;;-1:-1:-1;;12778:30:182;12774:41;12771:61;;;12828:1;12825;12818:12;12771:61;12858:22;;:::i;:::-;12922:2;12918;12914:11;12908:18;12939:43;12974:7;12939:43;:::i;:::-;12995:22;;13060:4;13052:13;;13046:20;-1:-1:-1;;;;;13082:32:182;;13079:52;;;13127:1;13124;13117:12;13079:52;13177:2;13166:8;13162:2;13158:17;13154:26;13144:36;;;13222:7;13215:4;13211:2;13207:13;13203:27;13193:55;;13244:1;13241;13234:12;13193:55;13283:2;13277:9;-1:-1:-1;;;;;13305:8:182;13302:32;13299:58;;;13337:18;;:::i;:::-;13385:59;13434:2;13409:19;;-1:-1:-1;;13405:33:182;13440:2;13401:42;13385:59;:::i;:::-;13473:8;13464:7;13457:25;13529:7;13524:2;13513:8;13509:2;13505:17;13501:26;13498:39;13495:59;;;13550:1;13547;13540:12;13495:59;13604:8;13599:2;13595;13591:11;13586:2;13577:7;13573:16;13567:46;13666:1;13661:2;13650:8;13641:7;13637:22;13633:31;13626:42;13704:7;13699:2;13692:5;13688:14;13681:31;;;13737:5;13732:3;13725:18;;;13772:2;13767:3;13763:12;13756:19;;12590:2;12585:3;12581:12;12574:19;;12548:1237;;13820:127;13881:10;13876:3;13872:20;13869:1;13862:31;13912:4;13909:1;13902:15;13936:4;13933:1;13926:15;13952:301;14081:3;14119:6;14113:13;14165:6;14158:4;14150:6;14146:17;14141:3;14135:37;14227:1;14191:16;;14216:13;;;-1:-1:-1;14191:16:182;13952:301;-1:-1:-1;13952:301:182:o;14258:135::-;14297:3;14318:17;;;14315:43;;14338:18;;:::i;:::-;-1:-1:-1;14385:1:182;14374:13;;14258:135::o;15053:195::-;-1:-1:-1;;;;;15122:27:182;;;15151;;;15118:61;;15191:28;;15188:54;;;15222:18;;:::i;15253:191::-;-1:-1:-1;;;;;15321:26:182;;;15349;;;15317:59;;15388:27;;15385:53;;;15418:18;;:::i;15449:127::-;15510:10;15505:3;15501:20;15498:1;15491:31;15541:4;15538:1;15531:15;15565:4;15562:1;15555:15;15581:120;15621:1;15647;15637:35;;15652:18;;:::i;:::-;-1:-1:-1;15686:9:182;;15581:120::o;15706:332::-;15908:2;15890:21;;;15947:1;15927:18;;;15920:29;-1:-1:-1;;;15980:2:182;15965:18;;15958:39;16029:2;16014:18;;15706:332::o;16043:335::-;16245:2;16227:21;;;16284:2;16264:18;;;16257:30;-1:-1:-1;;;16318:2:182;16303:18;;16296:41;16369:2;16354:18;;16043:335::o;16383:338::-;16585:2;16567:21;;;16624:2;16604:18;;;16597:30;-1:-1:-1;;;16658:2:182;16643:18;;16636:44;16712:2;16697:18;;16383:338::o;16726:::-;16928:2;16910:21;;;16967:2;16947:18;;;16940:30;-1:-1:-1;;;17001:2:182;16986:18;;16979:44;17055:2;17040:18;;16726:338::o;17069:335::-;17271:2;17253:21;;;17310:2;17290:18;;;17283:30;-1:-1:-1;;;17344:2:182;17329:18;;17322:41;17395:2;17380:18;;17069:335::o;19232:198::-;-1:-1:-1;;;;;19332:27:182;;;19303;;;19299:61;;19372:29;;19369:55;;;19404:18;;:::i;20792:157::-;20822:1;20856:4;20853:1;20849:12;20880:3;20870:37;;20887:18;;:::i;:::-;20939:3;20932:4;20929:1;20925:12;20921:22;20916:27;;;20792:157;;;;:::o","linkReferences":{},"immutableReferences":{"95077":[{"start":547,"length":32},{"start":1763,"length":32},{"start":2166,"length":32},{"start":4578,"length":32}]}},"methodIdentifiers":{"ASSET()":"4800d97f","addBeneficiary(address)":"5926651d","deposit(address,uint256)":"47e7ef24","dropProposal(uint256)":"083b4246","execute(uint256)":"fe0d94c1","finalizeWithdraw(uint256)":"0928d152","getBallot(uint256,address)":"55ead34a","getConfiguration()":"6bd50cef","getProposal(uint256)":"c7f758a8","getProposalState(uint256)":"9080936f","getWithdrawal(uint256)":"8a4fb16a","governanceProposer()":"c3a50515","initiateWithdraw(address,uint256)":"c4bf0936","isAllBeneficiariesAllowed()":"3a00b7ee","isPermittedInGovernance(address)":"9efbc2df","openFloodgates()":"3d24e054","powerAt(address,uint256)":"3b8f880d","powerNow(address)":"e1d74644","proposalCount()":"da35c664","propose(address)":"01267951","proposeWithLock(address,address)":"30eb4bdd","totalPowerAt(uint256)":"fe7f0e8b","totalPowerNow()":"7f514e78","updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"edb884e9","updateGovernanceProposer(address)":"b907c0ea","vote(uint256,uint256,bool)":"6a18ff7a","withdrawalCount()":"71706cbe"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_governanceProposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"Timestamp\",\"name\":\"lockDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ProposeWithLockConfiguration\",\"name\":\"proposeConfig\",\"type\":\"tuple\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDuration\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"executionDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"gracePeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredYeaMargin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumVotes\",\"type\":\"uint256\"}],\"internalType\":\"struct Configuration\",\"name\":\"_configuration\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"Governance__CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CallerCannotBeSelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"governanceProposer\",\"type\":\"address\"}],\"name\":\"Governance__CallerNotGovernanceProposer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"self\",\"type\":\"address\"}],\"name\":\"Governance__CallerNotSelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CannotCallAsset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CannotWithdrawToAddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"Governance__CheckpointedUintLib__InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CheckpointedUintLib__NotInPast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__InvalidMinimumVotes\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__LockAmountTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__LockAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__QuorumTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__QuorumTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__RequiredYeaMarginTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"Governance__ConfigurationLib__TimeTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"Governance__ConfigurationLib__TimeTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__DepositNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__GovernanceProposerCannotBeSelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"Governance__InsufficientPower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ProposalAlreadyDropped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ProposalCannotBeDropped\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"Governance__ProposalDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ProposalNotActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ProposalNotExecutable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__WithdrawalAlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__WithdrawalNotInitiated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Timestamp\",\"name\":\"currentTime\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"unlocksAt\",\"type\":\"uint256\"}],\"name\":\"Governance__WithdrawalNotUnlockedYet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"BeneficiaryAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"Timestamp\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"ConfigurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FloodGatesOpened\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governanceProposer\",\"type\":\"address\"}],\"name\":\"GovernanceProposerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalDropped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposal\",\"type\":\"address\"}],\"name\":\"Proposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"VoteCast\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"withdrawalId\",\"type\":\"uint256\"}],\"name\":\"WithdrawFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"withdrawalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawInitiated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"addBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"dropProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_withdrawalId\",\"type\":\"uint256\"}],\"name\":\"finalizeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getBallot\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"yea\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nay\",\"type\":\"uint256\"}],\"internalType\":\"struct Ballot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"Timestamp\",\"name\":\"lockDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ProposeWithLockConfiguration\",\"name\":\"proposeConfig\",\"type\":\"tuple\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDuration\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"executionDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"gracePeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredYeaMargin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumVotes\",\"type\":\"uint256\"}],\"internalType\":\"struct Configuration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"getProposal\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"Timestamp\",\"name\":\"votingDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDuration\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"executionDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"gracePeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredYeaMargin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumVotes\",\"type\":\"uint256\"}],\"internalType\":\"struct ProposalConfiguration\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"enum ProposalState\",\"name\":\"cachedState\",\"type\":\"uint8\"},{\"internalType\":\"contract IPayload\",\"name\":\"payload\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"creation\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"yea\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nay\",\"type\":\"uint256\"}],\"internalType\":\"struct Ballot\",\"name\":\"summedBallot\",\"type\":\"tuple\"}],\"internalType\":\"struct Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"getProposalState\",\"outputs\":[{\"internalType\":\"enum ProposalState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_withdrawalId\",\"type\":\"uint256\"}],\"name\":\"getWithdrawal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"unlocksAt\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"claimed\",\"type\":\"bool\"}],\"internalType\":\"struct Withdrawal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governanceProposer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"initiateWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isAllBeneficiariesAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"isPermittedInGovernance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"openFloodgates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"_ts\",\"type\":\"uint256\"}],\"name\":\"powerAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"powerNow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPayload\",\"name\":\"_proposal\",\"type\":\"address\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPayload\",\"name\":\"_proposal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"proposeWithLock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Timestamp\",\"name\":\"_ts\",\"type\":\"uint256\"}],\"name\":\"totalPowerAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalPowerNow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"Timestamp\",\"name\":\"lockDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ProposeWithLockConfiguration\",\"name\":\"proposeConfig\",\"type\":\"tuple\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDuration\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"executionDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"gracePeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredYeaMargin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumVotes\",\"type\":\"uint256\"}],\"internalType\":\"struct Configuration\",\"name\":\"_configuration\",\"type\":\"tuple\"}],\"name\":\"updateConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governanceProposer\",\"type\":\"address\"}],\"name\":\"updateGovernanceProposer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aztec Labs\",\"details\":\"KEY CONCEPTS: **Power**: Funds received via `deposit` are held by Governance and tracked 1:1 as \\\"power\\\" for the beneficiary. **Proposals**: Payloads containing actions to be executed by governance (excluding calls to the governance ASSET). **Deposit Control**: A whitelist system controlling who can hold power in governance. - Initially restricted to approved beneficiaries (expected to be only the GSE) - Can be opened to all addresses via `openFloodgates` (one-way valve) - The GSE aggregates stake from all rollup instances and votes on their behalf **Voting Power**: Based on checkpointed deposit history, calculated per proposal.PROPOSAL LIFECYCLE: (see `getProposalState` for details) The current state of a proposal may be retrieved via `getProposalState`. 1. **Pending** (creation \\u2192 creation + votingDelay) - Proposal exists but voting hasn't started - Power snapshot taken at end of this phase 2. **Active** (pendingThrough + 1 \\u2192 pendingThrough + votingDuration) - Voting open using power from snapshot - Multiple partial votes allowed per user 3. **Vote Evaluation** \\u2192 Rejected if criteria not met: - Minimum quorum (% of total power) - Required yea margin (yea votes minus nay votes) 4. **Queued** (activeThrough + 1 \\u2192 activeThrough + executionDelay) - Timelock period before execution 5. **Executable** (queuedThrough + 1 \\u2192 queuedThrough + gracePeriod) - Anyone can execute during this window 6. **Other States**: - Executed: Successfully completed - Expired: Execution window passed - Rejected: Failed voting criteria - Droppable: Proposer changed - Dropped: Proposal dropped via `dropProposal`USER FLOW: 1. **Deposit**: Transfer ASSET to governance for voting power - Only whitelisted beneficiaries can hold power - Power is checkpointed for historical lookups 2. **Vote**: Use power from proposal's snapshot timestamp - Support partial voting (multiple votes allowed, both yea and nay) - A user's total votes may not exceed their power snapshot for the proposal 3. **Withdraw**: Two-step process with delay - Initiate: Reduce power - Finalize: Transfer funds after delay expires - Standard delay: votingDelay/5 + votingDuration + executionDelayPROPOSAL CREATION: - **Standard**: `governanceProposer` calls `propose` - **Emergency**: Anyone with sufficient power calls `proposeWithLock` - Requires withdrawing `lockAmount` of power with a finalization delay of `lockDelay` - Proposal proposer becomes governance itself (cannot be dropped)CONFIGURATION: All timing parameters are controlled by the governance configuration: - votingDelay: Buffer before voting opens - votingDuration: Voting period length - executionDelay: Timelock after voting before the proposal may be executed - gracePeriod: Execution window - minimumVotes: Absolute minimum voting power in system - quorum: Minimum acceptable participation as a percentage of total power - requiredYeaMargin: Required difference between yea and nay votes as a percentage of the votes cast - lockAmount: The amount of power to withdraw when `proposeWithLock` is called - lockDelay: The delay before a withdrawal created by `proposeWithLock` is finalized\",\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"addBeneficiary(address)\":{\"details\":\"The beneficiary may hold power in the governance contract after this call. only callable by the governance contract itself.\",\"params\":{\"_beneficiary\":\"The address to add to the whitelist.\"}},\"constructor\":{\"details\":\"the initial _beneficiary is expected to be the GSE or address(0) for anyone\"},\"deposit(address,uint256)\":{\"details\":\"The beneficiary must be allowed to hold power in the governance contract, according to `depositControl`. Increments the checkpointed power of the specified beneficiary, and the total power of the governance contract. Note that anyone may deposit funds into the governance contract, and the only restriction is that the beneficiary must be allowed to hold power in the governance contract, according to `depositControl`. It is worth pointing out that someone could attempt to spam the deposit function, and increase the cost to vote as a result of creating many checkpoints. In reality though, as the checkpoints are using time as a key it would take ~36 years of continuous spamming to increase the cost to vote by ~66K gas with 12 second block times.\",\"params\":{\"_amount\":\"The amount of funds to deposit, which is converted to power 1:1.\",\"_beneficiary\":\"The beneficiary to increase the power of.\"}},\"dropProposal(uint256)\":{\"details\":\"The proposal must be `Droppable` to mark it permanently as `Dropped`. See `getProposalState` for more details.\",\"params\":{\"_proposalId\":\"The id of the proposal to mark as `Dropped`.\"}},\"execute(uint256)\":{\"details\":\"The proposal must be `Executable` to execute it. If it is, we mark the proposal as `Executed` and execute the actions, simply looping through and calling them. As far as the individual calls, there are 2 safety measures: - The call cannot target the ASSET which underlies the governance contract - The call must succeed\",\"params\":{\"_proposalId\":\"The id of the proposal to execute.\"}},\"finalizeWithdraw(uint256)\":{\"details\":\"The withdrawal must not have been claimed, and the delay specified on the withdrawal must have passed.\",\"params\":{\"_withdrawalId\":\"The id of the withdrawal to finalize.\"}},\"getBallot(uint256,address)\":{\"details\":\"Returns the uncompressed Ballot struct for external callers.\",\"params\":{\"_proposalId\":\"The id of the proposal.\",\"_user\":\"The address of the user.\"},\"returns\":{\"_0\":\"The user's ballot with yea and nay votes.\"}},\"getProposal(uint256)\":{\"details\":\"Will return default values (0) for non-existing proposals\",\"params\":{\"_proposalId\":\"The id of the proposal to get.\"},\"returns\":{\"_0\":\"The proposal.\"}},\"getProposalState(uint256)\":{\"details\":\"Determine the current state of a proposal based on timestamps, vote results, and governance configuration.NB: the state returned here is LOGICAL, and is the \\\"true state\\\" of the proposal: it need not match the state of the proposal in storage, which is effectively just a cache. Flow Logic: 1. Check if proposal exists (revert if not) 2. If the cached state of the proposal is \\\"stable\\\" (Executed/Dropped), return that state 3. Check if governance proposer changed (\\u2192 Droppable, unless proposed via lock) 4. Time-based state transitions: - currentTime \\u2264 pendingThrough() \\u2192 Pending - currentTime \\u2264 activeThrough() \\u2192 Active - Vote tabulation check \\u2192 Rejected if not accepted - currentTime \\u2264 queuedThrough() \\u2192 Queued - currentTime \\u2264 executableThrough() \\u2192 Executable - Otherwise \\u2192 ExpiredState Descriptions: - Pending: Proposal created but voting hasn't started yet - Active: Voting is currently open - Rejected: Voting closed but proposal didn't meet acceptance criteria - Queued: Proposal accepted and waiting for execution window - Executable: Proposal can be executed - Expired: Execution window has passed - Droppable: Proposer changed - Dropped: Proposal dropped by calling `dropProposal` - Executed: Proposal has been successfully executededge case: it is possible that a proposal be \\\"Droppable\\\" according to the logic here, but no one called `dropProposal`, and then be in a different state later. This can happen if, for whatever reason, the governance proposer stored by this contract changes from the one the proposal is made via, (which would cause this function to return `Droppable`), but then a separate proposal is executed which restores the original governance proposer. So, `Dropped` is permanent, but `Droppable` is not.\",\"params\":{\"_proposalId\":\"The ID of the proposal to check\"},\"returns\":{\"_0\":\"The current state of the proposal\"}},\"getWithdrawal(uint256)\":{\"details\":\"Will return default values (0) for non-existing withdrawals\",\"params\":{\"_withdrawalId\":\"The id of the withdrawal to get.\"},\"returns\":{\"_0\":\"The withdrawal.\"}},\"initiateWithdraw(address,uint256)\":{\"details\":\"the withdraw may be finalized by anyone after configuration.getWithdrawalDelay() has passed.\",\"params\":{\"_amount\":\"The amount of power to reduce, and thus funds to withdraw.\",\"_to\":\"The address that will receive the funds when the withdrawal is finalized.\"},\"returns\":{\"_0\":\"The id of the withdrawal, passed to `finalizeWithdraw`.\"}},\"isAllBeneficiariesAllowed()\":{\"returns\":{\"_0\":\"True if everyone is permitted to hold power in Governance.\"}},\"isPermittedInGovernance(address)\":{\"params\":{\"_beneficiary\":\"The address to check.\"},\"returns\":{\"_0\":\"True if the address is permitted to hold power in Governance.\"}},\"openFloodgates()\":{\"details\":\"This is a one-way valve. only callable by the governance contract itself.\"},\"powerAt(address,uint256)\":{\"params\":{\"_owner\":\"The address to get the power of.\",\"_ts\":\"The timestamp to get the power at.\"},\"returns\":{\"_0\":\"The power of the address at the given timestamp.\"}},\"powerNow(address)\":{\"params\":{\"_owner\":\"The address to get the power of.\"},\"returns\":{\"_0\":\"The power of the address at the current block timestamp.\"}},\"propose(address)\":{\"details\":\"the state of the proposal may be retrieved via `getProposalState`. Note that the `proposer` of the proposal is the *current* governanceProposer; if the governanceProposer no longer matches the one stored in the proposal, the state of the proposal will be `Droppable`.\",\"params\":{\"_proposal\":\"The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.\"},\"returns\":{\"_0\":\"The id of the proposal.\"}},\"proposeWithLock(address,address)\":{\"details\":\"proposals made in this way are identical to those made by the governanceProposer, with the exception that the \\\"proposer\\\" stored in the proposal is the address of the governance contract itself, which means it will not transition to a \\\"Droppable\\\" state if the governanceProposer changes.this is intended to only be used in an emergency, where the governanceProposer is compromised.We don't actually need to check available power here, since if the msg.sender does not have sufficient balance, the `_initiateWithdraw` would revert with an underflow.\",\"params\":{\"_proposal\":\"The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.\",\"_to\":\"The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)\"},\"returns\":{\"_0\":\"The id of the proposal\"}},\"totalPowerAt(uint256)\":{\"params\":{\"_ts\":\"The timestamp to get the power at.\"},\"returns\":{\"_0\":\"The total power at the given timestamp.\"}},\"totalPowerNow()\":{\"returns\":{\"_0\":\"The total power at the current block timestamp.\"}},\"updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"details\":\"all existing proposals will use the configuration they were created with.\"},\"updateGovernanceProposer(address)\":{\"details\":\"The governance proposer is the address that is allowed to use `propose`.only callable by the governance contract itself.causes all proposals proposed by the previous governance proposer to be `Droppable`.prevents the governance proposer from being set to the governance contract itself.\",\"params\":{\"_governanceProposer\":\"The new governance proposer.\"}},\"vote(uint256,uint256,bool)\":{\"details\":\"The proposal must be `Active` to vote on it. NOTE: The amount of power to vote is equal to the power of msg.sender at the time just before the proposal became active. The same caller (e.g. the GSE) may `vote` multiple times, voting different ways, so long as their total votes are less than or equal to their available power; each vote is tracked per proposal, per caller within the `ballots` mapping. We keep track of the total yea and nay votes as a `summedBallot` on the proposal in storage.\",\"params\":{\"_amount\":\"The amount of power to vote with, which must be less than the available power.\",\"_proposalId\":\"The id of the proposal to vote on.\",\"_support\":\"The support of the vote.\"}}},\"stateVariables\":{\"ballots\":{\"details\":\"The ballots that have been cast for each proposal. `CompressedBallot`s contain a compressed `yea` and `nay` count (uint128 each packed into uint256), which are the number of votes for and against the proposal. `ballots` is only updated during `vote`.\"},\"configuration\":{\"details\":\"The configuration of the governance contract. `configuration` is set in the constructor, and is only updated during `updateConfiguration`, which must be done via a proposal.\"},\"depositControl\":{\"details\":\"The whitelist of beneficiaries that are allowed to hold power via `deposit`, and the flag to allow all beneficiaries to hold power.\"},\"governanceProposer\":{\"details\":\"The address that is allowed to `propose` new proposals. This address can only be updated by the governance itself through a proposal.\"},\"proposalCount\":{\"details\":\"The count of proposals that have been made. `proposalCount` is only updated during `_propose`.\"},\"proposals\":{\"details\":\"The proposals that have been made. The proposal ID is the current count of proposals (see `proposalCount`). New proposals are created by calling `_propose`, via `propose` or `proposeWithLock`. The storage of a proposal may be modified by calling `vote`, `execute`, or `dropProposal`.\"},\"total\":{\"details\":\"The total power of the governance contract. `total` is only updated during `deposit`, `initiateWithdraw`, and `proposeWithLock`.\"},\"users\":{\"details\":\"Checkpointed deposit amounts for an address. `users` is only updated during `deposit`, `initiateWithdraw`, and `proposeWithLock`.\"},\"withdrawalCount\":{\"details\":\"The count of withdrawals that have been initiated. `withdrawalCount` is only updated during `initiateWithdraw` and `proposeWithLock`.\"},\"withdrawals\":{\"details\":\"Withdrawals that have been initiated. `withdrawals` is only updated during `initiateWithdraw`, `proposeWithLock`, and `finalizeWithdraw`.\"}},\"title\":\"Governance\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addBeneficiary(address)\":{\"notice\":\"Add a beneficiary to the whitelist.\"},\"deposit(address,uint256)\":{\"notice\":\"Deposit funds into the governance contract, transferring ASSET from msg.sender to the governance contract, increasing the power 1:1 of the beneficiary within the governance contract.\"},\"dropProposal(uint256)\":{\"notice\":\"Update a proposal to be `Dropped`.\"},\"execute(uint256)\":{\"notice\":\"Execute a proposal.\"},\"finalizeWithdraw(uint256)\":{\"notice\":\"Finalize a withdrawal of funds from the governance contract, transferring ASSET from the governance contract to the recipient specified in the withdrawal.\"},\"getBallot(uint256,address)\":{\"notice\":\"Get a user's ballot for a specific proposal.\"},\"getProposal(uint256)\":{\"notice\":\"Get a proposal by its id.\"},\"getProposalState(uint256)\":{\"notice\":\"Get the state of a proposal in the governance system\"},\"getWithdrawal(uint256)\":{\"notice\":\"Get a withdrawal by its id.\"},\"initiateWithdraw(address,uint256)\":{\"notice\":\"Initiate a withdrawal of funds from the governance contract, decreasing the power of the beneficiary within the governance contract.\"},\"isAllBeneficiariesAllowed()\":{\"notice\":\"Check if everyone is permitted to hold power in Governance.\"},\"isPermittedInGovernance(address)\":{\"notice\":\"Check if an address is permitted to hold power in Governance.\"},\"openFloodgates()\":{\"notice\":\"Allow all addresses to hold power in the governance contract.\"},\"powerAt(address,uint256)\":{\"notice\":\"Get the power of an address at a given timestamp.\"},\"powerNow(address)\":{\"notice\":\"Get the power of an address at the current block timestamp. Note that `powerNow` with the current block timestamp is NOT STABLE. For example, imagine a transaction that performs the following: 1. deposit 2. powerNow 3. deposit 4. powerNow The powerNow at 4 will be different from the powerNow at 2.\"},\"propose(address)\":{\"notice\":\"Propose a new proposal as the governanceProposer\"},\"proposeWithLock(address,address)\":{\"notice\":\"Propose a new proposal by withdrawing an existing amount of power from Governance with a longer delay.\"},\"totalPowerAt(uint256)\":{\"notice\":\"Get the total power in Governance at a given timestamp.\"},\"totalPowerNow()\":{\"notice\":\"Get the total power in Governance at the current block timestamp. Note that `powerNow` with the current block timestamp is NOT STABLE.\"},\"updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Update the governance configuration. only callable by the governance contract itself.\"},\"updateGovernanceProposer(address)\":{\"notice\":\"Update the governance proposer.\"},\"vote(uint256,uint256,bool)\":{\"notice\":\"Vote on a proposal.\"}},\"notice\":\"A contract that implements governance logic for proposal creation, voting, and execution. Uses a snapshot-based voting model with partial vote support to enable aggregated voting. Partial vote support: Allows voters to split their voting power across multiple proposals or options, rather than using all their votes on a single choice. Aggregated voting: The contract collects and sums votes from multiple sources or over time, combining them to determine the final outcome of each proposal.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/governance/Governance.sol\":\"Governance\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@aztec-blob-lib/=src/mock/libraries/\",\":@aztec/=src/\",\":@generated/=generated/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@oz/=lib/openzeppelin-contracts/contracts/\",\":@test/=test/\",\":@zkpassport-test/=lib/circuits/src/solidity/test/\",\":@zkpassport/=lib/circuits/src/solidity/src/\",\":circuits/=lib/circuits/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca\",\"dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167\",\"dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"src/governance/Governance.sol\":{\"keccak256\":\"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf\",\"dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw\"]},\"src/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff\",\"dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa\"]},\"src/governance/interfaces/IPayload.sol\":{\"keccak256\":\"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c\",\"dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin\"]},\"src/governance/libraries/CheckpointedUintLib.sol\":{\"keccak256\":\"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1\",\"dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q\"]},\"src/governance/libraries/ConfigurationLib.sol\":{\"keccak256\":\"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a\",\"dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy\"]},\"src/governance/libraries/Errors.sol\":{\"keccak256\":\"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa\",\"dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv\"]},\"src/governance/libraries/ProposalLib.sol\":{\"keccak256\":\"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192\",\"dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT\"]},\"src/governance/libraries/compressed-data/Ballot.sol\":{\"keccak256\":\"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012\",\"dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM\"]},\"src/governance/libraries/compressed-data/Configuration.sol\":{\"keccak256\":\"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482\",\"dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv\"]},\"src/governance/libraries/compressed-data/Proposal.sol\":{\"keccak256\":\"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6\",\"dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN\"]},\"src/shared/libraries/CompressedTimeMath.sol\":{\"keccak256\":\"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3\",\"dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB\"]},\"src/shared/libraries/TimeMath.sol\":{\"keccak256\":\"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914\",\"dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"},{"internalType":"address","name":"_governanceProposer","type":"address"},{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"struct Configuration","name":"_configuration","type":"tuple","components":[{"internalType":"struct ProposeWithLockConfiguration","name":"proposeConfig","type":"tuple","components":[{"internalType":"Timestamp","name":"lockDelay","type":"uint256"},{"internalType":"uint256","name":"lockAmount","type":"uint256"}]},{"internalType":"Timestamp","name":"votingDelay","type":"uint256"},{"internalType":"Timestamp","name":"votingDuration","type":"uint256"},{"internalType":"Timestamp","name":"executionDelay","type":"uint256"},{"internalType":"Timestamp","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"requiredYeaMargin","type":"uint256"},{"internalType":"uint256","name":"minimumVotes","type":"uint256"}]}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"Governance__CallFailed"},{"inputs":[],"type":"error","name":"Governance__CallerCannotBeSelf"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"governanceProposer","type":"address"}],"type":"error","name":"Governance__CallerNotGovernanceProposer"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"self","type":"address"}],"type":"error","name":"Governance__CallerNotSelf"},{"inputs":[],"type":"error","name":"Governance__CannotCallAsset"},{"inputs":[],"type":"error","name":"Governance__CannotWithdrawToAddressZero"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue"},{"inputs":[],"type":"error","name":"Governance__CheckpointedUintLib__NotInPast"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__InvalidMinimumVotes"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__LockAmountTooBig"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__LockAmountTooSmall"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__QuorumTooBig"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__QuorumTooSmall"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__RequiredYeaMarginTooBig"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"type":"error","name":"Governance__ConfigurationLib__TimeTooBig"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"type":"error","name":"Governance__ConfigurationLib__TimeTooSmall"},{"inputs":[],"type":"error","name":"Governance__DepositNotAllowed"},{"inputs":[],"type":"error","name":"Governance__GovernanceProposerCannotBeSelf"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"Governance__InsufficientPower"},{"inputs":[],"type":"error","name":"Governance__ProposalAlreadyDropped"},{"inputs":[],"type":"error","name":"Governance__ProposalCannotBeDropped"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"type":"error","name":"Governance__ProposalDoesNotExists"},{"inputs":[],"type":"error","name":"Governance__ProposalNotActive"},{"inputs":[],"type":"error","name":"Governance__ProposalNotExecutable"},{"inputs":[],"type":"error","name":"Governance__WithdrawalAlreadyClaimed"},{"inputs":[],"type":"error","name":"Governance__WithdrawalNotInitiated"},{"inputs":[{"internalType":"Timestamp","name":"currentTime","type":"uint256"},{"internalType":"Timestamp","name":"unlocksAt","type":"uint256"}],"type":"error","name":"Governance__WithdrawalNotUnlockedYet"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address","indexed":false}],"type":"event","name":"BeneficiaryAdded","anonymous":false},{"inputs":[{"internalType":"Timestamp","name":"time","type":"uint256","indexed":true}],"type":"event","name":"ConfigurationUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"address","name":"onBehalfOf","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[],"type":"event","name":"FloodGatesOpened","anonymous":false},{"inputs":[{"internalType":"address","name":"governanceProposer","type":"address","indexed":true}],"type":"event","name":"GovernanceProposerUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256","indexed":true}],"type":"event","name":"ProposalDropped","anonymous":false},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256","indexed":true}],"type":"event","name":"ProposalExecuted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256","indexed":true},{"internalType":"address","name":"proposal","type":"address","indexed":true}],"type":"event","name":"Proposed","anonymous":false},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256","indexed":true},{"internalType":"address","name":"voter","type":"address","indexed":true},{"internalType":"bool","name":"support","type":"bool","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"VoteCast","anonymous":false},{"inputs":[{"internalType":"uint256","name":"withdrawalId","type":"uint256","indexed":true}],"type":"event","name":"WithdrawFinalized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"withdrawalId","type":"uint256","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"WithdrawInitiated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addBeneficiary"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"dropProposal"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"execute"},{"inputs":[{"internalType":"uint256","name":"_withdrawalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdraw"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"view","type":"function","name":"getBallot","outputs":[{"internalType":"struct Ballot","name":"","type":"tuple","components":[{"internalType":"uint256","name":"yea","type":"uint256"},{"internalType":"uint256","name":"nay","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getConfiguration","outputs":[{"internalType":"struct Configuration","name":"","type":"tuple","components":[{"internalType":"struct ProposeWithLockConfiguration","name":"proposeConfig","type":"tuple","components":[{"internalType":"Timestamp","name":"lockDelay","type":"uint256"},{"internalType":"uint256","name":"lockAmount","type":"uint256"}]},{"internalType":"Timestamp","name":"votingDelay","type":"uint256"},{"internalType":"Timestamp","name":"votingDuration","type":"uint256"},{"internalType":"Timestamp","name":"executionDelay","type":"uint256"},{"internalType":"Timestamp","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"requiredYeaMargin","type":"uint256"},{"internalType":"uint256","name":"minimumVotes","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getProposal","outputs":[{"internalType":"struct Proposal","name":"","type":"tuple","components":[{"internalType":"struct ProposalConfiguration","name":"config","type":"tuple","components":[{"internalType":"Timestamp","name":"votingDelay","type":"uint256"},{"internalType":"Timestamp","name":"votingDuration","type":"uint256"},{"internalType":"Timestamp","name":"executionDelay","type":"uint256"},{"internalType":"Timestamp","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"requiredYeaMargin","type":"uint256"},{"internalType":"uint256","name":"minimumVotes","type":"uint256"}]},{"internalType":"enum ProposalState","name":"cachedState","type":"uint8"},{"internalType":"contract IPayload","name":"payload","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"Timestamp","name":"creation","type":"uint256"},{"internalType":"struct Ballot","name":"summedBallot","type":"tuple","components":[{"internalType":"uint256","name":"yea","type":"uint256"},{"internalType":"uint256","name":"nay","type":"uint256"}]}]}]},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getProposalState","outputs":[{"internalType":"enum ProposalState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"_withdrawalId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getWithdrawal","outputs":[{"internalType":"struct Withdrawal","name":"","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"Timestamp","name":"unlocksAt","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"claimed","type":"bool"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"governanceProposer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initiateWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isAllBeneficiariesAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedInGovernance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"openFloodgates"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"Timestamp","name":"_ts","type":"uint256"}],"stateMutability":"view","type":"function","name":"powerAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"powerNow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IPayload","name":"_proposal","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IPayload","name":"_proposal","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"proposeWithLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"Timestamp","name":"_ts","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalPowerAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalPowerNow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Configuration","name":"_configuration","type":"tuple","components":[{"internalType":"struct ProposeWithLockConfiguration","name":"proposeConfig","type":"tuple","components":[{"internalType":"Timestamp","name":"lockDelay","type":"uint256"},{"internalType":"uint256","name":"lockAmount","type":"uint256"}]},{"internalType":"Timestamp","name":"votingDelay","type":"uint256"},{"internalType":"Timestamp","name":"votingDuration","type":"uint256"},{"internalType":"Timestamp","name":"executionDelay","type":"uint256"},{"internalType":"Timestamp","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"requiredYeaMargin","type":"uint256"},{"internalType":"uint256","name":"minimumVotes","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updateConfiguration"},{"inputs":[{"internalType":"address","name":"_governanceProposer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateGovernanceProposer"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"vote"},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"addBeneficiary(address)":{"details":"The beneficiary may hold power in the governance contract after this call. only callable by the governance contract itself.","params":{"_beneficiary":"The address to add to the whitelist."}},"constructor":{"details":"the initial _beneficiary is expected to be the GSE or address(0) for anyone"},"deposit(address,uint256)":{"details":"The beneficiary must be allowed to hold power in the governance contract, according to `depositControl`. Increments the checkpointed power of the specified beneficiary, and the total power of the governance contract. Note that anyone may deposit funds into the governance contract, and the only restriction is that the beneficiary must be allowed to hold power in the governance contract, according to `depositControl`. It is worth pointing out that someone could attempt to spam the deposit function, and increase the cost to vote as a result of creating many checkpoints. In reality though, as the checkpoints are using time as a key it would take ~36 years of continuous spamming to increase the cost to vote by ~66K gas with 12 second block times.","params":{"_amount":"The amount of funds to deposit, which is converted to power 1:1.","_beneficiary":"The beneficiary to increase the power of."}},"dropProposal(uint256)":{"details":"The proposal must be `Droppable` to mark it permanently as `Dropped`. See `getProposalState` for more details.","params":{"_proposalId":"The id of the proposal to mark as `Dropped`."}},"execute(uint256)":{"details":"The proposal must be `Executable` to execute it. If it is, we mark the proposal as `Executed` and execute the actions, simply looping through and calling them. As far as the individual calls, there are 2 safety measures: - The call cannot target the ASSET which underlies the governance contract - The call must succeed","params":{"_proposalId":"The id of the proposal to execute."}},"finalizeWithdraw(uint256)":{"details":"The withdrawal must not have been claimed, and the delay specified on the withdrawal must have passed.","params":{"_withdrawalId":"The id of the withdrawal to finalize."}},"getBallot(uint256,address)":{"details":"Returns the uncompressed Ballot struct for external callers.","params":{"_proposalId":"The id of the proposal.","_user":"The address of the user."},"returns":{"_0":"The user's ballot with yea and nay votes."}},"getProposal(uint256)":{"details":"Will return default values (0) for non-existing proposals","params":{"_proposalId":"The id of the proposal to get."},"returns":{"_0":"The proposal."}},"getProposalState(uint256)":{"details":"Determine the current state of a proposal based on timestamps, vote results, and governance configuration.NB: the state returned here is LOGICAL, and is the \"true state\" of the proposal: it need not match the state of the proposal in storage, which is effectively just a cache. Flow Logic: 1. Check if proposal exists (revert if not) 2. If the cached state of the proposal is \"stable\" (Executed/Dropped), return that state 3. Check if governance proposer changed (→ Droppable, unless proposed via lock) 4. Time-based state transitions: - currentTime ≤ pendingThrough() → Pending - currentTime ≤ activeThrough() → Active - Vote tabulation check → Rejected if not accepted - currentTime ≤ queuedThrough() → Queued - currentTime ≤ executableThrough() → Executable - Otherwise → ExpiredState Descriptions: - Pending: Proposal created but voting hasn't started yet - Active: Voting is currently open - Rejected: Voting closed but proposal didn't meet acceptance criteria - Queued: Proposal accepted and waiting for execution window - Executable: Proposal can be executed - Expired: Execution window has passed - Droppable: Proposer changed - Dropped: Proposal dropped by calling `dropProposal` - Executed: Proposal has been successfully executededge case: it is possible that a proposal be \"Droppable\" according to the logic here, but no one called `dropProposal`, and then be in a different state later. This can happen if, for whatever reason, the governance proposer stored by this contract changes from the one the proposal is made via, (which would cause this function to return `Droppable`), but then a separate proposal is executed which restores the original governance proposer. So, `Dropped` is permanent, but `Droppable` is not.","params":{"_proposalId":"The ID of the proposal to check"},"returns":{"_0":"The current state of the proposal"}},"getWithdrawal(uint256)":{"details":"Will return default values (0) for non-existing withdrawals","params":{"_withdrawalId":"The id of the withdrawal to get."},"returns":{"_0":"The withdrawal."}},"initiateWithdraw(address,uint256)":{"details":"the withdraw may be finalized by anyone after configuration.getWithdrawalDelay() has passed.","params":{"_amount":"The amount of power to reduce, and thus funds to withdraw.","_to":"The address that will receive the funds when the withdrawal is finalized."},"returns":{"_0":"The id of the withdrawal, passed to `finalizeWithdraw`."}},"isAllBeneficiariesAllowed()":{"returns":{"_0":"True if everyone is permitted to hold power in Governance."}},"isPermittedInGovernance(address)":{"params":{"_beneficiary":"The address to check."},"returns":{"_0":"True if the address is permitted to hold power in Governance."}},"openFloodgates()":{"details":"This is a one-way valve. only callable by the governance contract itself."},"powerAt(address,uint256)":{"params":{"_owner":"The address to get the power of.","_ts":"The timestamp to get the power at."},"returns":{"_0":"The power of the address at the given timestamp."}},"powerNow(address)":{"params":{"_owner":"The address to get the power of."},"returns":{"_0":"The power of the address at the current block timestamp."}},"propose(address)":{"details":"the state of the proposal may be retrieved via `getProposalState`. Note that the `proposer` of the proposal is the *current* governanceProposer; if the governanceProposer no longer matches the one stored in the proposal, the state of the proposal will be `Droppable`.","params":{"_proposal":"The IPayload address, which is a contract that contains the proposed actions to be executed by the governance."},"returns":{"_0":"The id of the proposal."}},"proposeWithLock(address,address)":{"details":"proposals made in this way are identical to those made by the governanceProposer, with the exception that the \"proposer\" stored in the proposal is the address of the governance contract itself, which means it will not transition to a \"Droppable\" state if the governanceProposer changes.this is intended to only be used in an emergency, where the governanceProposer is compromised.We don't actually need to check available power here, since if the msg.sender does not have sufficient balance, the `_initiateWithdraw` would revert with an underflow.","params":{"_proposal":"The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.","_to":"The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)"},"returns":{"_0":"The id of the proposal"}},"totalPowerAt(uint256)":{"params":{"_ts":"The timestamp to get the power at."},"returns":{"_0":"The total power at the given timestamp."}},"totalPowerNow()":{"returns":{"_0":"The total power at the current block timestamp."}},"updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"details":"all existing proposals will use the configuration they were created with."},"updateGovernanceProposer(address)":{"details":"The governance proposer is the address that is allowed to use `propose`.only callable by the governance contract itself.causes all proposals proposed by the previous governance proposer to be `Droppable`.prevents the governance proposer from being set to the governance contract itself.","params":{"_governanceProposer":"The new governance proposer."}},"vote(uint256,uint256,bool)":{"details":"The proposal must be `Active` to vote on it. NOTE: The amount of power to vote is equal to the power of msg.sender at the time just before the proposal became active. The same caller (e.g. the GSE) may `vote` multiple times, voting different ways, so long as their total votes are less than or equal to their available power; each vote is tracked per proposal, per caller within the `ballots` mapping. We keep track of the total yea and nay votes as a `summedBallot` on the proposal in storage.","params":{"_amount":"The amount of power to vote with, which must be less than the available power.","_proposalId":"The id of the proposal to vote on.","_support":"The support of the vote."}}},"version":1},"userdoc":{"kind":"user","methods":{"addBeneficiary(address)":{"notice":"Add a beneficiary to the whitelist."},"deposit(address,uint256)":{"notice":"Deposit funds into the governance contract, transferring ASSET from msg.sender to the governance contract, increasing the power 1:1 of the beneficiary within the governance contract."},"dropProposal(uint256)":{"notice":"Update a proposal to be `Dropped`."},"execute(uint256)":{"notice":"Execute a proposal."},"finalizeWithdraw(uint256)":{"notice":"Finalize a withdrawal of funds from the governance contract, transferring ASSET from the governance contract to the recipient specified in the withdrawal."},"getBallot(uint256,address)":{"notice":"Get a user's ballot for a specific proposal."},"getProposal(uint256)":{"notice":"Get a proposal by its id."},"getProposalState(uint256)":{"notice":"Get the state of a proposal in the governance system"},"getWithdrawal(uint256)":{"notice":"Get a withdrawal by its id."},"initiateWithdraw(address,uint256)":{"notice":"Initiate a withdrawal of funds from the governance contract, decreasing the power of the beneficiary within the governance contract."},"isAllBeneficiariesAllowed()":{"notice":"Check if everyone is permitted to hold power in Governance."},"isPermittedInGovernance(address)":{"notice":"Check if an address is permitted to hold power in Governance."},"openFloodgates()":{"notice":"Allow all addresses to hold power in the governance contract."},"powerAt(address,uint256)":{"notice":"Get the power of an address at a given timestamp."},"powerNow(address)":{"notice":"Get the power of an address at the current block timestamp. Note that `powerNow` with the current block timestamp is NOT STABLE. For example, imagine a transaction that performs the following: 1. deposit 2. powerNow 3. deposit 4. powerNow The powerNow at 4 will be different from the powerNow at 2."},"propose(address)":{"notice":"Propose a new proposal as the governanceProposer"},"proposeWithLock(address,address)":{"notice":"Propose a new proposal by withdrawing an existing amount of power from Governance with a longer delay."},"totalPowerAt(uint256)":{"notice":"Get the total power in Governance at a given timestamp."},"totalPowerNow()":{"notice":"Get the total power in Governance at the current block timestamp. Note that `powerNow` with the current block timestamp is NOT STABLE."},"updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"notice":"Update the governance configuration. only callable by the governance contract itself."},"updateGovernanceProposer(address)":{"notice":"Update the governance proposer."},"vote(uint256,uint256,bool)":{"notice":"Vote on a proposal."}},"version":1}},"settings":{"remappings":["@aztec-blob-lib/=src/mock/libraries/","@aztec/=src/","@generated/=generated/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@oz/=lib/openzeppelin-contracts/contracts/","@test/=test/","@zkpassport-test/=lib/circuits/src/solidity/test/","@zkpassport/=lib/circuits/src/solidity/src/","circuits/=lib/circuits/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/governance/Governance.sol":"Governance"},"evmVersion":"prague","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b","urls":["bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca","dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f","urls":["bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167","dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"src/governance/Governance.sol":{"keccak256":"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5","urls":["bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf","dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw"],"license":"Apache-2.0"},"src/governance/interfaces/IGovernance.sol":{"keccak256":"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005","urls":["bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff","dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa"],"license":"Apache-2.0"},"src/governance/interfaces/IPayload.sol":{"keccak256":"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3","urls":["bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c","dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin"],"license":"Apache-2.0"},"src/governance/libraries/CheckpointedUintLib.sol":{"keccak256":"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4","urls":["bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1","dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q"],"license":"Apache-2.0"},"src/governance/libraries/ConfigurationLib.sol":{"keccak256":"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149","urls":["bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a","dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy"],"license":"Apache-2.0"},"src/governance/libraries/Errors.sol":{"keccak256":"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4","urls":["bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa","dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv"],"license":"Apache-2.0"},"src/governance/libraries/ProposalLib.sol":{"keccak256":"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90","urls":["bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192","dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Ballot.sol":{"keccak256":"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d","urls":["bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012","dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Configuration.sol":{"keccak256":"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9","urls":["bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482","dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Proposal.sol":{"keccak256":"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a","urls":["bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6","dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN"],"license":"Apache-2.0"},"src/shared/libraries/CompressedTimeMath.sol":{"keccak256":"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1","urls":["bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3","dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB"],"license":"Apache-2.0"},"src/shared/libraries/TimeMath.sol":{"keccak256":"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f","urls":["bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914","dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3"],"license":"Apache-2.0"}},"version":1},"id":130}
1
+ {"abi":[{"type":"constructor","inputs":[{"name":"_asset","type":"address","internalType":"contract IERC20"},{"name":"_governanceProposer","type":"address","internalType":"address"},{"name":"_beneficiary","type":"address","internalType":"address"},{"name":"_configuration","type":"tuple","internalType":"struct Configuration","components":[{"name":"proposeConfig","type":"tuple","internalType":"struct ProposeWithLockConfiguration","components":[{"name":"lockDelay","type":"uint256","internalType":"Timestamp"},{"name":"lockAmount","type":"uint256","internalType":"uint256"}]},{"name":"votingDelay","type":"uint256","internalType":"Timestamp"},{"name":"votingDuration","type":"uint256","internalType":"Timestamp"},{"name":"executionDelay","type":"uint256","internalType":"Timestamp"},{"name":"gracePeriod","type":"uint256","internalType":"Timestamp"},{"name":"quorum","type":"uint256","internalType":"uint256"},{"name":"requiredYeaMargin","type":"uint256","internalType":"uint256"},{"name":"minimumVotes","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"ASSET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"addBeneficiary","inputs":[{"name":"_beneficiary","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"_beneficiary","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"dropProposal","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"execute","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeWithdraw","inputs":[{"name":"_withdrawalId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getBallot","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Ballot","components":[{"name":"yea","type":"uint256","internalType":"uint256"},{"name":"nay","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getConfiguration","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Configuration","components":[{"name":"proposeConfig","type":"tuple","internalType":"struct ProposeWithLockConfiguration","components":[{"name":"lockDelay","type":"uint256","internalType":"Timestamp"},{"name":"lockAmount","type":"uint256","internalType":"uint256"}]},{"name":"votingDelay","type":"uint256","internalType":"Timestamp"},{"name":"votingDuration","type":"uint256","internalType":"Timestamp"},{"name":"executionDelay","type":"uint256","internalType":"Timestamp"},{"name":"gracePeriod","type":"uint256","internalType":"Timestamp"},{"name":"quorum","type":"uint256","internalType":"uint256"},{"name":"requiredYeaMargin","type":"uint256","internalType":"uint256"},{"name":"minimumVotes","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getProposal","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Proposal","components":[{"name":"config","type":"tuple","internalType":"struct ProposalConfiguration","components":[{"name":"votingDelay","type":"uint256","internalType":"Timestamp"},{"name":"votingDuration","type":"uint256","internalType":"Timestamp"},{"name":"executionDelay","type":"uint256","internalType":"Timestamp"},{"name":"gracePeriod","type":"uint256","internalType":"Timestamp"},{"name":"quorum","type":"uint256","internalType":"uint256"},{"name":"requiredYeaMargin","type":"uint256","internalType":"uint256"},{"name":"minimumVotes","type":"uint256","internalType":"uint256"}]},{"name":"cachedState","type":"uint8","internalType":"enum ProposalState"},{"name":"payload","type":"address","internalType":"contract IPayload"},{"name":"proposer","type":"address","internalType":"address"},{"name":"creation","type":"uint256","internalType":"Timestamp"},{"name":"summedBallot","type":"tuple","internalType":"struct Ballot","components":[{"name":"yea","type":"uint256","internalType":"uint256"},{"name":"nay","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"view"},{"type":"function","name":"getProposalState","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint8","internalType":"enum ProposalState"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawal","inputs":[{"name":"_withdrawalId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Withdrawal","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"unlocksAt","type":"uint256","internalType":"Timestamp"},{"name":"recipient","type":"address","internalType":"address"},{"name":"claimed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"governanceProposer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initiateWithdraw","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"isAllBeneficiariesAllowed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedInGovernance","inputs":[{"name":"_beneficiary","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"openFloodgates","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"powerAt","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_ts","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"powerNow","inputs":[{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proposalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"propose","inputs":[{"name":"_proposal","type":"address","internalType":"contract IPayload"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"proposeWithLock","inputs":[{"name":"_proposal","type":"address","internalType":"contract IPayload"},{"name":"_to","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"totalPowerAt","inputs":[{"name":"_ts","type":"uint256","internalType":"Timestamp"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalPowerNow","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"updateConfiguration","inputs":[{"name":"_configuration","type":"tuple","internalType":"struct Configuration","components":[{"name":"proposeConfig","type":"tuple","internalType":"struct ProposeWithLockConfiguration","components":[{"name":"lockDelay","type":"uint256","internalType":"Timestamp"},{"name":"lockAmount","type":"uint256","internalType":"uint256"}]},{"name":"votingDelay","type":"uint256","internalType":"Timestamp"},{"name":"votingDuration","type":"uint256","internalType":"Timestamp"},{"name":"executionDelay","type":"uint256","internalType":"Timestamp"},{"name":"gracePeriod","type":"uint256","internalType":"Timestamp"},{"name":"quorum","type":"uint256","internalType":"uint256"},{"name":"requiredYeaMargin","type":"uint256","internalType":"uint256"},{"name":"minimumVotes","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateGovernanceProposer","inputs":[{"name":"_governanceProposer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vote","inputs":[{"name":"_proposalId","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_support","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"BeneficiaryAdded","inputs":[{"name":"beneficiary","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ConfigurationUpdated","inputs":[{"name":"time","type":"uint256","indexed":true,"internalType":"Timestamp"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true,"internalType":"address"},{"name":"onBehalfOf","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FloodGatesOpened","inputs":[],"anonymous":false},{"type":"event","name":"GovernanceProposerUpdated","inputs":[{"name":"governanceProposer","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProposalDropped","inputs":[{"name":"proposalId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ProposalExecuted","inputs":[{"name":"proposalId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Proposed","inputs":[{"name":"proposalId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"proposal","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VoteCast","inputs":[{"name":"proposalId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"voter","type":"address","indexed":true,"internalType":"address"},{"name":"support","type":"bool","indexed":false,"internalType":"bool"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawFinalized","inputs":[{"name":"withdrawalId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawInitiated","inputs":[{"name":"withdrawalId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"CheckpointUnorderedInsertion","inputs":[]},{"type":"error","name":"Governance__CallFailed","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CallerCannotBeSelf","inputs":[]},{"type":"error","name":"Governance__CallerNotGovernanceProposer","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"governanceProposer","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CallerNotSelf","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"self","type":"address","internalType":"address"}]},{"type":"error","name":"Governance__CannotCallAsset","inputs":[]},{"type":"error","name":"Governance__CannotWithdrawToAddressZero","inputs":[]},{"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"have","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__CheckpointedUintLib__NotInPast","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__InvalidMinimumVotes","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__LockAmountTooBig","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__LockAmountTooSmall","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__QuorumTooBig","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__QuorumTooSmall","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__RequiredYeaMarginTooBig","inputs":[]},{"type":"error","name":"Governance__ConfigurationLib__TimeTooBig","inputs":[{"name":"name","type":"string","internalType":"string"}]},{"type":"error","name":"Governance__ConfigurationLib__TimeTooSmall","inputs":[{"name":"name","type":"string","internalType":"string"}]},{"type":"error","name":"Governance__DepositNotAllowed","inputs":[]},{"type":"error","name":"Governance__GovernanceProposerCannotBeSelf","inputs":[]},{"type":"error","name":"Governance__InsufficientPower","inputs":[{"name":"voter","type":"address","internalType":"address"},{"name":"have","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__ProposalAlreadyDropped","inputs":[]},{"type":"error","name":"Governance__ProposalCannotBeDropped","inputs":[]},{"type":"error","name":"Governance__ProposalDoesNotExists","inputs":[{"name":"proposalId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Governance__ProposalNotActive","inputs":[]},{"type":"error","name":"Governance__ProposalNotExecutable","inputs":[]},{"type":"error","name":"Governance__WithdrawalAlreadyClaimed","inputs":[]},{"type":"error","name":"Governance__WithdrawalNotInitiated","inputs":[]},{"type":"error","name":"Governance__WithdrawalNotUnlockedYet","inputs":[{"name":"currentTime","type":"uint256","internalType":"Timestamp"},{"name":"unlocksAt","type":"uint256","internalType":"Timestamp"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60a060405234801561000f575f5ffd5b50604051613ea1380380613ea183398101604081905261002e91610a06565b6001600160a01b038481166080525f80546001600160a01b03191691851691909117905561005b81610223565b61006481610608565b805160078054602084015160408501516060860151608087015160a088015163ffffffff9788166001600160401b0319909616959095176401000000009488169490940293909317600160401b600160801b031916680100000000000000009287169290920263ffffffff60601b1916919091176c010000000000000000000000009186168202176001600160801b0316600160801b6001600160401b03938416026001600160c01b031617600160c01b9290931682029290921790925560c08401516008805460e0870151610100909701516001600160601b039384166001600160c01b031990921691909117929096169092021763ffffffff60c01b191693909216029190911790556001600160a01b0382166101b7576002805460ff191660011790556040517f8d67419becc56dd5daf39212ee5e2cb8d9c40cf1184863a77318db110bfc77d9905f90a161021a565b6002805460ff199081169091556001600160a01b0383165f818152600160208181526040928390208054909516909117909355519081527fc3e089fc6227e049d0e41c3d7a383d57efe69c1955c5752f7e5a9b5f1f113020910160405180910390a15b50505050610af8565b60018160a0015110156102495760405163245ca84960e11b815260040160405180910390fd5b670de0b6b3a76400008160a00151111561027657604051637a9fd76760e11b815260040160405180910390fd5b670de0b6b3a76400008160c0015111156102a3576040516323bdbbbb60e01b815260040160405180910390fd5b60018160e0015110156102c95760405163505c925360e11b815260040160405180910390fd5b60e08101516001600160601b0310156102f55760405163505c925360e11b815260040160405180910390fd5b8051602001516002111561031c5760405163ec4abc2f60e01b815260040160405180910390fd5b8051602001516001600160601b03101561034957604051635590b7bd60e11b815260040160405180910390fd5b805151603c111561038e576040516302b2633f60e21b81526020600482015260096024820152684c6f636b44656c617960b81b60448201526064015b60405180910390fd5b80515163ffffffff10156103d157604051637ac6b2f960e11b81526020600482015260096024820152684c6f636b44656c617960b81b6044820152606401610385565b6020810151603c1115610415576040516302b2633f60e21b815260206004820152600b60248201526a566f74696e6744656c617960a81b6044820152606401610385565b60208101516276a700101561045b57604051637ac6b2f960e11b815260206004820152600b60248201526a566f74696e6744656c617960a81b6044820152606401610385565b6040810151603c11156104a2576040516302b2633f60e21b815260206004820152600e60248201526d2b37ba34b733a23ab930ba34b7b760911b6044820152606401610385565b60408101516276a70010156104eb57604051637ac6b2f960e11b815260206004820152600e60248201526d2b37ba34b733a23ab930ba34b7b760911b6044820152606401610385565b6060810151603c1115610532576040516302b2633f60e21b815260206004820152600e60248201526d457865637574696f6e44656c617960901b6044820152606401610385565b60608101516276a700101561057b57604051637ac6b2f960e11b815260206004820152600e60248201526d457865637574696f6e44656c617960901b6044820152606401610385565b6080810151603c11156105bf576040516302b2633f60e21b815260206004820152600b60248201526a11dc9858d954195c9a5bd960aa1b6044820152606401610385565b60808101516276a700101561060557604051637ac6b2f960e11b815260206004820152600b60248201526a11dc9858d954195c9a5bd960aa1b6044820152606401610385565b50565b60408051610120810182525f8082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201528251909101516001600160601b0310156106aa5760405162461bcd60e51b815260206004820152601960248201527f6c6f636b416d6f756e7420657863656564732075696e743936000000000000006044820152606401610385565b60e08201516001600160601b0310156107055760405162461bcd60e51b815260206004820152601b60248201527f6d696e696d756d566f74657320657863656564732075696e74393600000000006044820152606401610385565b60a08201516001600160401b0310156107605760405162461bcd60e51b815260206004820152601560248201527f71756f72756d20657863656564732075696e74363400000000000000000000006044820152606401610385565b60c08201516001600160401b0310156107bb5760405162461bcd60e51b815260206004820181905260248201527f72657175697265645965614d617267696e20657863656564732075696e7436346044820152606401610385565b6040518061012001604052806107da84602001516108e360201b60201c565b63ffffffff1681526020016107f884604001516108e360201b60201c565b63ffffffff16815260200161081684606001516108e360201b60201c565b63ffffffff16815260200161083484608001516108e360201b60201c565b63ffffffff1681526020016108528460a001516108f360201b60201c565b6001600160401b031681526020016108738460c001516108f360201b60201c565b6001600160401b031681526020016108948460e0015161092c60201b60201c565b6001600160601b031681526020016108b8845f01516020015161092c60201b60201c565b6001600160601b031681528351516020909101906108d5906108e3565b63ffffffff16905292915050565b5f6108ed8261095f565b92915050565b5f6001600160401b0382111561092857604080516306dfcc6560e41b8152600481019190915260248101839052604401610385565b5090565b5f6001600160601b03821115610928576040516306dfcc6560e41b81526060600482015260248101839052604401610385565b5f63ffffffff821115610928576040516306dfcc6560e41b81526020600482015260248101839052604401610385565b6001600160a01b0381168114610605575f5ffd5b60405161010081016001600160401b03811182821017156109d257634e487b7160e01b5f52604160045260245ffd5b60405290565b604080519081016001600160401b03811182821017156109d257634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f848603610180811215610a1b575f5ffd5b8551610a268161098f565b6020870151909550610a378161098f565b6040870151909450610a488161098f565b9250605f1901610120811215610a5c575f5ffd5b610a646109a3565b6040821215610a71575f5ffd5b610a796109d8565b60608881015182526080808a015160208085019190915292845260a0808b01519385019390935260c0808b0151604086015260e0808c0151938601939093526101008b0151918501919091526101208a015192840192909252610140890151918301919091526101609097015196810196909652509295919450929150565b60805161337c610b255f395f8181610223015281816106e30152818161087601526111e2015261337c5ff3fe608060405234801561000f575f5ffd5b5060043610610174575f3560e01c806371706cbe116100d5578063c4bf093611610084578063c4bf093614610452578063c7f758a814610465578063da35c66414610485578063e1d746441461048e578063edb884e9146104a1578063fe0d94c1146104b4578063fe7f0e8b146104c7575f5ffd5b806371706cbe1461030e5780637f514e78146103175780638a4fb16a1461031f5780639080936f146103e25780639efbc2df14610402578063b907c0ea1461042d578063c3a5051514610440575f5ffd5b80633d24e054116101315780633d24e0541461020357806347e7ef241461020b5780634800d97f1461021e57806355ead34a146102525780635926651d146102725780636a18ff7a146102855780636bd50cef14610298575f5ffd5b80630126795114610178578063083b42461461019e5780630928d152146101b357806330eb4bdd146101c65780633a00b7ee146101d95780633b8f880d146101f0575b5f5ffd5b61018b610186366004612cac565b6104da565b6040519081526020015b60405180910390f35b6101b16101ac366004612cc7565b610531565b005b6101b16101c1366004612cc7565b6105ee565b61018b6101d4366004612cde565b610711565b60025460ff165b6040519015158152602001610195565b61018b6101fe366004612d15565b61077e565b6101b16107a6565b6101b1610219366004612d15565b610803565b6102457f000000000000000000000000000000000000000000000000000000000000000081565b6040516101959190612d3f565b610265610260366004612d53565b610914565b6040516101959190612d76565b6101b1610280366004612cac565b61094f565b6101b1610293366004612d8d565b6109d4565b6102a0610b80565b60405161019591905f610120820190508251805183526020810151602084015250602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e083015161010083015292915050565b61018b600b5481565b61018b610c28565b6103a461032d366004612cc7565b604080516080810182525f808252602082018190529181018290526060810191909152505f90815260066020908152604091829020825160808101845281548152600182015492810192909252600201546001600160a01b03811692820192909252600160a01b90910460ff161515606082015290565b604051610195919081518152602080830151908201526040808301516001600160a01b03169082015260609182015115159181019190915260800190565b6103f56103f0366004612cc7565b610c33565b6040516101959190612dfb565b6101e0610410366004612cac565b6001600160a01b03165f9081526001602052604090205460ff1690565b6101b161043b366004612cac565b610dbf565b5f54610245906001600160a01b031681565b61018b610460366004612d15565b610e55565b610478610473366004612cc7565b610e6b565b6040516101959190612e09565b61018b600a5481565b61018b61049c366004612cac565b610f83565b6101b16104af366004612f3f565b610fa3565b6101b16104c2366004612cc7565b611107565b61018b6104d5366004612cc7565b61135a565b5f805433906001600160a01b0316818114610513576040516307aa341360e31b815260040161050a929190612fe5565b60405180910390fd5b50505f5461052b9083906001600160a01b0316611366565b92915050565b5f8181526003602052604090206007600182015460ff16600881111561055957610559612dc7565b0361057757604051630595c07760e51b815260040160405180910390fd5b600661058283610c33565b600881111561059357610593612dc7565b146105b1576040516308adbf2160e01b815260040160405180910390fd5b60018101805460ff1916600717905560405182907fbe0d6497a32a201ada887344ab9138dacd7d057f44cd070946394838a0960276905f90a25050565b5f81815260066020526040902060028101546001600160a01b031661062557604051626fa8b560e61b815260040160405180910390fd5b6002810154600160a01b900460ff161561065257604051632bbd3b8d60e11b815260040160405180910390fd5b610660428260010154111590565b6001820154429161068d57604051630d02d71b60e21b81526004810192909252602482015260440161050a565b505060028101805460ff60a01b1916600160a01b17905560405182907fcebf724a837e6c3b3bf571f17587621a5b8b13a5c49e854ff99f2700a9fc3666905f90a26002810154815461070d916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116929116906115d5565b5050565b6040805180820182525f8082526020918201819052825180840190935260085463ffffffff600160c01b8204168452600160601b90046001600160601b0316918301919091529061076b33848360200151845f0151611639565b506107768430611366565b949350505050565b6001600160a01b0382165f90815260056020526040812061079f908361176b565b9392505050565b33308181146107ca5760405163f18e42a160e01b815260040161050a929190612fe5565b50506002805460ff191660011790556040517f8d67419becc56dd5daf39212ee5e2cb8d9c40cf1184863a77318db110bfc77d9905f90a1565b81303303610824576040516306fdffd960e51b815260040160405180910390fd5b60025460ff168061084c57506001600160a01b0381165f9081526001602052604090205460ff165b61086957604051636c26e61960e01b815260040160405180910390fd5b61089e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856117b5565b6001600160a01b0383165f9081526005602052604090206108bf90836117f4565b506108cd90506009836117f4565b50506040518281526001600160a01b0384169033907f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629060200160405180910390a3505050565b6040805180820182525f8082526020808301829052858252600481528382206001600160a01b03861683529052919091205461079f9061186e565b33308181146109735760405163f18e42a160e01b815260040161050a929190612fe5565b50506001600160a01b0381165f90815260016020819052604091829020805460ff19169091179055517fc3e089fc6227e049d0e41c3d7a383d57efe69c1955c5752f7e5a9b5f1f113020906109c9908390612d3f565b60405180910390a150565b5f6109de84610c33565b905060018160088111156109f4576109f4612dc7565b14610a1257604051632d85b5cb60e01b815260040160405180910390fd5b5f848152600360205260408120610a4090610a2c906118ae565b335f9081526005602052604090209061176b565b5f868152600460209081526040808320338452909152812054919250610a668260801c90565b610a79906001600160801b038416613013565b610a839084613026565b905033818781811115610ac257604051631186c4ab60e31b81526001600160a01b0390931660048401526024830191909152604482015260640161050a565b5050505f8781526003602052604090208515610b0a57610ae283886118d3565b5f898152600460209081526040808320338452909152902055610b058188611923565b610b37565b610b14838861193e565b5f898152600460209081526040808320338452909152902055610b37818861197d565b6040805187151581526020810189905233918a917fcbdf6214089cba887ecbf35a0b6a734589959c9763342c756bb2a80ca2bc9f6e910160405180910390a35050505050505050565b610b88612bb5565b604080516101208101825260075463ffffffff8082168352600160201b820481166020840152600160401b8204811693830193909352600160601b808204841660608401526001600160401b03600160801b830481166080850152600160c01b928390041660a08401526008546001600160601b0380821660c086015291810490911660e084015204909116610100820152610c239061198c565b905090565b5f610c236009611a4c565b5f600a5482108290610c5b576040516320c68f5560e21b815260040161050a91815260200190565b505f8281526003602052604090206005600182015460ff166008811115610c8457610c84612dc7565b1480610ca857506007600182015460ff166008811115610ca657610ca6612dc7565b145b15610cba576001015460ff1692915050565b80545f546001600160a01b03908116911614801590610ce3575080546001600160a01b03163014155b15610cf15750600692915050565b42610d0481610cff846118ae565b101590565b15610d1257505f9392505050565b610d1f81610cff84611a65565b15610d2e575060019392505050565b5f610d43610d3b846118ae565b60099061176b565b90505f610d508483611a89565b5090505f816002811115610d6657610d66612dc7565b14610d775750600495945050505050565b610d8483610cff86611bfe565b15610d955750600295945050505050565b610da283610cff86611c22565b15610db35750600395945050505050565b50600895945050505050565b3330818114610de35760405163f18e42a160e01b815260040161050a929190612fe5565b5050306001600160a01b03821603610e0e576040516304eb9a0360e31b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917f58b9023fe926532b1c6a397a00102fcce3ac81725a232d9d235104cd1a28e43291a250565b5f61079f338484610e666007611c46565b611639565b610e73612c05565b5f8281526003602090815260409182902082516101808101845281546001600160a01b0381168252600160a01b90046001600160601b031692810192909252600181015461052b9383019060ff166008811115610ed257610ed2612dc7565b6008811115610ee357610ee3612dc7565b8152600182015461010080820463ffffffff9081166020850152600160281b830481166040850152600160481b830481166060850152600160681b830481166080850152600160881b83041660a0840152600160a81b9091046001600160401b0390811660c0840152600284015460e08401526003909301546001600160a01b03811691830191909152600160a01b900490911661012090910152611c83565b6001600160a01b0381165f90815260056020526040812061052b90611a4c565b3330818114610fc75760405163f18e42a160e01b815260040161050a929190612fe5565b5050610fd281611d7b565b610fdb81612027565b80516007805460208401516040808601516060870151608088015160a089015163ffffffff98891667ffffffffffffffff1990971696909617600160201b958916959095029490941767ffffffffffffffff60401b1916600160401b9288169290920263ffffffff60601b191691909117600160601b9187168202176001600160801b0316600160801b6001600160401b03948516026001600160c01b031617600160c01b9390941683029390931790935560c08501516008805460e0880151610100909801516001600160601b039384166001600160c01b031990921691909117929097169093021763ffffffff60c01b1916949093169092029290921790555142907f7d096a764e5ea306d0946e3a05ca9ffd9ea0af82aecf12cf8eee26b2485f9a0c905f90a250565b5f61111182610c33565b9050600381600881111561112757611127612dc7565b146111455760405163b6ae35c160e01b815260040160405180910390fd5b5f82815260036020819052604080832060018101805460ff1916600517905591820154815163504d080b60e01b815291519293926001600160a01b039091169163504d080b91600480830192869291908290030181865afa1580156111ac573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111d39190810190613039565b90505f5b8151811015611329577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682828151811061121c5761121c6131a2565b60200260200101515f01516001600160a01b03160361124e576040516304f6c78960e21b815260040160405180910390fd5b5f828281518110611261576112616131a2565b60200260200101515f01516001600160a01b0316838381518110611287576112876131a2565b6020026020010151602001516040516112a091906131b6565b5f604051808303815f865af19150503d805f81146112d9576040519150601f19603f3d011682016040523d82523d5f602084013e6112de565b606091505b50509050808383815181106112f5576112f56131a2565b60200260200101515f01519061131f57604051633cb8c30160e01b815260040161050a9190612d3f565b50506001016111d7565b5060405184907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f905f90a250505050565b5f61052b60098361176b565b600a80545f9182919082611379836131cc565b90915550604080516101208101825260075463ffffffff8082168352600160201b820481166020840152600160401b8204811693830193909352600160601b808204841660608401526001600160401b03600160801b830481166080850152600160c01b928390041660a08401526008546001600160601b0380821660c086015291810490911660e084015204909116610100820152909150611421908490869042906122c6565b5f828152600360209081526040918290208351918401516001600160601b0316600160a01b026001600160a01b039092169190911781559082015160018083018054909160ff199091169083600881111561147e5761147e612dc7565b02179055506060820151600182018054608085015160a086015160c087015160e0880151610100808a01516001600160401b03908116600160a81b0267ffffffffffffffff60a81b1963ffffffff948516600160881b02166bffffffffffffffffffffffff60881b19958516600160681b0263ffffffff60681b19978616600160481b029790971667ffffffffffffffff60481b19988616600160281b0268ffffffff00000000001996909c169094029490941668ffffffffffffffff00199098169790971798909817949094169390931791909117161717905561012083015160028301556101408301516003909201805461016090940151909116600160a01b026001600160e01b03199093166001600160a01b0392831617929092179091556040519085169082907faa9a4d6243341331785569c732ffe9c81a3e9c2aafa58faab1afe4797668433f905f90a39392505050565b6040516001600160a01b0383811660248301526044820183905261163491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506123ef565b505050565b5f6001600160a01b038416611661576040516312c8cda160e01b815260040160405180910390fd5b6001600160a01b0385165f9081526005602052604090206116829084612452565b506116909050600984612452565b5050600b80545f91826116a2836131cc565b91905055905060405180608001604052808581526020016116c342866124ff565b81526001600160a01b0380881660208084018290525f6040948501819052868152600682528490208551815590850151600182015584840151600290910180546060909601511515600160a01b026001600160a81b031990961691909316179390931790555182907f35572b4263de54e794ffcb886cb01a64870892fe896854fd2ca93810d5c66f7e9061175a9088815260200190565b60405180910390a395945050505050565b5f61177582421190565b611792576040516334dcb7d760e21b815260040160405180910390fd5b6117a561179e8361250a565b849061253e565b6001600160e01b03169392505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526117ee9186918216906323b872dd90608401611602565b50505050565b5f5f5f611800856125ec565b9050835f0361181c576001600160e01b03169150819050611867565b5f61182685612623565b90506118466118344261250a565b61183e83856131e4565b889190612656565b5082905061185482826131e4565b6001600160e01b03918216955016925050505b9250929050565b604080518082019091525f808252602082015260405180604001604052806118968460801c90565b81526020016001600160801b0384165b905292915050565b60018101545f9061052b9063ffffffff6101008204811691600160281b9004166124ff565b5f5f6118df8460801c90565b90505f6118ec8483613013565b905061191a856118fb83612670565b6001600160801b0316608081901b6001600160801b0383161792915050565b95945050505050565b600282015461193290826118d3565b82600201819055505050565b5f6001600160801b038316816119548483613013565b905061191a8561196383612670565b6001600160801b03166001600160801b0319919091161790565b6002820154611932908261193e565b611994612bb5565b60408051610140810182526101008481015163ffffffff90811691830191825260e08601516001600160601b0316610120840152908252845181166020808401919091528501518116828401529184015190916060830191168152602001611a09846060015163ffffffff1663ffffffff1690565b815260200183608001516001600160401b031681526020018360a001516001600160401b031681526020018360c001516001600160601b03168152509050919050565b5f611a56826125ec565b6001600160e01b031692915050565b5f61052b611a72836118ae565b6001840154600160481b900463ffffffff166124ff565b81545f908190600160a01b90046001600160601b0316831015611ab15750600190505f611867565b5f611ae7848660010160159054906101000a90046001600160401b03166001600160401b0316670de0b6b3a764000060016126a3565b9050805f03611afe57600260019250925050611867565b83811115611b13576002809250925050611867565b5f5f611b1e876126e5565b90925090505f611b2e8383613013565b905083811015611b4957600160039550955050505050611867565b808303611b60575f60079550955050505050611867565b60038801545f90611b9d90611b8d90600160a01b90046001600160401b0316670de0b6b3a7640000613203565b6001600160401b03166002612712565b90505f611bb58383670de0b6b3a764000060016126a3565b905082811115611bd2576002600597509750505050505050611867565b808511611bec576001600897509750505050505050611867565b505f9960099950975050505050505050565b5f61052b611c0b83611a65565b6001840154600160681b900463ffffffff166124ff565b5f61052b611c2f83611bfe565b6001840154600160881b900463ffffffff166124ff565b80545f9063ffffffff80821691600160201b8104821691600160401b9091041661191a611c7d611c77600586613236565b846124ff565b826124ff565b611c8b612c05565b604080516101a08101909152608083015163ffffffff90811660c080840191825260a0860151831660e08501528501518392610100840191168152602001611ce08660e0015163ffffffff1663ffffffff1690565b81526020018561010001516001600160401b031681526020018561016001516001600160401b0316815260200185602001516001600160601b0316815250815260200183604001516008811115611d3957611d39612dc7565b81526101408401516001600160a01b039081166020830152845116604082015260608085015191019063ffffffff1681526020016118a684610120015161186e565b60018160a001511015611da15760405163245ca84960e11b815260040160405180910390fd5b670de0b6b3a76400008160a001511115611dce57604051637a9fd76760e11b815260040160405180910390fd5b670de0b6b3a76400008160c001511115611dfb576040516323bdbbbb60e01b815260040160405180910390fd5b60018160e001511015611e215760405163505c925360e11b815260040160405180910390fd5b60e08101516001600160601b031015611e4d5760405163505c925360e11b815260040160405180910390fd5b80516020015160021115611e745760405163ec4abc2f60e01b815260040160405180910390fd5b8051602001516001600160601b031015611ea157604051635590b7bd60e11b815260040160405180910390fd5b805151603c1115611ec5576040516302b2633f60e21b815260040161050a90613249565b80515163ffffffff1015611eec57604051637ac6b2f960e11b815260040161050a90613249565b6020810151603c1115611f12576040516302b2633f60e21b815260040161050a9061326c565b60208101516276a7001015611f3a57604051637ac6b2f960e11b815260040161050a9061326c565b6040810151603c1115611f60576040516302b2633f60e21b815260040161050a90613291565b60408101516276a7001015611f8857604051637ac6b2f960e11b815260040161050a90613291565b6060810151603c1115611fae576040516302b2633f60e21b815260040161050a906132b9565b60608101516276a7001015611fd657604051637ac6b2f960e11b815260040161050a906132b9565b6080810151603c1115611ffc576040516302b2633f60e21b815260040161050a906132e1565b60808101516276a700101561202457604051637ac6b2f960e11b815260040161050a906132e1565b50565b60408051610120810182525f8082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201528251909101516001600160601b0310156120c55760405162461bcd60e51b81526020600482015260196024820152783637b1b5a0b6b7bab73a1032bc31b2b2b239903ab4b73a1c9b60391b604482015260640161050a565b60e08201516001600160601b0310156121205760405162461bcd60e51b815260206004820152601b60248201527f6d696e696d756d566f74657320657863656564732075696e7439360000000000604482015260640161050a565b60a08201516001600160401b0310156121735760405162461bcd60e51b81526020600482015260156024820152741c5d5bdc9d5b48195e18d959591cc81d5a5b9d0d8d605a1b604482015260640161050a565b60c08201516001600160401b0310156121ce5760405162461bcd60e51b815260206004820181905260248201527f72657175697265645965614d617267696e20657863656564732075696e743634604482015260640161050a565b6040518061012001604052806121e78460200151612745565b63ffffffff1681526020016121ff8460400151612745565b63ffffffff1681526020016122178460600151612745565b63ffffffff16815260200161222f8460800151612745565b63ffffffff1681526020016122478460a0015161274f565b6001600160401b031681526020016122628460c0015161274f565b6001600160401b0316815260200161227d8460e00151612784565b6001600160601b0316815260200161229b845f015160200151612784565b6001600160601b031681526020016122b8845f01515f0151612745565b63ffffffff16905292915050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260408051610180810182526001600160a01b038716815260c08401516001600160601b031660208201529081015f815260200161236285612745565b63ffffffff168152602001835f015163ffffffff168152602001836020015163ffffffff168152602001836040015163ffffffff168152602001836060015163ffffffff16815260200183608001516001600160401b031681526020015f8152602001856001600160a01b031681526020018360a001516001600160401b03168152509050949350505050565b5f5f60205f8451602086015f885af18061240e576040513d5f823e3d81fd5b50505f513d91508115612425578060011415612432565b6001600160a01b0384163b155b156117ee5783604051635274afe760e01b815260040161050a9190612d3f565b5f5f5f61245e856125ec565b9050835f0361247a576001600160e01b03169150819050611867565b5f61248485612623565b90503382826001600160e01b0380821690831610156124d85760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b03918216602484015216604482015260640161050a565b5050506124f16124e74261250a565b61183e8385613306565b508290506118548282613306565b5f61079f8284613013565b5f63ffffffff82111561253a576040516306dfcc6560e41b8152602060048201526024810183905260440161050a565b5090565b81545f9081816005811115612598575f612557846127b7565b6125619085613026565b5f8881526020902090915081015463ffffffff908116908716101561258857809150612596565b612593816001613013565b92505b505b5f6125a587878585612909565b905080156125df576125c9876125bc600184613026565b5f91825260209091200190565b54600160201b90046001600160e01b03166125e1565b5f5b979650505050505050565b80545f90801561261b57612605836125bc600184613026565b54600160201b90046001600160e01b031661079f565b5f9392505050565b5f6001600160e01b0382111561253a576040516306dfcc6560e41b815260e060048201526024810183905260440161050a565b5f80612663858585612964565b915091505b935093915050565b5f6001600160801b0382111561253a576040516306dfcc6560e41b8152608060048201526024810183905260440161050a565b5f6126d06126b083612aa8565b80156126cb57505f84806126c6576126c6613222565b868809115b151590565b6126db868686612ad4565b61191a9190613013565b5f5f6126f5836002015460801c90565b915061270b83600201546001600160801b031690565b9050915091565b5f815f03612724576127246012612b8a565b81600184038161273657612736613222565b04600101831515029392505050565b5f61052b8261250a565b5f6001600160401b0382111561253a57604080516306dfcc6560e41b815260048101919091526024810183905260440161050a565b5f6001600160601b0382111561253a576040516306dfcc6560e41b8152606060048201526024810183905260440161050a565b5f600182116127c4575090565b816001600160801b82106127dd5760809190911c9060401b5b600160401b82106127f35760409190911c9060201b5b600160201b82106128095760209190911c9060101b5b62010000821061281e5760109190911c9060081b5b61010082106128325760089190911c9060041b5b601082106128455760049190911c9060021b5b600482106128515760011b5b600302600190811c9081858161286957612869613222565b048201901c9050600181858161288157612881613222565b048201901c9050600181858161289957612899613222565b048201901c905060018185816128b1576128b1613222565b048201901c905060018185816128c9576128c9613222565b048201901c905060018185816128e1576128e1613222565b048201901c90506129008185816128fa576128fa613222565b04821190565b90039392505050565b5f5b8183101561295c575f61291e8484612b9b565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561294857809250612956565b612953816001613013565b93505b5061290b565b509392505050565b82545f9081908015612a50575f612980876125bc600185613026565b805490915063ffffffff80821691600160201b90046001600160e01b03169088168211156129c157604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff16036129f457825463ffffffff16600160201b6001600160e01b03891602178355612a42565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061266892505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b029190931617920191909155905081612668565b5f6002826003811115612abd57612abd612dc7565b612ac79190613325565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f03612b0857838281612afe57612afe613222565b049250505061079f565b808411612b1f57612b1f6003851502601118612b8a565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b634e487b715f52806020526024601cfd5b5f612ba96002848418613236565b61079f90848416613013565b6040805161014081019091525f6101008201818152610120830191909152819081526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060c00160405280612c496040518060e001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f8152602001612c9360405180604001604052805f81526020015f81525090565b905290565b6001600160a01b0381168114612024575f5ffd5b5f60208284031215612cbc575f5ffd5b813561079f81612c98565b5f60208284031215612cd7575f5ffd5b5035919050565b5f5f60408385031215612cef575f5ffd5b8235612cfa81612c98565b91506020830135612d0a81612c98565b809150509250929050565b5f5f60408385031215612d26575f5ffd5b8235612d3181612c98565b946020939093013593505050565b6001600160a01b0391909116815260200190565b5f5f60408385031215612d64575f5ffd5b823591506020830135612d0a81612c98565b81518152602080830151908201526040810161052b565b5f5f5f60608486031215612d9f575f5ffd5b833592506020840135915060408401358015158114612dbc575f5ffd5b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b60098110612df757634e487b7160e01b5f52602160045260245ffd5b9052565b6020810161052b8284612ddb565b5f6101a0820190508251805183526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c0840152506020830151612e6660e0840182612ddb565b5060408301516001600160a01b03908116610100840152606084015116610120830152608083015161014083015260a0909201518051610160830152602001516101809091015290565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612ee757612ee7612eb0565b60405290565b604080519081016001600160401b0381118282101715612ee757612ee7612eb0565b604051601f8201601f191681016001600160401b0381118282101715612f3757612f37612eb0565b604052919050565b5f81830361012081128015612f52575f5ffd5b50612f5b612ec4565b6040821215612f68575f5ffd5b612f70612eed565b843581526020808601358183015290825260408086013591830191909152606080860135918301919091526080808601359183019190915260a0808601359183019190915260c0808601359183019190915260e080860135918301919091526101009094013593810193909352509092915050565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561052b5761052b612fff565b8181038181111561052b5761052b612fff565b5f60208284031215613049575f5ffd5b81516001600160401b0381111561305e575f5ffd5b8201601f8101841361306e575f5ffd5b80516001600160401b0381111561308757613087612eb0565b8060051b61309760208201612f0f565b918252602081840181019290810190878411156130b2575f5ffd5b6020850192505b838310156125e15782516001600160401b038111156130d6575f5ffd5b85016040818a03601f190112156130eb575f5ffd5b6130f3612eed565b602082015161310181612c98565b815260408201516001600160401b0381111561311b575f5ffd5b60208184010192505089601f830112613132575f5ffd5b81516001600160401b0381111561314b5761314b612eb0565b61315e601f8201601f1916602001612f0f565b8181528b6020838601011115613172575f5ffd5b8160208501602083015e5f60208383010152806020840152505080845250506020820191506020830192506130b9565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f600182016131dd576131dd612fff565b5060010190565b6001600160e01b03818116838216019081111561052b5761052b612fff565b6001600160401b03818116838216019081111561052b5761052b612fff565b634e487b7160e01b5f52601260045260245ffd5b5f8261324457613244613222565b500490565b6020808252600990820152684c6f636b44656c617960b81b604082015260600190565b6020808252600b908201526a566f74696e6744656c617960a81b604082015260600190565b6020808252600e908201526d2b37ba34b733a23ab930ba34b7b760911b604082015260600190565b6020808252600e908201526d457865637574696f6e44656c617960901b604082015260600190565b6020808252600b908201526a11dc9858d954195c9a5bd960aa1b604082015260600190565b6001600160e01b03828116828216039081111561052b5761052b612fff565b5f60ff83168061333757613337613222565b8060ff8416069150509291505056fea26469706673582212203c40d5b041cca34250ae8e34f6deccbba5e45d5de79bb8598438b8bf066ad5db64736f6c634300081e0033","sourceMap":"6395:26203:132:-:0;;;10190:586;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10311:14:132;;;;;10331:18;:40;;-1:-1:-1;;;;;;10331:40:132;;;;;;;;;;10378:28;:14;:26;:28::i;:::-;10428:51;10464:14;10428:35;:51::i;:::-;10412:67;;:13;:67;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10412:67:132;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;10412:67:132;;;;;;;;;-1:-1:-1;;;;10412:67:132;;;;;;;;;;;;-1:-1:-1;;;;;10412:67:132;-1:-1:-1;;;;;;;;10412:67:132;;;;-1:-1:-1;;;;;10412:67:132;;-1:-1:-1;;;10412:67:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10412:67:132;;;-1:-1:-1;;;;;;10412:67:132;;;;;;;;;;;;;;;-1:-1:-1;;;;10412:67:132;;;;;;;;;;;;-1:-1:-1;;;;;10490:26:132;;10486:286;;10526:38;:45;;-1:-1:-1;;10526:45:132;10567:4;10526:45;;;10584:18;;;;10526:38;;10584:18;10486:286;;;10623:38;:46;;-1:-1:-1;;10623:46:132;;;;;;-1:-1:-1;;;;;10677:38:132;;-1:-1:-1;10677:38:132;;;-1:-1:-1;10677:38:132;;;;;;;;;:45;;;;;;;;;;;10735:30;2936:51:184;;;10735:30:132;;2909:18:184;10735:30:132;;;;;;;10486:286;10190:586;;;;6395:26203;;2591:2409:146;630:1;2668:5;:12;;;:28;;2660:92;;;;-1:-1:-1;;;2660:92:146;;;;;;;;;;;;676:4;2766:5;:12;;;:28;;2758:90;;;;-1:-1:-1;;;2758:90:146;;;;;;;;;;;;739:4;2870:5;:23;;;:52;;2855:143;;;;-1:-1:-1;;;2855:143:146;;;;;;;;;;;;788:1;3013:5;:18;;;:33;;3005:102;;;;-1:-1:-1;;;3005:102:146;;;;;;;;;;;;3121:18;;;;-1:-1:-1;;;;;;3121:33:146;3113:102;;;;-1:-1:-1;;;3113:102:146;;;;;;;;;;;;3237:19;;:30;;;943:1;-1:-1:-1;3237:51:146;3222:131;;;;-1:-1:-1;;;3222:131:146;;;;;;;;;;;;3374:19;;:30;;;-1:-1:-1;;;;;;3374:51:146;3359:129;;;;-1:-1:-1;;;3359:129:146;;;;;;;;;;;;3811:19;;:29;1114:2;-1:-1:-1;938:44:182;3803:116:146;;;;-1:-1:-1;;;3803:116:146;;3200:2:184;3803:116:146;;;3182:21:184;3239:1;3219:18;;;3212:29;-1:-1:-1;;;3257:18:184;;;3250:39;3306:18;;3803:116:146;;;;;;;;;3940:19;;:29;3988:16;-1:-1:-1;680:44:182;3925:154:146;;;;-1:-1:-1;;;3925:154:146;;3200:2:184;3925:154:146;;;3182:21:184;3239:1;3219:18;;;3212:29;-1:-1:-1;;;3257:18:184;;;3250:39;3306:18;;3925:154:146;2998:332:184;3925:154:146;4094:17;;;;1114:2;-1:-1:-1;938:44:182;4086:106:146;;;;-1:-1:-1;;;4086:106:146;;3537:2:184;4086:106:146;;;3519:21:184;3576:2;3556:18;;;3549:30;-1:-1:-1;;;3595:18:184;;;3588:41;3646:18;;4086:106:146;3335:335:184;4086:106:146;4206:17;;;;1177:14;-1:-1:-1;680:44:182;4198:104:146;;;;-1:-1:-1;;;4198:104:146;;3537:2:184;4198:104:146;;;3519:21:184;3576:2;3556:18;;;3549:30;-1:-1:-1;;;3595:18:184;;;3588:41;3646:18;;4198:104:146;3335:335:184;4198:104:146;4317:20;;;;1114:2;-1:-1:-1;938:44:182;4309:112:146;;;;-1:-1:-1;;;4309:112:146;;3877:2:184;4309:112:146;;;3859:21:184;3916:2;3896:18;;;3889:30;-1:-1:-1;;;3935:18:184;;;3928:44;3989:18;;4309:112:146;3675:338:184;4309:112:146;4435:20;;;;1177:14;-1:-1:-1;680:44:182;4427:110:146;;;;-1:-1:-1;;;4427:110:146;;3877:2:184;4427:110:146;;;3859:21:184;3916:2;3896:18;;;3889:30;-1:-1:-1;;;3935:18:184;;;3928:44;3989:18;;4427:110:146;3675:338:184;4427:110:146;4552:20;;;;1114:2;-1:-1:-1;938:44:182;4544:112:146;;;;-1:-1:-1;;;4544:112:146;;4220:2:184;4544:112:146;;;4202:21:184;4259:2;4239:18;;;4232:30;-1:-1:-1;;;4278:18:184;;;4271:44;4332:18;;4544:112:146;4018:338:184;4544:112:146;4670:20;;;;1177:14;-1:-1:-1;680:44:182;4662:110:146;;;;-1:-1:-1;;;4662:110:146;;4220:2:184;4662:110:146;;;4202:21:184;4259:2;4239:18;;;4232:30;-1:-1:-1;;;4278:18:184;;;4271:44;4332:18;;4662:110:146;4018:338:184;4662:110:146;4787:17;;;;1114:2;-1:-1:-1;938:44:182;4779:106:146;;;;-1:-1:-1;;;4779:106:146;;4563:2:184;4779:106:146;;;4545:21:184;4602:2;4582:18;;;4575:30;-1:-1:-1;;;4621:18:184;;;4614:41;4672:18;;4779:106:146;4361:335:184;4779:106:146;4899:17;;;;1177:14;-1:-1:-1;680:44:182;4891:104:146;;;;-1:-1:-1;;;4891:104:146;;4563:2:184;4891:104:146;;;4545:21:184;4602:2;4582:18;;;4575:30;-1:-1:-1;;;4621:18:184;;;4614:41;4672:18;;4891:104:146;4361:335:184;4891:104:146;2591:2409;:::o;2580:1061:151:-;6395:26203:132;;;;;;;;-1:-1:-1;6395:26203:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2756:21:151;;:32;;;;-1:-1:-1;;;;;;2756:52:151;2748:90;;;;-1:-1:-1;;;2748:90:151;;4903:2:184;2748:90:151;;;4885:21:184;4942:2;4922:18;;;4915:30;4981:27;4961:18;;;4954:55;5026:18;;2748:90:151;4701:349:184;2748:90:151;2852:20;;;;-1:-1:-1;;;;;;2852:40:151;2844:80;;;;-1:-1:-1;;;2844:80:151;;5257:2:184;2844:80:151;;;5239:21:184;5296:2;5276:18;;;5269:30;5335:29;5315:18;;;5308:57;5382:18;;2844:80:151;5055:351:184;2844:80:151;2938:14;;;;-1:-1:-1;;;;;;2938:34:151;2930:68;;;;-1:-1:-1;;;2930:68:151;;5613:2:184;2930:68:151;;;5595:21:184;5652:2;5632:18;;;5625:30;5691:23;5671:18;;;5664:51;5732:18;;2930:68:151;5411:345:184;2930:68:151;3012:25;;;;-1:-1:-1;;;;;;3012:45:151;3004:90;;;;-1:-1:-1;;;3004:90:151;;5963:2:184;3004:90:151;;;5945:21:184;;;5982:18;;;5975:30;6041:34;6021:18;;;6014:62;6093:18;;3004:90:151;5761:356:184;3004:90:151;3108:528;;;;;;;;3153:30;:7;:19;;;:28;;;:30;;:::i;:::-;3108:528;;;;;;3207:33;:7;:22;;;:31;;;:33;;:::i;:::-;3108:528;;;;;;3264:33;:7;:22;;;:31;;;:33;;:::i;:::-;3108:528;;;;;;3318:30;:7;:19;;;:28;;;:30;;:::i;:::-;3108:528;;;;;;3364:25;:7;:14;;;:23;;;:25;;:::i;:::-;-1:-1:-1;;;;;3108:528:151;;;;;3416:36;:7;:25;;;:34;;;:36;;:::i;:::-;-1:-1:-1;;;;;3108:528:151;;;;;3474:31;:7;:20;;;:29;;;:31;;:::i;:::-;-1:-1:-1;;;;;3108:528:151;;;;;3525:43;:7;:21;;;:32;;;:41;;;:43;;:::i;:::-;-1:-1:-1;;;;;3108:528:151;;;3587:21;;:31;3108:528;;;;;3587:42;;:40;:42::i;:::-;3108:528;;;;3101:535;2580:1061;-1:-1:-1;;2580:1061:151:o;339:175:180:-;402:19;461:47;496:10;461:17;:47::i;:::-;429:80;339:175;-1:-1:-1;;339:175:180:o;13296:213:62:-;13352:6;-1:-1:-1;;;;;13374:24:62;;13370:103;;;13452:2;13421:41;;-1:-1:-1;;;13421:41:62;;;;;6303:36:184;;;;6355:18;;;6348:34;;;6276:18;;13421:41:62;6122:266:184;13370:103:62;-1:-1:-1;13496:5:62;13296:213::o;11296:::-;11352:6;-1:-1:-1;;;;;11374:24:62;;11370:103;;;11421:41;;-1:-1:-1;;;11421:41:62;;11452:2;11421:41;;;6303:36:184;6355:18;;;6348:34;;;6276:18;;11421:41:62;6122:266:184;15296:213:62;15352:6;15382:16;15374:24;;15370:103;;;15421:41;;-1:-1:-1;;;15421:41:62;;15452:2;15421:41;;;6303:36:184;6355:18;;;6348:34;;;6276:18;;15421:41:62;6122:266:184;14:139;-1:-1:-1;;;;;97:31:184;;87:42;;77:70;;143:1;140;133:12;158:351;229:2;223:9;271:6;259:19;;-1:-1:-1;;;;;293:34:184;;329:22;;;290:62;287:185;;;394:10;389:3;385:20;382:1;375:31;429:4;426:1;419:15;457:4;454:1;447:15;287:185;488:2;481:22;158:351;:::o;514:343::-;581:2;575:9;;;611:15;;-1:-1:-1;;;;;641:34:184;;677:22;;;638:62;635:185;;;742:10;737:3;733:20;730:1;723:31;777:4;774:1;767:15;805:4;802:1;795:15;862:1923;1007:6;1015;1023;1031;1075:9;1066:7;1062:23;1105:3;1101:2;1097:12;1094:32;;;1122:1;1119;1112:12;1094:32;1154:9;1148:16;1173:39;1206:5;1173:39;:::i;:::-;1281:2;1266:18;;1260:25;1231:5;;-1:-1:-1;1294:41:184;1260:25;1294:41;:::i;:::-;1406:2;1391:18;;1385:25;1354:7;;-1:-1:-1;1419:41:184;1385:25;1419:41;:::i;:::-;1479:7;-1:-1:-1;;;1505:16:184;1541:6;1533:15;;1530:35;;;1561:1;1558;1551:12;1530:35;1589:21;;:::i;:::-;1630:2;1626;1622:11;1619:31;;;1646:1;1643;1636:12;1619:31;1674:17;;:::i;:::-;1757:2;1742:18;;;1736:25;1770:24;;1860:3;1845:19;;;1839:26;1894:2;1881:16;;;1874:33;;;;1916:24;;;2006:3;1991:19;;;1985:26;2027:16;;;2020:33;;;;2119:3;2104:19;;;2098:26;2153:2;2140:16;;2133:33;2232:3;2217:19;;;2211:26;2253:16;;;2246:33;;;;2347:6;2332:22;;2326:29;2371:17;;;2364:35;;;;2467:6;2452:22;;2446:29;2491:17;;;2484:35;;;;2587:3;2572:19;;2566:26;2608:17;;;2601:35;;;;2704:3;2689:19;;;2683:26;2725:17;;;2718:35;;;;-1:-1:-1;862:1923:184;;;;-1:-1:-1;862:1923:184;1923:7;-1:-1:-1;862:1923:184:o;6664:266::-;6395:26203:132;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610174575f3560e01c806371706cbe116100d5578063c4bf093611610084578063c4bf093614610452578063c7f758a814610465578063da35c66414610485578063e1d746441461048e578063edb884e9146104a1578063fe0d94c1146104b4578063fe7f0e8b146104c7575f5ffd5b806371706cbe1461030e5780637f514e78146103175780638a4fb16a1461031f5780639080936f146103e25780639efbc2df14610402578063b907c0ea1461042d578063c3a5051514610440575f5ffd5b80633d24e054116101315780633d24e0541461020357806347e7ef241461020b5780634800d97f1461021e57806355ead34a146102525780635926651d146102725780636a18ff7a146102855780636bd50cef14610298575f5ffd5b80630126795114610178578063083b42461461019e5780630928d152146101b357806330eb4bdd146101c65780633a00b7ee146101d95780633b8f880d146101f0575b5f5ffd5b61018b610186366004612cac565b6104da565b6040519081526020015b60405180910390f35b6101b16101ac366004612cc7565b610531565b005b6101b16101c1366004612cc7565b6105ee565b61018b6101d4366004612cde565b610711565b60025460ff165b6040519015158152602001610195565b61018b6101fe366004612d15565b61077e565b6101b16107a6565b6101b1610219366004612d15565b610803565b6102457f000000000000000000000000000000000000000000000000000000000000000081565b6040516101959190612d3f565b610265610260366004612d53565b610914565b6040516101959190612d76565b6101b1610280366004612cac565b61094f565b6101b1610293366004612d8d565b6109d4565b6102a0610b80565b60405161019591905f610120820190508251805183526020810151602084015250602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e083015161010083015292915050565b61018b600b5481565b61018b610c28565b6103a461032d366004612cc7565b604080516080810182525f808252602082018190529181018290526060810191909152505f90815260066020908152604091829020825160808101845281548152600182015492810192909252600201546001600160a01b03811692820192909252600160a01b90910460ff161515606082015290565b604051610195919081518152602080830151908201526040808301516001600160a01b03169082015260609182015115159181019190915260800190565b6103f56103f0366004612cc7565b610c33565b6040516101959190612dfb565b6101e0610410366004612cac565b6001600160a01b03165f9081526001602052604090205460ff1690565b6101b161043b366004612cac565b610dbf565b5f54610245906001600160a01b031681565b61018b610460366004612d15565b610e55565b610478610473366004612cc7565b610e6b565b6040516101959190612e09565b61018b600a5481565b61018b61049c366004612cac565b610f83565b6101b16104af366004612f3f565b610fa3565b6101b16104c2366004612cc7565b611107565b61018b6104d5366004612cc7565b61135a565b5f805433906001600160a01b0316818114610513576040516307aa341360e31b815260040161050a929190612fe5565b60405180910390fd5b50505f5461052b9083906001600160a01b0316611366565b92915050565b5f8181526003602052604090206007600182015460ff16600881111561055957610559612dc7565b0361057757604051630595c07760e51b815260040160405180910390fd5b600661058283610c33565b600881111561059357610593612dc7565b146105b1576040516308adbf2160e01b815260040160405180910390fd5b60018101805460ff1916600717905560405182907fbe0d6497a32a201ada887344ab9138dacd7d057f44cd070946394838a0960276905f90a25050565b5f81815260066020526040902060028101546001600160a01b031661062557604051626fa8b560e61b815260040160405180910390fd5b6002810154600160a01b900460ff161561065257604051632bbd3b8d60e11b815260040160405180910390fd5b610660428260010154111590565b6001820154429161068d57604051630d02d71b60e21b81526004810192909252602482015260440161050a565b505060028101805460ff60a01b1916600160a01b17905560405182907fcebf724a837e6c3b3bf571f17587621a5b8b13a5c49e854ff99f2700a9fc3666905f90a26002810154815461070d916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116929116906115d5565b5050565b6040805180820182525f8082526020918201819052825180840190935260085463ffffffff600160c01b8204168452600160601b90046001600160601b0316918301919091529061076b33848360200151845f0151611639565b506107768430611366565b949350505050565b6001600160a01b0382165f90815260056020526040812061079f908361176b565b9392505050565b33308181146107ca5760405163f18e42a160e01b815260040161050a929190612fe5565b50506002805460ff191660011790556040517f8d67419becc56dd5daf39212ee5e2cb8d9c40cf1184863a77318db110bfc77d9905f90a1565b81303303610824576040516306fdffd960e51b815260040160405180910390fd5b60025460ff168061084c57506001600160a01b0381165f9081526001602052604090205460ff165b61086957604051636c26e61960e01b815260040160405180910390fd5b61089e6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856117b5565b6001600160a01b0383165f9081526005602052604090206108bf90836117f4565b506108cd90506009836117f4565b50506040518281526001600160a01b0384169033907f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629060200160405180910390a3505050565b6040805180820182525f8082526020808301829052858252600481528382206001600160a01b03861683529052919091205461079f9061186e565b33308181146109735760405163f18e42a160e01b815260040161050a929190612fe5565b50506001600160a01b0381165f90815260016020819052604091829020805460ff19169091179055517fc3e089fc6227e049d0e41c3d7a383d57efe69c1955c5752f7e5a9b5f1f113020906109c9908390612d3f565b60405180910390a150565b5f6109de84610c33565b905060018160088111156109f4576109f4612dc7565b14610a1257604051632d85b5cb60e01b815260040160405180910390fd5b5f848152600360205260408120610a4090610a2c906118ae565b335f9081526005602052604090209061176b565b5f868152600460209081526040808320338452909152812054919250610a668260801c90565b610a79906001600160801b038416613013565b610a839084613026565b905033818781811115610ac257604051631186c4ab60e31b81526001600160a01b0390931660048401526024830191909152604482015260640161050a565b5050505f8781526003602052604090208515610b0a57610ae283886118d3565b5f898152600460209081526040808320338452909152902055610b058188611923565b610b37565b610b14838861193e565b5f898152600460209081526040808320338452909152902055610b37818861197d565b6040805187151581526020810189905233918a917fcbdf6214089cba887ecbf35a0b6a734589959c9763342c756bb2a80ca2bc9f6e910160405180910390a35050505050505050565b610b88612bb5565b604080516101208101825260075463ffffffff8082168352600160201b820481166020840152600160401b8204811693830193909352600160601b808204841660608401526001600160401b03600160801b830481166080850152600160c01b928390041660a08401526008546001600160601b0380821660c086015291810490911660e084015204909116610100820152610c239061198c565b905090565b5f610c236009611a4c565b5f600a5482108290610c5b576040516320c68f5560e21b815260040161050a91815260200190565b505f8281526003602052604090206005600182015460ff166008811115610c8457610c84612dc7565b1480610ca857506007600182015460ff166008811115610ca657610ca6612dc7565b145b15610cba576001015460ff1692915050565b80545f546001600160a01b03908116911614801590610ce3575080546001600160a01b03163014155b15610cf15750600692915050565b42610d0481610cff846118ae565b101590565b15610d1257505f9392505050565b610d1f81610cff84611a65565b15610d2e575060019392505050565b5f610d43610d3b846118ae565b60099061176b565b90505f610d508483611a89565b5090505f816002811115610d6657610d66612dc7565b14610d775750600495945050505050565b610d8483610cff86611bfe565b15610d955750600295945050505050565b610da283610cff86611c22565b15610db35750600395945050505050565b50600895945050505050565b3330818114610de35760405163f18e42a160e01b815260040161050a929190612fe5565b5050306001600160a01b03821603610e0e576040516304eb9a0360e31b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917f58b9023fe926532b1c6a397a00102fcce3ac81725a232d9d235104cd1a28e43291a250565b5f61079f338484610e666007611c46565b611639565b610e73612c05565b5f8281526003602090815260409182902082516101808101845281546001600160a01b0381168252600160a01b90046001600160601b031692810192909252600181015461052b9383019060ff166008811115610ed257610ed2612dc7565b6008811115610ee357610ee3612dc7565b8152600182015461010080820463ffffffff9081166020850152600160281b830481166040850152600160481b830481166060850152600160681b830481166080850152600160881b83041660a0840152600160a81b9091046001600160401b0390811660c0840152600284015460e08401526003909301546001600160a01b03811691830191909152600160a01b900490911661012090910152611c83565b6001600160a01b0381165f90815260056020526040812061052b90611a4c565b3330818114610fc75760405163f18e42a160e01b815260040161050a929190612fe5565b5050610fd281611d7b565b610fdb81612027565b80516007805460208401516040808601516060870151608088015160a089015163ffffffff98891667ffffffffffffffff1990971696909617600160201b958916959095029490941767ffffffffffffffff60401b1916600160401b9288169290920263ffffffff60601b191691909117600160601b9187168202176001600160801b0316600160801b6001600160401b03948516026001600160c01b031617600160c01b9390941683029390931790935560c08501516008805460e0880151610100909801516001600160601b039384166001600160c01b031990921691909117929097169093021763ffffffff60c01b1916949093169092029290921790555142907f7d096a764e5ea306d0946e3a05ca9ffd9ea0af82aecf12cf8eee26b2485f9a0c905f90a250565b5f61111182610c33565b9050600381600881111561112757611127612dc7565b146111455760405163b6ae35c160e01b815260040160405180910390fd5b5f82815260036020819052604080832060018101805460ff1916600517905591820154815163504d080b60e01b815291519293926001600160a01b039091169163504d080b91600480830192869291908290030181865afa1580156111ac573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111d39190810190613039565b90505f5b8151811015611329577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031682828151811061121c5761121c6131a2565b60200260200101515f01516001600160a01b03160361124e576040516304f6c78960e21b815260040160405180910390fd5b5f828281518110611261576112616131a2565b60200260200101515f01516001600160a01b0316838381518110611287576112876131a2565b6020026020010151602001516040516112a091906131b6565b5f604051808303815f865af19150503d805f81146112d9576040519150601f19603f3d011682016040523d82523d5f602084013e6112de565b606091505b50509050808383815181106112f5576112f56131a2565b60200260200101515f01519061131f57604051633cb8c30160e01b815260040161050a9190612d3f565b50506001016111d7565b5060405184907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f905f90a250505050565b5f61052b60098361176b565b600a80545f9182919082611379836131cc565b90915550604080516101208101825260075463ffffffff8082168352600160201b820481166020840152600160401b8204811693830193909352600160601b808204841660608401526001600160401b03600160801b830481166080850152600160c01b928390041660a08401526008546001600160601b0380821660c086015291810490911660e084015204909116610100820152909150611421908490869042906122c6565b5f828152600360209081526040918290208351918401516001600160601b0316600160a01b026001600160a01b039092169190911781559082015160018083018054909160ff199091169083600881111561147e5761147e612dc7565b02179055506060820151600182018054608085015160a086015160c087015160e0880151610100808a01516001600160401b03908116600160a81b0267ffffffffffffffff60a81b1963ffffffff948516600160881b02166bffffffffffffffffffffffff60881b19958516600160681b0263ffffffff60681b19978616600160481b029790971667ffffffffffffffff60481b19988616600160281b0268ffffffff00000000001996909c169094029490941668ffffffffffffffff00199098169790971798909817949094169390931791909117161717905561012083015160028301556101408301516003909201805461016090940151909116600160a01b026001600160e01b03199093166001600160a01b0392831617929092179091556040519085169082907faa9a4d6243341331785569c732ffe9c81a3e9c2aafa58faab1afe4797668433f905f90a39392505050565b6040516001600160a01b0383811660248301526044820183905261163491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506123ef565b505050565b5f6001600160a01b038416611661576040516312c8cda160e01b815260040160405180910390fd5b6001600160a01b0385165f9081526005602052604090206116829084612452565b506116909050600984612452565b5050600b80545f91826116a2836131cc565b91905055905060405180608001604052808581526020016116c342866124ff565b81526001600160a01b0380881660208084018290525f6040948501819052868152600682528490208551815590850151600182015584840151600290910180546060909601511515600160a01b026001600160a81b031990961691909316179390931790555182907f35572b4263de54e794ffcb886cb01a64870892fe896854fd2ca93810d5c66f7e9061175a9088815260200190565b60405180910390a395945050505050565b5f61177582421190565b611792576040516334dcb7d760e21b815260040160405180910390fd5b6117a561179e8361250a565b849061253e565b6001600160e01b03169392505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526117ee9186918216906323b872dd90608401611602565b50505050565b5f5f5f611800856125ec565b9050835f0361181c576001600160e01b03169150819050611867565b5f61182685612623565b90506118466118344261250a565b61183e83856131e4565b889190612656565b5082905061185482826131e4565b6001600160e01b03918216955016925050505b9250929050565b604080518082019091525f808252602082015260405180604001604052806118968460801c90565b81526020016001600160801b0384165b905292915050565b60018101545f9061052b9063ffffffff6101008204811691600160281b9004166124ff565b5f5f6118df8460801c90565b90505f6118ec8483613013565b905061191a856118fb83612670565b6001600160801b0316608081901b6001600160801b0383161792915050565b95945050505050565b600282015461193290826118d3565b82600201819055505050565b5f6001600160801b038316816119548483613013565b905061191a8561196383612670565b6001600160801b03166001600160801b0319919091161790565b6002820154611932908261193e565b611994612bb5565b60408051610140810182526101008481015163ffffffff90811691830191825260e08601516001600160601b0316610120840152908252845181166020808401919091528501518116828401529184015190916060830191168152602001611a09846060015163ffffffff1663ffffffff1690565b815260200183608001516001600160401b031681526020018360a001516001600160401b031681526020018360c001516001600160601b03168152509050919050565b5f611a56826125ec565b6001600160e01b031692915050565b5f61052b611a72836118ae565b6001840154600160481b900463ffffffff166124ff565b81545f908190600160a01b90046001600160601b0316831015611ab15750600190505f611867565b5f611ae7848660010160159054906101000a90046001600160401b03166001600160401b0316670de0b6b3a764000060016126a3565b9050805f03611afe57600260019250925050611867565b83811115611b13576002809250925050611867565b5f5f611b1e876126e5565b90925090505f611b2e8383613013565b905083811015611b4957600160039550955050505050611867565b808303611b60575f60079550955050505050611867565b60038801545f90611b9d90611b8d90600160a01b90046001600160401b0316670de0b6b3a7640000613203565b6001600160401b03166002612712565b90505f611bb58383670de0b6b3a764000060016126a3565b905082811115611bd2576002600597509750505050505050611867565b808511611bec576001600897509750505050505050611867565b505f9960099950975050505050505050565b5f61052b611c0b83611a65565b6001840154600160681b900463ffffffff166124ff565b5f61052b611c2f83611bfe565b6001840154600160881b900463ffffffff166124ff565b80545f9063ffffffff80821691600160201b8104821691600160401b9091041661191a611c7d611c77600586613236565b846124ff565b826124ff565b611c8b612c05565b604080516101a08101909152608083015163ffffffff90811660c080840191825260a0860151831660e08501528501518392610100840191168152602001611ce08660e0015163ffffffff1663ffffffff1690565b81526020018561010001516001600160401b031681526020018561016001516001600160401b0316815260200185602001516001600160601b0316815250815260200183604001516008811115611d3957611d39612dc7565b81526101408401516001600160a01b039081166020830152845116604082015260608085015191019063ffffffff1681526020016118a684610120015161186e565b60018160a001511015611da15760405163245ca84960e11b815260040160405180910390fd5b670de0b6b3a76400008160a001511115611dce57604051637a9fd76760e11b815260040160405180910390fd5b670de0b6b3a76400008160c001511115611dfb576040516323bdbbbb60e01b815260040160405180910390fd5b60018160e001511015611e215760405163505c925360e11b815260040160405180910390fd5b60e08101516001600160601b031015611e4d5760405163505c925360e11b815260040160405180910390fd5b80516020015160021115611e745760405163ec4abc2f60e01b815260040160405180910390fd5b8051602001516001600160601b031015611ea157604051635590b7bd60e11b815260040160405180910390fd5b805151603c1115611ec5576040516302b2633f60e21b815260040161050a90613249565b80515163ffffffff1015611eec57604051637ac6b2f960e11b815260040161050a90613249565b6020810151603c1115611f12576040516302b2633f60e21b815260040161050a9061326c565b60208101516276a7001015611f3a57604051637ac6b2f960e11b815260040161050a9061326c565b6040810151603c1115611f60576040516302b2633f60e21b815260040161050a90613291565b60408101516276a7001015611f8857604051637ac6b2f960e11b815260040161050a90613291565b6060810151603c1115611fae576040516302b2633f60e21b815260040161050a906132b9565b60608101516276a7001015611fd657604051637ac6b2f960e11b815260040161050a906132b9565b6080810151603c1115611ffc576040516302b2633f60e21b815260040161050a906132e1565b60808101516276a700101561202457604051637ac6b2f960e11b815260040161050a906132e1565b50565b60408051610120810182525f8082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201528251909101516001600160601b0310156120c55760405162461bcd60e51b81526020600482015260196024820152783637b1b5a0b6b7bab73a1032bc31b2b2b239903ab4b73a1c9b60391b604482015260640161050a565b60e08201516001600160601b0310156121205760405162461bcd60e51b815260206004820152601b60248201527f6d696e696d756d566f74657320657863656564732075696e7439360000000000604482015260640161050a565b60a08201516001600160401b0310156121735760405162461bcd60e51b81526020600482015260156024820152741c5d5bdc9d5b48195e18d959591cc81d5a5b9d0d8d605a1b604482015260640161050a565b60c08201516001600160401b0310156121ce5760405162461bcd60e51b815260206004820181905260248201527f72657175697265645965614d617267696e20657863656564732075696e743634604482015260640161050a565b6040518061012001604052806121e78460200151612745565b63ffffffff1681526020016121ff8460400151612745565b63ffffffff1681526020016122178460600151612745565b63ffffffff16815260200161222f8460800151612745565b63ffffffff1681526020016122478460a0015161274f565b6001600160401b031681526020016122628460c0015161274f565b6001600160401b0316815260200161227d8460e00151612784565b6001600160601b0316815260200161229b845f015160200151612784565b6001600160601b031681526020016122b8845f01515f0151612745565b63ffffffff16905292915050565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915260408051610180810182526001600160a01b038716815260c08401516001600160601b031660208201529081015f815260200161236285612745565b63ffffffff168152602001835f015163ffffffff168152602001836020015163ffffffff168152602001836040015163ffffffff168152602001836060015163ffffffff16815260200183608001516001600160401b031681526020015f8152602001856001600160a01b031681526020018360a001516001600160401b03168152509050949350505050565b5f5f60205f8451602086015f885af18061240e576040513d5f823e3d81fd5b50505f513d91508115612425578060011415612432565b6001600160a01b0384163b155b156117ee5783604051635274afe760e01b815260040161050a9190612d3f565b5f5f5f61245e856125ec565b9050835f0361247a576001600160e01b03169150819050611867565b5f61248485612623565b90503382826001600160e01b0380821690831610156124d85760405163b3d9568f60e01b81526001600160a01b0390931660048401526001600160e01b03918216602484015216604482015260640161050a565b5050506124f16124e74261250a565b61183e8385613306565b508290506118548282613306565b5f61079f8284613013565b5f63ffffffff82111561253a576040516306dfcc6560e41b8152602060048201526024810183905260440161050a565b5090565b81545f9081816005811115612598575f612557846127b7565b6125619085613026565b5f8881526020902090915081015463ffffffff908116908716101561258857809150612596565b612593816001613013565b92505b505b5f6125a587878585612909565b905080156125df576125c9876125bc600184613026565b5f91825260209091200190565b54600160201b90046001600160e01b03166125e1565b5f5b979650505050505050565b80545f90801561261b57612605836125bc600184613026565b54600160201b90046001600160e01b031661079f565b5f9392505050565b5f6001600160e01b0382111561253a576040516306dfcc6560e41b815260e060048201526024810183905260440161050a565b5f80612663858585612964565b915091505b935093915050565b5f6001600160801b0382111561253a576040516306dfcc6560e41b8152608060048201526024810183905260440161050a565b5f6126d06126b083612aa8565b80156126cb57505f84806126c6576126c6613222565b868809115b151590565b6126db868686612ad4565b61191a9190613013565b5f5f6126f5836002015460801c90565b915061270b83600201546001600160801b031690565b9050915091565b5f815f03612724576127246012612b8a565b81600184038161273657612736613222565b04600101831515029392505050565b5f61052b8261250a565b5f6001600160401b0382111561253a57604080516306dfcc6560e41b815260048101919091526024810183905260440161050a565b5f6001600160601b0382111561253a576040516306dfcc6560e41b8152606060048201526024810183905260440161050a565b5f600182116127c4575090565b816001600160801b82106127dd5760809190911c9060401b5b600160401b82106127f35760409190911c9060201b5b600160201b82106128095760209190911c9060101b5b62010000821061281e5760109190911c9060081b5b61010082106128325760089190911c9060041b5b601082106128455760049190911c9060021b5b600482106128515760011b5b600302600190811c9081858161286957612869613222565b048201901c9050600181858161288157612881613222565b048201901c9050600181858161289957612899613222565b048201901c905060018185816128b1576128b1613222565b048201901c905060018185816128c9576128c9613222565b048201901c905060018185816128e1576128e1613222565b048201901c90506129008185816128fa576128fa613222565b04821190565b90039392505050565b5f5b8183101561295c575f61291e8484612b9b565b5f8781526020902090915063ffffffff86169082015463ffffffff16111561294857809250612956565b612953816001613013565b93505b5061290b565b509392505050565b82545f9081908015612a50575f612980876125bc600185613026565b805490915063ffffffff80821691600160201b90046001600160e01b03169088168211156129c157604051632520601d60e01b815260040160405180910390fd5b8763ffffffff168263ffffffff16036129f457825463ffffffff16600160201b6001600160e01b03891602178355612a42565b6040805180820190915263ffffffff808a1682526001600160e01b03808a1660208085019182528d54600181018f555f8f81529190912094519151909216600160201b029216919091179101555b945085935061266892505050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a555f8a815291822095519251909316600160201b029190931617920191909155905081612668565b5f6002826003811115612abd57612abd612dc7565b612ac79190613325565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f03612b0857838281612afe57612afe613222565b049250505061079f565b808411612b1f57612b1f6003851502601118612b8a565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b634e487b715f52806020526024601cfd5b5f612ba96002848418613236565b61079f90848416613013565b6040805161014081019091525f6101008201818152610120830191909152819081526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060c00160405280612c496040518060e001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f8152602001612c9360405180604001604052805f81526020015f81525090565b905290565b6001600160a01b0381168114612024575f5ffd5b5f60208284031215612cbc575f5ffd5b813561079f81612c98565b5f60208284031215612cd7575f5ffd5b5035919050565b5f5f60408385031215612cef575f5ffd5b8235612cfa81612c98565b91506020830135612d0a81612c98565b809150509250929050565b5f5f60408385031215612d26575f5ffd5b8235612d3181612c98565b946020939093013593505050565b6001600160a01b0391909116815260200190565b5f5f60408385031215612d64575f5ffd5b823591506020830135612d0a81612c98565b81518152602080830151908201526040810161052b565b5f5f5f60608486031215612d9f575f5ffd5b833592506020840135915060408401358015158114612dbc575f5ffd5b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b60098110612df757634e487b7160e01b5f52602160045260245ffd5b9052565b6020810161052b8284612ddb565b5f6101a0820190508251805183526020810151602084015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c0840152506020830151612e6660e0840182612ddb565b5060408301516001600160a01b03908116610100840152606084015116610120830152608083015161014083015260a0909201518051610160830152602001516101809091015290565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612ee757612ee7612eb0565b60405290565b604080519081016001600160401b0381118282101715612ee757612ee7612eb0565b604051601f8201601f191681016001600160401b0381118282101715612f3757612f37612eb0565b604052919050565b5f81830361012081128015612f52575f5ffd5b50612f5b612ec4565b6040821215612f68575f5ffd5b612f70612eed565b843581526020808601358183015290825260408086013591830191909152606080860135918301919091526080808601359183019190915260a0808601359183019190915260c0808601359183019190915260e080860135918301919091526101009094013593810193909352509092915050565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561052b5761052b612fff565b8181038181111561052b5761052b612fff565b5f60208284031215613049575f5ffd5b81516001600160401b0381111561305e575f5ffd5b8201601f8101841361306e575f5ffd5b80516001600160401b0381111561308757613087612eb0565b8060051b61309760208201612f0f565b918252602081840181019290810190878411156130b2575f5ffd5b6020850192505b838310156125e15782516001600160401b038111156130d6575f5ffd5b85016040818a03601f190112156130eb575f5ffd5b6130f3612eed565b602082015161310181612c98565b815260408201516001600160401b0381111561311b575f5ffd5b60208184010192505089601f830112613132575f5ffd5b81516001600160401b0381111561314b5761314b612eb0565b61315e601f8201601f1916602001612f0f565b8181528b6020838601011115613172575f5ffd5b8160208501602083015e5f60208383010152806020840152505080845250506020820191506020830192506130b9565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f600182016131dd576131dd612fff565b5060010190565b6001600160e01b03818116838216019081111561052b5761052b612fff565b6001600160401b03818116838216019081111561052b5761052b612fff565b634e487b7160e01b5f52601260045260245ffd5b5f8261324457613244613222565b500490565b6020808252600990820152684c6f636b44656c617960b81b604082015260600190565b6020808252600b908201526a566f74696e6744656c617960a81b604082015260600190565b6020808252600e908201526d2b37ba34b733a23ab930ba34b7b760911b604082015260600190565b6020808252600e908201526d457865637574696f6e44656c617960901b604082015260600190565b6020808252600b908201526a11dc9858d954195c9a5bd960aa1b604082015260600190565b6001600160e01b03828116828216039081111561052b5761052b612fff565b5f60ff83168061333757613337613222565b8060ff8416069150509291505056fea26469706673582212203c40d5b041cca34250ae8e34f6deccbba5e45d5de79bb8598438b8bf066ad5db64736f6c634300081e0033","sourceMap":"6395:26203:132:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16944:282;;;;;;:::i;:::-;;:::i;:::-;;;586:25:184;;;574:2;559:18;16944:282:132;;;;;;;;22303:446;;;;;;:::i;:::-;;:::i;:::-;;15511:877;;;;;;:::i;:::-;;:::i;18276:340::-;;;;;;:::i;:::-;;:::i;25000:144::-;25101:38;;;;25000:144;;;1449:14:184;;1442:22;1424:41;;1412:2;1397:18;25000:144:132;1284:187:184;22998:146:132;;;;;;:::i;:::-;;:::i;11410:151::-;;;:::i;14098:317::-;;;;;;:::i;:::-;;:::i;6819:29::-;;;;;;;;;;;;:::i;26343:173::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11047:183::-;;;;;;:::i;:::-;;:::i;19424:1278::-;;;;;;:::i;:::-;;:::i;25148:139::-;;;:::i;:::-;;;;;;4335:4:184;4377:3;4366:9;4362:19;4354:27;;4406:6;4400:13;4446:2;4440:9;4429;4422:28;4502:4;4498:2;4494:13;4488:20;4481:4;4470:9;4466:20;4459:50;;4565:4;4557:6;4553:17;4547:24;4540:4;4529:9;4525:20;4518:54;4628:4;4620:6;4616:17;4610:24;4603:4;4592:9;4588:20;4581:54;4691:4;4683:6;4679:17;4673:24;4666:4;4655:9;4651:20;4644:54;4754:4;4746:6;4742:17;4736:24;4729:4;4718:9;4714:20;4707:54;4817:4;4809:6;4805:17;4799:24;4792:4;4781:9;4777:20;4770:54;4880:4;4872:6;4868:17;4862:24;4855:4;4844:9;4840:20;4833:54;4945:4;4937:6;4933:17;4927:24;4918:6;4907:9;4903:22;4896:56;4179:779;;;;;9339:30:132;;;;;;24341:113;;;:::i;25888:154::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26011:26:132;;;;:11;:26;;;;;;;;;26004:33;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26004:33:132;;;;;;;;;-1:-1:-1;;;26004:33:132;;;;;;;;;;;;25888:154;;;;;;;5186:13:184;;5168:32;;5256:4;5244:17;;;5238:24;5216:20;;;5209:54;5323:4;5311:17;;;5305:24;-1:-1:-1;;;;;5301:50:184;5279:20;;;5272:80;5422:4;5410:17;;;5404:24;5397:32;5390:40;5368:20;;;5361:70;;;;5155:3;5140:19;;4963:474;28723:1617:132;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24672:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;24791:38:132;24772:4;24791:38;;;:14;:38;;;;;;;;;24672:162;12033:315;;;;;;:::i;:::-;;:::i;7019:33::-;;;;;-1:-1:-1;;;;;7019:33:132;;;14933:202;;;;;;:::i;:::-;;:::i;25504:157::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9140:28::-;;;;;;23655:130;;;;;;:::i;:::-;;:::i;12557:350::-;;;;;;:::i;:::-;;:::i;21177:862::-;;;;;;:::i;:::-;;:::i;23979:127::-;;;;;;:::i;:::-;;:::i;16944:282::-;17021:7;17065:18;;17051:10;;-1:-1:-1;;;;;17065:18:132;17051:32;;;17036:133;;;;-1:-1:-1;;;17036:133:132;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;17202:18:132;;17182:39;;17191:9;;-1:-1:-1;;;;;17202:18:132;17182:8;:39::i;:::-;17175:46;16944:282;-1:-1:-1;;16944:282:132:o;22303:446::-;22383:31;22417:22;;;:9;:22;;;;;22473:21;22453:16;;;;;;:41;;;;;;;;:::i;:::-;;22445:95;;;;-1:-1:-1;;;22445:95:132;;;;;;;;;;;;22587:23;22554:29;22571:11;22554:16;:29::i;:::-;:56;;;;;;;;:::i;:::-;;22546:111;;;;-1:-1:-1;;;22546:111:132;;;;;;;;;;;;22664:16;;;:40;;-1:-1:-1;;22664:40:132;22683:21;22664:40;;;22716:28;;22732:11;;22716:28;;-1:-1:-1;;22716:28:132;22377:372;22303:446;:::o;15511:877::-;15597:29;15629:26;;;:11;:26;;;;;15893:20;;;;-1:-1:-1;;;;;15893:20:132;15885:88;;;;-1:-1:-1;;;15885:88:132;;;;;;;;;;;;15988:18;;;;-1:-1:-1;;;15988:18:132;;;;15987:19;15979:75;;;;-1:-1:-1;;;15979:75:132;;;;;;;;;;;;16075:55;16090:15;16110:10;:20;;;-1:-1:-1;938:44:182;;857:128;16075:55:132;16215:20;;;;16197:15;;16060:182;;;;-1:-1:-1;;;16060:182:132;;;;;10675:25:184;;;;10716:18;;;10709:34;10648:18;;16060:182:132;10437:312:184;16060:182:132;-1:-1:-1;;16248:18:132;;;:25;;-1:-1:-1;;;;16248:25:132;-1:-1:-1;;;16248:25:132;;;16285:32;;16303:13;;16285:32;;16248:25;;16285:32;16343:20;;;;16365:17;;16324:59;;-1:-1:-1;;;;;16324:5:132;:18;;;16343:20;;;16324:18;:59::i;:::-;15591:797;15511:877;:::o;18276:340::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;2117:125:151;;;;;;;;2165:21;;;-1:-1:-1;;;2165:21:151;;;2117:125;;-1:-1:-1;;;2213:22:151;;-1:-1:-1;;;;;2213:22:151;2117:125;;;;;;;-1:-1:-1;18479:85:132;18497:10;18509:3;18514:13;:24;;;18540:13;:23;;;18479:17;:85::i;:::-;;18577:34;18586:9;18605:4;18577:8;:34::i;:::-;18570:41;18276:340;-1:-1:-1;;;;18276:340:132:o;22998:146::-;-1:-1:-1;;;;;23113:13:132;;23091:7;23113:13;;;:5;:13;;;;;:26;;23135:3;23113:21;:26::i;:::-;23106:33;22998:146;-1:-1:-1;;;22998:146:132:o;11410:151::-;9584:10;9606:4;9584:27;;;9576:97;;;;-1:-1:-1;;;9576:97:132;;;;;;;;;:::i;:::-;-1:-1:-1;;11482:38:132;:45;;-1:-1:-1;;11482:45:132::1;11523:4;11482:45;::::0;;11538:18:::1;::::0;::::1;::::0;11482:38:::1;::::0;11538:18:::1;11410:151::o:0;14098:317::-;14214:12;9875:4;9853:10;:27;9845:77;;;;-1:-1:-1;;;9845:77:132;;;;;;;;;;;;9943:38;;;;;:80;;-1:-1:-1;;;;;;9985:38:132;;:24;:38;;;:14;:38;;;;;;;;9943:80;9928:147;;;;-1:-1:-1;;;9928:147:132;;;;;;;;;;;;14236:58:::1;-1:-1:-1::0;;;;;14236:5:132::1;:22;14259:10;14279:4;14286:7:::0;14236:22:::1;:58::i;:::-;-1:-1:-1::0;;;;;14300:19:132;::::1;;::::0;;;:5:::1;:19;::::0;;;;:32:::1;::::0;14324:7;14300:23:::1;:32::i;:::-;-1:-1:-1::0;14338:18:132::1;::::0;-1:-1:-1;14338:5:132::1;14348:7:::0;14338:9:::1;:18::i;:::-;-1:-1:-1::0;;14368:42:132::1;::::0;586:25:184;;;-1:-1:-1;;;;;14368:42:132;::::1;::::0;14376:10:::1;::::0;14368:42:::1;::::0;574:2:184;559:18;14368:42:132::1;;;;;;;14098:317:::0;;;:::o;26343:173::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;26471:20:132;;;:7;:20;;;;;-1:-1:-1;;;;;26471:27:132;;;;;;;;;;;:40;;:38;:40::i;11047:183::-;9584:10;9606:4;9584:27;;;9576:97;;;;-1:-1:-1;;;9576:97:132;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;11139:38:132;::::1;:24;:38:::0;;;11180:4:::1;11139:38;::::0;;;;;;;;:45;;-1:-1:-1;;11139:45:132::1;::::0;;::::1;::::0;;11195:30;::::1;::::0;::::1;::::0;11164:12;;11195:30:::1;:::i;:::-;;;;;;;;11047:183:::0;:::o;19424:1278::-;19528:19;19550:29;19567:11;19550:16;:29::i;:::-;19528:51;-1:-1:-1;19602:20:132;19593:5;:29;;;;;;;;:::i;:::-;;19585:78;;;;-1:-1:-1;;;19585:78:132;;;;;;;;;;;;19968:17;20014:22;;;:9;:22;;;;;19988:66;;20014:39;;:37;:39::i;:::-;19994:10;19988:17;;;;:5;:17;;;;;;:25;:66::i;:::-;20061:27;20091:20;;;:7;:20;;;;;;;;20112:10;20091:32;;;;;;;;19968:86;;-1:-1:-1;20190:19:132;20091:32;614:3:150;568:49;;471:151;20190:19:132;20168:41;;-1:-1:-1;;;;;723:53:150;;20168:41:132;:::i;:::-;20155:55;;:9;:55;:::i;:::-;20130:80;-1:-1:-1;20288:10:132;20130:80;20224:7;:25;;;;20216:109;;;;-1:-1:-1;;;20216:109:132;;-1:-1:-1;;;;;11369:32:184;;;20216:109:132;;;11351:51:184;11418:18;;;11411:34;;;;11461:18;;;11454:34;11324:18;;20216:109:132;11149:345:184;20216:109:132;-1:-1:-1;;;20332:35:132;20370:22;;;:9;:22;;;;;20398:236;;;;20455:26;:10;20473:7;20455:17;:26::i;:::-;20420:20;;;;:7;:20;;;;;;;;20441:10;20420:32;;;;;;;:61;20489:24;:8;20505:7;20489:15;:24::i;:::-;20398:236;;;20569:26;:10;20587:7;20569:17;:26::i;:::-;20534:20;;;;:7;:20;;;;;;;;20555:10;20534:32;;;;;;;:61;20603:24;:8;20619:7;20603:15;:24::i;:::-;20645:52;;;11692:14:184;;11685:22;11667:41;;11739:2;11724:18;;11717:34;;;20667:10:132;;20654:11;;20645:52;;11640:18:184;20645:52:132;;;;;;;19522:1180;;;;;19424:1278;;;:::o;25148:139::-;25221:20;;:::i;:::-;25256:24;;;;;;;;:13;:24;;;;;;;-1:-1:-1;;;25256:24:132;;;;;;;;-1:-1:-1;;;25256:24:132;;;;;;;;;;;-1:-1:-1;;;25256:24:132;;;;;;;;;-1:-1:-1;;;;;;;;25256:24:132;;;;;;;;-1:-1:-1;;;25256:24:132;;;;;;;;;;;-1:-1:-1;;;;;25256:24:132;;;;;;;;;;;;;;;;;;;;;;;;;:26;;:24;:26::i;:::-;25249:33;;25148:139;:::o;24341:113::-;24411:7;24433:16;:5;:14;:16::i;28723:1617::-;28813:13;28856;;28842:11;:27;28912:11;28834:91;;;;;-1:-1:-1;;;28834:91:132;;;;;;586:25:184;;574:2;559:18;;440:177;28834:91:132;-1:-1:-1;28932:31:132;28966:22;;;:9;:22;;;;;29266;29246:16;;;;;;:42;;;;;;;;:::i;:::-;;:87;;;-1:-1:-1;29312:21:132;29292:16;;;;;;:41;;;;;;;;:::i;:::-;;29246:87;29242:131;;;29350:16;;;;;;28723:1617;-1:-1:-1;;28723:1617:132:o;29242:131::-;29557:13;;;29535:18;-1:-1:-1;;;;;29535:18:132;;;29557:13;;29535:35;;;;:69;;-1:-1:-1;29591:13:132;;-1:-1:-1;;;;;29591:13:132;29582:4;29574:30;;29535:69;29531:120;;;-1:-1:-1;29621:23:132;;28723:1617;-1:-1:-1;;28723:1617:132:o;29531:120::-;29696:15;29723:36;29696:15;29738:21;:4;:19;:21::i;:::-;-1:-1:-1;680:44:182;;599:128;29723:36:132;29719:85;;;-1:-1:-1;29776:21:132;;28723:1617;-1:-1:-1;;;28723:1617:132:o;29719:85::-;29814:35;:11;29829:20;:4;:18;:20::i;29814:35::-;29810:83;;;-1:-1:-1;29866:20:132;;28723:1617;-1:-1:-1;;;28723:1617:132:o;29810:83::-;29899:18;29920:36;29934:21;:4;:19;:21::i;:::-;29920:5;;:13;:36::i;:::-;29899:57;-1:-1:-1;29963:24:132;29992:31;:4;29899:57;29992:19;:31::i;:::-;-1:-1:-1;29962:61:132;-1:-1:-1;30040:29:132;30033:3;:36;;;;;;;;:::i;:::-;;30029:86;;-1:-1:-1;30086:22:132;;28723:1617;-1:-1:-1;;;;;28723:1617:132:o;30029:86::-;30125:35;:11;30140:20;:4;:18;:20::i;30125:35::-;30121:83;;;-1:-1:-1;30177:20:132;;28723:1617;-1:-1:-1;;;;;28723:1617:132:o;30121:83::-;30214:39;:11;30229:24;:4;:22;:24::i;30214:39::-;30210:91;;;-1:-1:-1;30270:24:132;;28723:1617;-1:-1:-1;;;;;28723:1617:132:o;30210:91::-;-1:-1:-1;30314:21:132;;28723:1617;-1:-1:-1;;;;;28723:1617:132:o;12033:315::-;9584:10;9606:4;9584:27;;;9576:97;;;;-1:-1:-1;;;9576:97:132;;;;;;;;;:::i;:::-;-1:-1:-1;;12181:4:132::1;-1:-1:-1::0;;;;;12150:36:132;::::1;::::0;12142:98:::1;;;;-1:-1:-1::0;;;12142:98:132::1;;;;;;;;;;;;12246:18;:40:::0;;-1:-1:-1;;;;;;12246:40:132::1;-1:-1:-1::0;;;;;12246:40:132;::::1;::::0;;::::1;::::0;;12297:46:::1;::::0;12246:40;;12297:46:::1;::::0;::::1;12033:315:::0;:::o;14933:202::-;15029:7;15051:79;15069:10;15081:3;15086:7;15095:34;:13;:32;:34::i;:::-;15051:17;:79::i;25504:157::-;25591:15;;:::i;:::-;25621:22;;;;:9;:22;;;;;;;;;:33;;;;;;;;;-1:-1:-1;;;;;25621:33:132;;;;-1:-1:-1;;;25621:33:132;;-1:-1:-1;;;;;25621:33:132;;;;;;;;;;;;:35;;:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25621:33:132;;;;;;;;-1:-1:-1;;;25621:33:132;;;;;;;;-1:-1:-1;;;25621:33:132;;;;;;;;-1:-1:-1;;;25621:33:132;;;;;;;-1:-1:-1;;;25621:33:132;;;-1:-1:-1;;;;;25621:33:132;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25621:33:132;;;;;;;;;-1:-1:-1;;;25621:33:132;;;;;;;;;;;:35::i;23655:130::-;-1:-1:-1;;;;;23756:13:132;;23734:7;23756:13;;;:5;:13;;;;;:24;;:22;:24::i;12557:350::-;9584:10;9606:4;9584:27;;;9576:97;;;;-1:-1:-1;;;9576:97:132;;;;;;;;;:::i;:::-;;;12735:28:::1;:14;:26;:28::i;:::-;12786:51;12822:14;12786:35;:51::i;:::-;12770:67:::0;;:13:::1;:67:::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;12770:67:132;;;;;;;-1:-1:-1;;;12770:67:132;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;12770:67:132;-1:-1:-1;;;12770:67:132;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;12770:67:132;;;;;-1:-1:-1;;;12770:67:132;;::::1;::::0;::::1;;-1:-1:-1::0;;;;;12770:67:132;-1:-1:-1;;;;;;;;12770:67:132;;::::1;;-1:-1:-1::0;;;;;12770:67:132;;-1:-1:-1;;;12770:67:132;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;12770:67:132;;::::1;-1:-1:-1::0;;;;;;12770:67:132;;;;;;;;;;::::1;::::0;;::::1;;-1:-1:-1::0;;;;12770:67:132::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;12849:53;12885:15:::1;::::0;12849:53:::1;::::0;-1:-1:-1;;12849:53:132::1;12557:350:::0;:::o;21177:862::-;21252:19;21274:29;21291:11;21274:16;:29::i;:::-;21252:51;-1:-1:-1;21326:24:132;21317:5;:33;;;;;;;;:::i;:::-;;21309:86;;;;-1:-1:-1;;;21309:86:132;;;;;;;;;;;;21402:35;21440:22;;;:9;:22;;;;;;;;21468:20;;;:45;;-1:-1:-1;;21468:45:132;21491:22;21468:45;;;21555:16;;;;:29;;-1:-1:-1;;;21555:29:132;;;;21440:22;;21402:35;-1:-1:-1;;;;;21555:16:132;;;;:27;;:29;;;;;21402:35;;21555:29;;;;;;;:16;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21555:29:132;;;;;;;;;;;;:::i;:::-;21520:64;-1:-1:-1;21596:9:132;21591:403;21615:7;:14;21611:1;:18;21591:403;;;21681:5;-1:-1:-1;;;;;21652:35:132;:7;21660:1;21652:10;;;;;;;;:::i;:::-;;;;;;;:17;;;-1:-1:-1;;;;;21652:35:132;;21644:82;;;;-1:-1:-1;;;21644:82:132;;;;;;;;;;;;21857:12;21874:7;21882:1;21874:10;;;;;;;;:::i;:::-;;;;;;;:17;;;-1:-1:-1;;;;;21874:22:132;21897:7;21905:1;21897:10;;;;;;;;:::i;:::-;;;;;;;:15;;;21874:39;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21856:57;;;21929:7;21968;21976:1;21968:10;;;;;;;;:::i;:::-;;;;;;;:17;;;21921:66;;;;;-1:-1:-1;;;21921:66:132;;;;;;;;:::i;:::-;-1:-1:-1;;21631:3:132;;21591:403;;;-1:-1:-1;22005:29:132;;22022:11;;22005:29;;;;;21246:793;;;21177:862;:::o;23979:127::-;24061:7;24083:18;:5;24097:3;24083:13;:18::i;32254:342::-;32365:13;:15;;32329:7;;;;32365:15;32329:7;32365:15;;;:::i;:::-;;;;-1:-1:-1;32417:98:132;;;;;;;;32501:13;32417:98;;;;;;;-1:-1:-1;;;32417:98:132;;;;;;;;-1:-1:-1;;;32417:98:132;;;;;;;;;;;-1:-1:-1;;;32417:98:132;;;;;;;;;-1:-1:-1;;;;;;;;32417:98:132;;;;;;;;-1:-1:-1;;;32417:98:132;;;;;;;;;;;-1:-1:-1;;;;;32417:98:132;;;;;;;;;;;;;;;;;;;;;;;;;32344:36;;-1:-1:-1;32417:98:132;;32446:9;;32457;;32483:15;;32417:28;:98::i;:::-;32387:21;;;;:9;:21;;;;;;;;;:128;;;;;;-1:-1:-1;;;;;32387:128:132;-1:-1:-1;;;32387:128:132;-1:-1:-1;;;;;32387:128:132;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32387:128:132;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;32387:128:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32387:128:132;;;-1:-1:-1;;;32387:128:132;-1:-1:-1;;;;32387:128:132;;;;-1:-1:-1;;;32387:128:132;;-1:-1:-1;;;;32387:128:132;;;-1:-1:-1;;;32387:128:132;-1:-1:-1;;;;32387:128:132;;;-1:-1:-1;;;32387:128:132;;;;;-1:-1:-1;;;;32387:128:132;;;-1:-1:-1;;;32387:128:132;-1:-1:-1;;32387:128:132;;;;;;;;;;;-1:-1:-1;;32387:128:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32387:128:132;-1:-1:-1;;;;;;32387:128:132;;;-1:-1:-1;;;;;32387:128:132;;;;;;;;;;;32527:40;;;;;;32536:10;;32527:40;;-1:-1:-1;;32527:40:132;32581:10;32254:342;-1:-1:-1;;;32254:342:132:o;1219:160:46:-;1328:43;;-1:-1:-1;;;;;14590:32:184;;;1328:43:46;;;14572:51:184;14639:18;;;14632:34;;;1301:71:46;;1321:5;;1343:14;;;;;14545:18:184;;1328:43:46;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1328:43:46;;;;;;;;;;;1301:19;:71::i;:::-;1219:160;;;:::o;30924:550:132:-;31032:7;-1:-1:-1;;;;;31055:17:132;;31047:76;;;;-1:-1:-1;;;31047:76:132;;;;;;;;;;;;-1:-1:-1;;;;;31129:12:132;;;;;;:5;:12;;;;;:25;;31146:7;31129:16;:25::i;:::-;-1:-1:-1;31160:18:132;;-1:-1:-1;31160:5:132;31170:7;31160:9;:18::i;:::-;-1:-1:-1;;31208:15:132;:17;;31185:20;;;31208:17;;;:::i;:::-;;;;;31185:40;;31260:126;;;;;;;;31287:7;31260:126;;;;31307:40;31322:15;31341:6;31307:40;:::i;:::-;31260:126;;-1:-1:-1;;;;;31260:126:132;;;;;;;;;;-1:-1:-1;31260:126:132;;;;;;;31232:25;;;:11;:25;;;;;:154;;;;;;;;31260:126;31232:154;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31232:154:132;-1:-1:-1;;;;;;31232:154:132;;;;;;;;;;;;;;31398:45;31244:12;;31398:45;;;;31435:7;586:25:184;;574:2;559:18;;440:177;31398:45:132;;;;;;;;31457:12;30924:550;-1:-1:-1;;;;;30924:550:132:o;2731:286:145:-;2824:7;2847:39;:5;2870:15;-1:-1:-1;551:43:182;471:126;2847:39:145;2839:101;;;;-1:-1:-1;;;2839:101:145;;;;;;;;;;;;2953:59;2977:34;2994:5;2977:32;:34::i;:::-;2953:5;;:23;:59::i;:::-;-1:-1:-1;;;;;2946:66:145;;2731:286;-1:-1:-1;;;2731:286:145:o;1618:188:46:-;1745:53;;-1:-1:-1;;;;;14897:32:184;;;1745:53:46;;;14879:51:184;14966:32;;;14946:18;;;14939:60;15015:18;;;15008:34;;;1718:81:46;;1738:5;;1760:18;;;;;14852::184;;1745:53:46;14677:371:184;1718:81:46;1618:188;;;;:::o;957:352:145:-;1041:7;1050;1065:15;1083:14;:5;:12;:14::i;:::-;1065:32;;1107:7;1118:1;1107:12;1103:58;;-1:-1:-1;;;;;1129:25:145;;-1:-1:-1;1129:25:145;;-1:-1:-1;1129:25:145;;1103:58;1166:14;1183:19;:7;:17;:19::i;:::-;1166:36;;1208:56;1219:26;:15;:24;:26::i;:::-;1247:16;1257:6;1247:7;:16;:::i;:::-;1208:5;;:56;:10;:56::i;:::-;-1:-1:-1;1278:7:145;;-1:-1:-1;1287:16:145;1297:6;1278:7;1287:16;:::i;:::-;-1:-1:-1;;;;;1270:34:145;;;;-1:-1:-1;1270:34:145;;-1:-1:-1;;;957:352:145;;;;;;:::o;2145:184:150:-;-1:-1:-1;;;;;;;;;;;;;;;;;2252:72:150;;;;;;;;2265:25;2272:17;614:3;568:49;;471:151;2265:25;2252:72;;;;-1:-1:-1;;;;;723:53:150;;2297:25;2252:72;;2245:79;2145:184;-1:-1:-1;;2145:184:150:o;7274:188:149:-;7385:20;;;;7361:9;;7385:72;;:20;;;;;;;-1:-1:-1;;;7421:23:149;;;7385:72;:::i;1280:271:150:-;1372:16;1396:18;1417:25;1424:17;614:3;568:49;;471:151;1417:25;1396:46;-1:-1:-1;1448:14:150;1465:20;1478:7;1396:46;1465:20;:::i;:::-;1448:37;;1498:48;1508:17;1527:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;1498:48:150;1023:3;1015:11;;;-1:-1:-1;;;;;917:54:150;;1006:21;785:248;;;;;1498:48;1491:55;1280:271;-1:-1:-1;;;;;1280:271:150:o;2502:160:152:-;2617:24;;;;:40;;2649:7;2617:31;:40::i;:::-;2590:11;:24;;:67;;;;2502:160;;:::o;1555:271:150:-;1647:16;-1:-1:-1;;;;;723:53:150;;1647:16;1740:20;1753:7;723:53;1740:20;:::i;:::-;1723:37;;1773:48;1783:17;1802:18;:6;:16;:18::i;:::-;-1:-1:-1;;;;;1773:48:150;-1:-1:-1;;;;;;1169:54:150;;;;1258:12;;1037:239;2835:160:152;2950:24;;;;:40;;2982:7;2950:31;:40::i;3823:676:151:-;3910:20;;:::i;:::-;3945:549;;;3982:129;;;;;3945:549;4032:21;;;;:32;;;;3945:549;;;3982:129;;;4080:22;;;;-1:-1:-1;;;;;3982:129:151;;;;;3945:549;;;4132:23;;:34;;3982:129;3945:549;;;;;;;4192:26;;;:37;;3945:549;;;;4255:26;;;;3945:549;;;;;;4255:37;3945:549;;;;4315:36;:11;:23;;;:34;;929:40:180;;;822:153;4315:36:151;3945:549;;;;4367:11;:18;;;-1:-1:-1;;;;;3945:549:151;;;;;4412:11;:29;;;-1:-1:-1;;;;;3945:549:151;;;;;4463:11;:24;;;-1:-1:-1;;;;;3945:549:151;;;;3938:556;;3823:676;;;:::o;2147:118:145:-;2224:7;2246:14;:5;:12;:14::i;:::-;-1:-1:-1;;;;;2239:21:145;;2147:118;-1:-1:-1;;2147:118:145:o;7635:184:149:-;7721:9;7745:69;:27;7760:11;7745:14;:27::i;:::-;7775:26;;;;-1:-1:-1;;;7775:26:149;;;;7385:72;:::i;4658:2441::-;4840:18;;4772:20;;;;-1:-1:-1;;;4840:18:149;;-1:-1:-1;;;;;4840:18:149;4826:32;;4822:131;;;-1:-1:-1;4876:29:149;;-1:-1:-1;4907:38:149;4868:78;;4822:131;4959:19;4981:64;4993:11;5006:5;:12;;;;;;;;;;-1:-1:-1;;;;;5006:12:149;-1:-1:-1;;;;;4981:64:149;5020:4;5026:18;4981:11;:64::i;:::-;4959:86;;5055:11;5070:1;5055:16;5051:112;;5089:28;5119:36;5081:75;;;;;;;5051:112;5186:11;5172;:25;5168:127;;;5215:28;5245:42;5207:81;;;;;;;5168:127;5302:11;5315;5330:16;:5;:14;:16::i;:::-;5301:45;;-1:-1:-1;5301:45:149;-1:-1:-1;5352:17:149;5372:9;5301:45;;5372:9;:::i;:::-;5352:29;;5403:11;5391:9;:23;5387:125;;;5432:29;5463:41;5424:81;;;;;;;;;;5387:125;5754:9;5747:3;:16;5743:115;;5781:29;5812:38;5773:78;;;;;;;;;;5743:115;5924:23;;;;5864:37;;5904:47;;5917:30;;-1:-1:-1;;;5924:23:149;;-1:-1:-1;;;;;5924:23:149;5917:4;:30;:::i;:::-;-1:-1:-1;;;;;5904:47:149;5949:1;5904:12;:47::i;:::-;5864:87;;5957:29;5989:79;6001:9;6012:29;6043:4;6049:18;5989:11;:79::i;:::-;5957:111;;6499:9;6475:21;:33;6471:131;;;6526:28;6556:38;6518:77;;;;;;;;;;;;6471:131;6896:21;6889:3;:28;6885:126;;6935:29;6966:37;6927:77;;;;;;;;;;;;6885:126;-1:-1:-1;7025:29:149;;7056:37;;-1:-1:-1;4658:2441:149;-1:-1:-1;;;;;;;;4658:2441:149:o;7992:183::-;8078:9;8102:68;:26;8116:11;8102:13;:26::i;:::-;8131;;;;-1:-1:-1;;;8131:26:149;;;;7385:72;:::i;8356:184::-;8446:9;8470:65;:26;8484:11;8470:13;:26::i;:::-;8499:23;;;;-1:-1:-1;;;8499:23:149;;;;7385:72;:::i;1638:395:146:-;1769:17;;1728:9;;1769:17;;;;;-1:-1:-1;;;1832:20:146;;;;;-1:-1:-1;;;1898:20:146;;;;1945:83;:66;1960:33;1992:1;1769:17;1960:33;:::i;:::-;1997:14;1945:66;:::i;:::-;2014:14;1945:83;:::i;5546:798:152:-;5628:15;;:::i;:::-;5658:681;;;5683:421;;;;;;5728:23;;;;:34;;;;5658:681;;;;5683:421;;;5790:26;;;;:37;;5683:421;;;;5855:26;;;5658:681;;5683:421;;;;5855:37;5683:421;;;;5917:36;:11;:23;;;:34;;929:40:180;;;822:153;5917:36:152;5683:421;;;;5971:11;:18;;;-1:-1:-1;;;;;5683:421:152;;;;;6018:11;:29;;;-1:-1:-1;;;;;5683:421:152;;;;;6071:11;:24;;;-1:-1:-1;;;;;5683:421:152;;;;5658:681;;;;6125:11;:23;;;5658:681;;;;;;;;:::i;:::-;;;6165:19;;;;-1:-1:-1;;;;;5658:681:152;;;;;;;6202:20;;5658:681;;;;;;6240:20;;;;5658:681;;;6240:31;;5658:681;;;;6295:37;:11;:24;;;:35;:37::i;2591:2409:146:-;630:1;2668:5;:12;;;:28;;2660:92;;;;-1:-1:-1;;;2660:92:146;;;;;;;;;;;;676:4;2766:5;:12;;;:28;;2758:90;;;;-1:-1:-1;;;2758:90:146;;;;;;;;;;;;739:4;2870:5;:23;;;:52;;2855:143;;;;-1:-1:-1;;;2855:143:146;;;;;;;;;;;;788:1;3013:5;:18;;;:33;;3005:102;;;;-1:-1:-1;;;3005:102:146;;;;;;;;;;;;3121:18;;;;-1:-1:-1;;;;;;3121:33:146;3113:102;;;;-1:-1:-1;;;3113:102:146;;;;;;;;;;;;3237:19;;:30;;;943:1;-1:-1:-1;3237:51:146;3222:131;;;;-1:-1:-1;;;3222:131:146;;;;;;;;;;;;3374:19;;:30;;;-1:-1:-1;;;;;;3374:51:146;3359:129;;;;-1:-1:-1;;;3359:129:146;;;;;;;;;;;;3811:19;;:29;1114:2;-1:-1:-1;938:44:182;3803:116:146;;;;-1:-1:-1;;;3803:116:146;;;;;;;:::i;:::-;3940:19;;:29;3988:16;-1:-1:-1;680:44:182;3925:154:146;;;;-1:-1:-1;;;3925:154:146;;;;;;;:::i;:::-;4094:17;;;;1114:2;-1:-1:-1;938:44:182;4086:106:146;;;;-1:-1:-1;;;4086:106:146;;;;;;;:::i;:::-;4206:17;;;;1177:14;-1:-1:-1;680:44:182;4198:104:146;;;;-1:-1:-1;;;4198:104:146;;;;;;;:::i;:::-;4317:20;;;;1114:2;-1:-1:-1;938:44:182;4309:112:146;;;;-1:-1:-1;;;4309:112:146;;;;;;;:::i;:::-;4435:20;;;;1177:14;-1:-1:-1;680:44:182;4427:110:146;;;;-1:-1:-1;;;4427:110:146;;;;;;;:::i;:::-;4552:20;;;;1114:2;-1:-1:-1;938:44:182;4544:112:146;;;;-1:-1:-1;;;4544:112:146;;;;;;;:::i;:::-;4670:20;;;;1177:14;-1:-1:-1;680:44:182;4662:110:146;;;;-1:-1:-1;;;4662:110:146;;;;;;;:::i;:::-;4787:17;;;;1114:2;-1:-1:-1;938:44:182;4779:106:146;;;;-1:-1:-1;;;4779:106:146;;;;;;;:::i;:::-;4899:17;;;;1177:14;-1:-1:-1;680:44:182;4891:104:146;;;;-1:-1:-1;;;4891:104:146;;;;;;;:::i;:::-;2591:2409;:::o;2580:1061:151:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2756:21:151;;:32;;;;-1:-1:-1;;;;;;2756:52:151;2748:90;;;;-1:-1:-1;;;2748:90:151;;17611:2:184;2748:90:151;;;17593:21:184;17650:2;17630:18;;;17623:30;-1:-1:-1;;;17669:18:184;;;17662:55;17734:18;;2748:90:151;17409:349:184;2748:90:151;2852:20;;;;-1:-1:-1;;;;;;2852:40:151;2844:80;;;;-1:-1:-1;;;2844:80:151;;17965:2:184;2844:80:151;;;17947:21:184;18004:2;17984:18;;;17977:30;18043:29;18023:18;;;18016:57;18090:18;;2844:80:151;17763:351:184;2844:80:151;2938:14;;;;-1:-1:-1;;;;;;2938:34:151;2930:68;;;;-1:-1:-1;;;2930:68:151;;18321:2:184;2930:68:151;;;18303:21:184;18360:2;18340:18;;;18333:30;-1:-1:-1;;;18379:18:184;;;18372:51;18440:18;;2930:68:151;18119:345:184;2930:68:151;3012:25;;;;-1:-1:-1;;;;;;3012:45:151;3004:90;;;;-1:-1:-1;;;3004:90:151;;18671:2:184;3004:90:151;;;18653:21:184;;;18690:18;;;18683:30;18749:34;18729:18;;;18722:62;18801:18;;3004:90:151;18469:356:184;3004:90:151;3108:528;;;;;;;;3153:30;:7;:19;;;:28;:30::i;:::-;3108:528;;;;;;3207:33;:7;:22;;;:31;:33::i;:::-;3108:528;;;;;;3264:33;:7;:22;;;:31;:33::i;:::-;3108:528;;;;;;3318:30;:7;:19;;;:28;:30::i;:::-;3108:528;;;;;;3364:25;:7;:14;;;:23;:25::i;:::-;-1:-1:-1;;;;;3108:528:151;;;;;3416:36;:7;:25;;;:34;:36::i;:::-;-1:-1:-1;;;;;3108:528:151;;;;;3474:31;:7;:20;;;:29;:31::i;:::-;-1:-1:-1;;;;;3108:528:151;;;;;3525:43;:7;:21;;;:32;;;:41;:43::i;:::-;-1:-1:-1;;;;;3108:528:151;;;;;3587:42;:7;:21;;;:31;;;:40;:42::i;:::-;3108:528;;;;3101:535;2580:1061;-1:-1:-1;;2580:1061:151:o;3692:697:152:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3884:500:152;;;;;;;;-1:-1:-1;;;;;3884:500:152;;;;3952:20;;;;-1:-1:-1;;;;;3884:500:152;;;;;;;;-1:-1:-1;3884:500:152;;;;4032:20;:9;:18;:20::i;:::-;3884:500;;;;;;4073:7;:19;;;3884:500;;;;;;4116:7;:22;;;3884:500;;;;;;4162:7;:22;;;3884:500;;;;;;4205:7;:19;;;3884:500;;;;;;4240:7;:14;;;-1:-1:-1;;;;;3884:500:152;;;;;4298:1;3884:500;;;;4317:8;-1:-1:-1;;;;;3884:500:152;;;;;4352:7;:25;;;-1:-1:-1;;;;;3884:500:152;;;;3877:507;;3692:697;;;;;;:::o;7686:720:46:-;7766:18;7794:19;7932:4;7929:1;7922:4;7916:11;7909:4;7903;7899:15;7896:1;7889:5;7882;7877:60;7989:7;7979:176;;8033:4;8027:11;8078:16;8075:1;8070:3;8055:40;8124:16;8119:3;8112:29;7979:176;-1:-1:-1;;8232:1:46;8226:8;8182:16;;-1:-1:-1;8258:15:46;;:68;;8310:11;8325:1;8310:16;;8258:68;;;-1:-1:-1;;;;;8276:26:46;;;:31;8258:68;8254:146;;;8382:5;8349:40;;-1:-1:-1;;;8349:40:46;;;;;;;;:::i;1532:472:145:-;1616:7;1625;1640:15;1658:14;:5;:12;:14::i;:::-;1640:32;;1682:7;1693:1;1682:12;1678:58;;-1:-1:-1;;;;;1704:25:145;;-1:-1:-1;1704:25:145;;-1:-1:-1;1704:25:145;;1678:58;1741:14;1758:19;:7;:17;:19::i;:::-;1741:36;-1:-1:-1;1868:10:145;1791:7;1741:36;-1:-1:-1;;;;;1791:17:145;;;;;;;;1783:114;;;;-1:-1:-1;;;1783:114:145;;-1:-1:-1;;;;;19050:32:184;;;1783:114:145;;;19032:51:184;-1:-1:-1;;;;;19119:32:184;;;19099:18;;;19092:60;19188:32;19168:18;;;19161:60;19005:18;;1783:114:145;18830:397:184;1783:114:145;;;;1903:56;1914:26;:15;:24;:26::i;:::-;1942:16;1952:6;1942:7;:16;:::i;1903:56::-;-1:-1:-1;1973:7:145;;-1:-1:-1;1982:16:145;1992:6;1973:7;1982:16;:::i;171:148:182:-;235:9;272:43;312:2;289;272:43;:::i;15296:213:62:-;15352:6;15382:16;15374:24;;15370:103;;;15421:41;;-1:-1:-1;;;15421:41:62;;15452:2;15421:41;;;19616:36:184;19668:18;;;19661:34;;;19589:18;;15421:41:62;19435:266:184;15370:103:62;-1:-1:-1;15496:5:62;15296:213::o;2716:606:65:-;2834:24;;2801:7;;;2834:24;2933:1;2927:7;;2923:234;;;2950:11;2970:14;2980:3;2970:9;:14::i;:::-;2964:20;;:3;:20;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;2950:34;;-1:-1:-1;7642:28:65;;3008:42;;;;;3002:48;;;;2998:149;;;3077:3;3070:10;;2998:149;;;3125:7;:3;3131:1;3125:7;:::i;:::-;3119:13;;2998:149;2936:221;2923:234;3167:11;3181:53;3200:4;3219:3;3224;3229:4;3181:18;:53::i;:::-;3167:67;-1:-1:-1;3252:8:65;;:63;;3267:41;3281:4;3300:7;3306:1;3300:3;:7;:::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;;7642:28;;7421:265;3267:41;:48;-1:-1:-1;;;3267:48:65;;-1:-1:-1;;;;;3267:48:65;3252:63;;;3263:1;3252:63;3245:70;2716:606;-1:-1:-1;;;;;;;2716:606:65:o;3442:206::-;3537:24;;3504:7;;3578:8;;:63;;3593:41;3607:4;3626:7;3632:1;3626:3;:7;:::i;3593:41::-;:48;-1:-1:-1;;;3593:48:65;;-1:-1:-1;;;;;3593:48:65;3578:63;;;3589:1;3571:70;3442:206;-1:-1:-1;;;3442:206:65:o;3156:218:62:-;3213:7;-1:-1:-1;;;;;3236:25:62;;3232:105;;;3284:42;;-1:-1:-1;;;3284:42:62;;3315:3;3284:42;;;19616:36:184;19668:18;;;19661:34;;;19589:18;;3284:42:62;19435:266:184;1277:210:65;1389:16;;1442:38;1450:4;1469:3;1474:5;1442:7;:38::i;:::-;1435:45;;;;1277:210;;;;;;;:::o;9264:218:62:-;9321:7;-1:-1:-1;;;;;9344:25:62;;9340:105;;;9392:42;;-1:-1:-1;;;9392:42:62;;9423:3;9392:42;;;19616:36:184;19668:18;;;19661:34;;;19589:18;;9392:42:62;19435:266:184;9351:238:61;9452:7;9506:76;9522:26;9539:8;9522:16;:26::i;:::-;:59;;;;;9580:1;9565:11;9552:25;;;;;:::i;:::-;9562:1;9559;9552:25;:29;9522:59;34914:9:62;34907:17;;34795:145;9506:76:61;9478:25;9485:1;9488;9491:11;9478:6;:25::i;:::-;:104;;;;:::i;3171:202:152:-;3252:11;3265;3290:33;:11;:24;;;614:3:150;568:49;;471:151;3290:33:152;3284:39;;3335:33;:11;:24;;;-1:-1:-1;;;;;723:53:150;;626:155;3335:33:152;3329:39;;3171:202;;;:::o;3969:704:61:-;4031:7;4054:1;4059;4054:6;4050:150;;4154:35;1035:4:51;4154:11:61;:35::i;:::-;4650:1;4645;4641;:5;4640:11;;;;;:::i;:::-;;4654:1;4640:15;4630:5;;;4614:42;;3969:704;-1:-1:-1;;;3969:704:61:o;339:175:180:-;402:19;461:47;496:10;461:17;:47::i;13296:213:62:-;13352:6;-1:-1:-1;;;;;13374:24:62;;13370:103;;;13452:2;13421:41;;-1:-1:-1;;;13421:41:62;;;;;19616:36:184;;;;19668:18;;;19661:34;;;19589:18;;13421:41:62;19435:266:184;11296:213:62;11352:6;-1:-1:-1;;;;;11374:24:62;;11370:103;;;11421:41;;-1:-1:-1;;;11421:41:62;;11452:2;11421:41;;;19616:36:184;19668:18;;;19661:34;;;19589:18;;11421:41:62;19435:266:184;18080:5181:61;18128:7;18246:1;18241;:6;18237:53;;-1:-1:-1;18274:1:61;18080:5181::o;18237:53::-;19230:1;19258;-1:-1:-1;;;19278:16:61;;19274:92;;19321:3;19314:10;;;;;19349:2;19342:9;19274:92;-1:-1:-1;;;19383:2:61;:15;19379:90;;19425:2;19418:9;;;;;19452:2;19445:9;19379:90;-1:-1:-1;;;19486:2:61;:15;19482:90;;19528:2;19521:9;;;;;19555:2;19548:9;19482:90;19596:7;19589:2;:15;19585:89;;19631:2;19624:9;;;;;19658:1;19651:8;19585:89;19698:6;19691:2;:14;19687:87;;19732:1;19725:8;;;;;19758:1;19751:8;19687:87;19798:6;19791:2;:14;19787:87;;19832:1;19825:8;;;;;19858:1;19851:8;19787:87;19898:6;19891:2;:14;19887:61;;19932:1;19925:8;19887:61;20374:1;:6;20385:1;20373:13;;;;;22284:1;20373:13;22284:6;;;;:::i;:::-;;22279:2;:11;22278:18;;22273:23;;22404:1;22397:2;22393:1;:6;;;;;:::i;:::-;;22388:2;:11;22387:18;;22382:23;;22515:1;22508:2;22504:1;:6;;;;;:::i;:::-;;22499:2;:11;22498:18;;22493:23;;22624:1;22617:2;22613:1;:6;;;;;:::i;:::-;;22608:2;:11;22607:18;;22602:23;;22734:1;22727:2;22723:1;:6;;;;;:::i;:::-;;22718:2;:11;22717:18;;22712:23;;22844:1;22837:2;22833:1;:6;;;;;:::i;:::-;;22828:2;:11;22827:18;;22822:23;;23216:28;23241:2;23237:1;:6;;;;;:::i;:::-;;23232:11;;;34795:145:62;23216:28:61;23211:33;;;18080:5181;-1:-1:-1;;;18080:5181:61:o;6061:433:65:-;6218:7;6237:230;6250:4;6244:3;:10;6237:230;;;6270:11;6284:23;6297:3;6302:4;6284:12;:23::i;:::-;7531:28;7594:20;;;7659:4;7646:18;;6270:37;;-1:-1:-1;6325:35:65;;;;7642:28;;6325:29;;;:35;6321:136;;;6387:3;6380:10;;6321:136;;;6435:7;:3;6441:1;6435:7;:::i;:::-;6429:13;;6321:136;6256:211;6237:230;;;-1:-1:-1;6483:4:65;6061:433;-1:-1:-1;;;6061:433:65:o;4789:922::-;4970:11;;4910:16;;;;4996:7;;4992:713;;5019:26;5048:28;5062:4;5068:7;5074:1;5068:3;:7;:::i;5048:28::-;5107:9;;;;-1:-1:-1;5107:9:65;;;;;-1:-1:-1;;;5150:11:65;;-1:-1:-1;;;;;5150:11:65;;5235:13;;;;5231:89;;;5275:30;;-1:-1:-1;;;5275:30:65;;;;;;;;;;;5231:89;5394:3;5383:14;;:7;:14;;;5379:163;;5417:19;;;;-1:-1:-1;;;;;;;;5417:19:65;;;;;;5379:163;;;5485:41;;;;;;;;;;;;;;;-1:-1:-1;;;;;5485:41:65;;;;;;;;;;5475:52;;;;;;;-1:-1:-1;5475:52:65;;;;;;;;;;;;;;-1:-1:-1;;;5475:52:65;;;;;;;;;;5379:163;5563:9;-1:-1:-1;5574:5:65;;-1:-1:-1;5555:25:65;;-1:-1:-1;;;5555:25:65;4992:713;-1:-1:-1;;5621:41:65;;;;;;;;;;;;;;;-1:-1:-1;;;;;5621:41:65;;;;;;;;;;5611:52;;;;;;;-1:-1:-1;5611:52:65;;;;;;;;;;;;;-1:-1:-1;;;5611:52:65;;;;;;;;;;;;-1:-1:-1;;5655:5:65;5677:17;;29534:122:61;29602:4;29643:1;29631:8;29625:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;29648:1;29625:24;29618:31;;29534:122;;;:::o;4996:4226::-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:61;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:51;3060:42:61;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:61;;;;;:::o;1776:194:51:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;3595:153:61;3657:7;3730:11;3740:1;3731:5;;;3730:11;:::i;:::-;3720:21;;3721:5;;;3720:21;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:141:184:-;-1:-1:-1;;;;;99:31:184;;89:42;;79:70;;145:1;142;135:12;160:275;237:6;290:2;278:9;269:7;265:23;261:32;258:52;;;306:1;303;296:12;258:52;345:9;332:23;364:41;399:5;364:41;:::i;622:226::-;681:6;734:2;722:9;713:7;709:23;705:32;702:52;;;750:1;747;740:12;702:52;-1:-1:-1;795:23:184;;622:226;-1:-1:-1;622:226:184:o;853:426::-;939:6;947;1000:2;988:9;979:7;975:23;971:32;968:52;;;1016:1;1013;1006:12;968:52;1055:9;1042:23;1074:41;1109:5;1074:41;:::i;:::-;1134:5;-1:-1:-1;1191:2:184;1176:18;;1163:32;1204:43;1163:32;1204:43;:::i;:::-;1266:7;1256:17;;;853:426;;;;;:::o;1476:409::-;1576:6;1584;1637:2;1625:9;1616:7;1612:23;1608:32;1605:52;;;1653:1;1650;1643:12;1605:52;1692:9;1679:23;1711:41;1746:5;1711:41;:::i;:::-;1771:5;1849:2;1834:18;;;;1821:32;;-1:-1:-1;;;1476:409:184:o;2389:219::-;-1:-1:-1;;;;;2569:32:184;;;;2551:51;;2539:2;2524:18;;2389:219::o;2613:377::-;2681:6;2689;2742:2;2730:9;2721:7;2717:23;2713:32;2710:52;;;2758:1;2755;2748:12;2710:52;2803:23;;;-1:-1:-1;2902:2:184;2887:18;;2874:32;2915:43;2874:32;2915:43;:::i;3147:245::-;3067:12;;3055:25;;3129:4;3118:16;;;3112:23;3096:14;;;3089:47;3331:2;3316:18;;3343:43;2995:147;3659:515;3733:6;3741;3749;3802:2;3790:9;3781:7;3777:23;3773:32;3770:52;;;3818:1;3815;3808:12;3770:52;3863:23;;;-1:-1:-1;3983:2:184;3968:18;;3955:32;;-1:-1:-1;4065:2:184;4050:18;;4037:32;4107:15;;4100:23;4088:36;;4078:64;;4138:1;4135;4128:12;4078:64;4161:7;4151:17;;;3659:515;;;;;:::o;5442:127::-;5503:10;5498:3;5494:20;5491:1;5484:31;5534:4;5531:1;5524:15;5558:4;5555:1;5548:15;5574:241;5659:1;5652:5;5649:12;5639:143;;5704:10;5699:3;5695:20;5692:1;5685:31;5739:4;5736:1;5729:15;5767:4;5764:1;5757:15;5639:143;5791:18;;5574:241::o;5820:217::-;5971:2;5956:18;;5983:48;5960:9;6013:6;5983:48;:::i;6250:1201::-;6396:4;6438:3;6427:9;6423:19;6415:27;;6467:6;6461:13;6507:2;6501:9;6490;6483:28;6563:4;6559:2;6555:13;6549:20;6542:4;6531:9;6527:20;6520:50;6622:4;6618:2;6614:13;6608:20;6601:4;6590:9;6586:20;6579:50;6681:4;6677:2;6673:13;6667:20;6660:4;6649:9;6645:20;6638:50;6740:4;6736:2;6732:13;6726:20;6719:4;6708:9;6704:20;6697:50;6799:4;6795:2;6791:13;6785:20;6778:4;6767:9;6763:20;6756:50;6858:4;6854:2;6850:13;6844:20;6837:4;6826:9;6822:20;6815:50;;6912:4;6904:6;6900:17;6894:24;6927:65;6986:4;6975:9;6971:20;6957:12;6927:65;:::i;:::-;-1:-1:-1;7041:4:184;7029:17;;7023:24;-1:-1:-1;;;;;2346:31:184;;;7114:6;7099:22;;2334:44;7171:4;7159:17;;7153:24;2346:31;7244:6;7229:22;;2334:44;7310:4;7298:17;;7292:24;7283:6;7268:22;;7261:56;7366:4;7354:17;;;7348:24;3067:12;;7437:6;7422:22;;3055:25;3129:4;3118:16;3112:23;3096:14;;;;3089:47;6250:1201;:::o;7456:127::-;7517:10;7512:3;7508:20;7505:1;7498:31;7548:4;7545:1;7538:15;7572:4;7569:1;7562:15;7588:255;7660:2;7654:9;7702:6;7690:19;;-1:-1:-1;;;;;7724:34:184;;7760:22;;;7721:62;7718:88;;;7786:18;;:::i;:::-;7822:2;7815:22;7588:255;:::o;7848:257::-;7920:4;7914:11;;;7952:17;;-1:-1:-1;;;;;7984:34:184;;8020:22;;;7981:62;7978:88;;;8046:18;;:::i;8110:275::-;8181:2;8175:9;8246:2;8227:13;;-1:-1:-1;;8223:27:184;8211:40;;-1:-1:-1;;;;;8266:34:184;;8302:22;;;8263:62;8260:88;;;8328:18;;:::i;:::-;8364:2;8357:22;8110:275;;-1:-1:-1;8110:275:184:o;8390:1474::-;8481:6;8525:9;8516:7;8512:23;8562:3;8558:2;8554:12;8578:2;8575:22;;;8593:1;8590;8583:12;8575:22;-1:-1:-1;8635:22:184;;:::i;:::-;8677:4;8673:2;8669:13;8666:33;;;8695:1;8692;8685:12;8666:33;8723:22;;:::i;:::-;8790:23;;8822:24;;8919:2;8904:18;;;8891:32;8939:16;;;8932:33;8974:22;;;9069:4;9054:20;;;9041:34;9091:14;;;9084:31;;;;9188:2;9173:18;;;9160:32;9208:16;;;9201:33;;;;9307:3;9292:19;;;9279:33;9328:14;;;9321:31;;;;9425:3;9410:19;;;9397:33;9446:15;;;9439:32;;;;9544:3;9529:19;;;9516:33;9565:15;;;9558:32;;;;9663:3;9648:19;;;9635:33;9684:15;;;9677:32;;;;9784:6;9769:22;;;9756:36;9808:15;;;9801:33;;;;-1:-1:-1;8981:5:184;;8390:1474;-1:-1:-1;;8390:1474:184:o;10132:300::-;-1:-1:-1;;;;;10324:32:184;;;10306:51;;10393:32;;10388:2;10373:18;;10366:60;10294:2;10279:18;;10132:300::o;10754:127::-;10815:10;10810:3;10806:20;10803:1;10796:31;10846:4;10843:1;10836:15;10870:4;10867:1;10860:15;10886:125;10951:9;;;10972:10;;;10969:36;;;10985:18;;:::i;11016:128::-;11083:9;;;11104:11;;;11101:37;;;11118:18;;:::i;11762:2053::-;11882:6;11935:2;11923:9;11914:7;11910:23;11906:32;11903:52;;;11951:1;11948;11941:12;11903:52;11984:9;11978:16;-1:-1:-1;;;;;12009:6:184;12006:30;12003:50;;;12049:1;12046;12039:12;12003:50;12072:22;;12125:4;12117:13;;12113:27;-1:-1:-1;12103:55:184;;12154:1;12151;12144:12;12103:55;12187:2;12181:9;-1:-1:-1;;;;;12205:6:184;12202:30;12199:56;;;12235:18;;:::i;:::-;12281:6;12278:1;12274:14;12308:28;12332:2;12328;12324:11;12308:28;:::i;:::-;12370:19;;;12414:2;12444:11;;;12440:20;;;12405:12;;;;12472:19;;;12469:39;;;12504:1;12501;12494:12;12469:39;12536:2;12532;12528:11;12517:22;;12548:1237;12564:6;12559:3;12556:15;12548:1237;;;12643:3;12637:10;-1:-1:-1;;;;;12666:11:184;12663:35;12660:55;;;12711:1;12708;12701:12;12660:55;12738:20;;12810:4;12782:16;;;-1:-1:-1;;12778:30:184;12774:41;12771:61;;;12828:1;12825;12818:12;12771:61;12858:22;;:::i;:::-;12922:2;12918;12914:11;12908:18;12939:43;12974:7;12939:43;:::i;:::-;12995:22;;13060:4;13052:13;;13046:20;-1:-1:-1;;;;;13082:32:184;;13079:52;;;13127:1;13124;13117:12;13079:52;13177:2;13166:8;13162:2;13158:17;13154:26;13144:36;;;13222:7;13215:4;13211:2;13207:13;13203:27;13193:55;;13244:1;13241;13234:12;13193:55;13283:2;13277:9;-1:-1:-1;;;;;13305:8:184;13302:32;13299:58;;;13337:18;;:::i;:::-;13385:59;13434:2;13409:19;;-1:-1:-1;;13405:33:184;13440:2;13401:42;13385:59;:::i;:::-;13473:8;13464:7;13457:25;13529:7;13524:2;13513:8;13509:2;13505:17;13501:26;13498:39;13495:59;;;13550:1;13547;13540:12;13495:59;13604:8;13599:2;13595;13591:11;13586:2;13577:7;13573:16;13567:46;13666:1;13661:2;13650:8;13641:7;13637:22;13633:31;13626:42;13704:7;13699:2;13692:5;13688:14;13681:31;;;13737:5;13732:3;13725:18;;;13772:2;13767:3;13763:12;13756:19;;12590:2;12585:3;12581:12;12574:19;;12548:1237;;13820:127;13881:10;13876:3;13872:20;13869:1;13862:31;13912:4;13909:1;13902:15;13936:4;13933:1;13926:15;13952:301;14081:3;14119:6;14113:13;14165:6;14158:4;14150:6;14146:17;14141:3;14135:37;14227:1;14191:16;;14216:13;;;-1:-1:-1;14191:16:184;13952:301;-1:-1:-1;13952:301:184:o;14258:135::-;14297:3;14318:17;;;14315:43;;14338:18;;:::i;:::-;-1:-1:-1;14385:1:184;14374:13;;14258:135::o;15053:195::-;-1:-1:-1;;;;;15122:27:184;;;15151;;;15118:61;;15191:28;;15188:54;;;15222:18;;:::i;15253:191::-;-1:-1:-1;;;;;15321:26:184;;;15349;;;15317:59;;15388:27;;15385:53;;;15418:18;;:::i;15449:127::-;15510:10;15505:3;15501:20;15498:1;15491:31;15541:4;15538:1;15531:15;15565:4;15562:1;15555:15;15581:120;15621:1;15647;15637:35;;15652:18;;:::i;:::-;-1:-1:-1;15686:9:184;;15581:120::o;15706:332::-;15908:2;15890:21;;;15947:1;15927:18;;;15920:29;-1:-1:-1;;;15980:2:184;15965:18;;15958:39;16029:2;16014:18;;15706:332::o;16043:335::-;16245:2;16227:21;;;16284:2;16264:18;;;16257:30;-1:-1:-1;;;16318:2:184;16303:18;;16296:41;16369:2;16354:18;;16043:335::o;16383:338::-;16585:2;16567:21;;;16624:2;16604:18;;;16597:30;-1:-1:-1;;;16658:2:184;16643:18;;16636:44;16712:2;16697:18;;16383:338::o;16726:::-;16928:2;16910:21;;;16967:2;16947:18;;;16940:30;-1:-1:-1;;;17001:2:184;16986:18;;16979:44;17055:2;17040:18;;16726:338::o;17069:335::-;17271:2;17253:21;;;17310:2;17290:18;;;17283:30;-1:-1:-1;;;17344:2:184;17329:18;;17322:41;17395:2;17380:18;;17069:335::o;19232:198::-;-1:-1:-1;;;;;19332:27:184;;;19303;;;19299:61;;19372:29;;19369:55;;;19404:18;;:::i;20792:157::-;20822:1;20856:4;20853:1;20849:12;20880:3;20870:37;;20887:18;;:::i;:::-;20939:3;20932:4;20929:1;20925:12;20921:22;20916:27;;;20792:157;;;;:::o","linkReferences":{},"immutableReferences":{"94922":[{"start":547,"length":32},{"start":1763,"length":32},{"start":2166,"length":32},{"start":4578,"length":32}]}},"methodIdentifiers":{"ASSET()":"4800d97f","addBeneficiary(address)":"5926651d","deposit(address,uint256)":"47e7ef24","dropProposal(uint256)":"083b4246","execute(uint256)":"fe0d94c1","finalizeWithdraw(uint256)":"0928d152","getBallot(uint256,address)":"55ead34a","getConfiguration()":"6bd50cef","getProposal(uint256)":"c7f758a8","getProposalState(uint256)":"9080936f","getWithdrawal(uint256)":"8a4fb16a","governanceProposer()":"c3a50515","initiateWithdraw(address,uint256)":"c4bf0936","isAllBeneficiariesAllowed()":"3a00b7ee","isPermittedInGovernance(address)":"9efbc2df","openFloodgates()":"3d24e054","powerAt(address,uint256)":"3b8f880d","powerNow(address)":"e1d74644","proposalCount()":"da35c664","propose(address)":"01267951","proposeWithLock(address,address)":"30eb4bdd","totalPowerAt(uint256)":"fe7f0e8b","totalPowerNow()":"7f514e78","updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"edb884e9","updateGovernanceProposer(address)":"b907c0ea","vote(uint256,uint256,bool)":"6a18ff7a","withdrawalCount()":"71706cbe"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_governanceProposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"Timestamp\",\"name\":\"lockDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ProposeWithLockConfiguration\",\"name\":\"proposeConfig\",\"type\":\"tuple\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDuration\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"executionDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"gracePeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredYeaMargin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumVotes\",\"type\":\"uint256\"}],\"internalType\":\"struct Configuration\",\"name\":\"_configuration\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CheckpointUnorderedInsertion\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"Governance__CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CallerCannotBeSelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"governanceProposer\",\"type\":\"address\"}],\"name\":\"Governance__CallerNotGovernanceProposer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"self\",\"type\":\"address\"}],\"name\":\"Governance__CallerNotSelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CannotCallAsset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CannotWithdrawToAddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"Governance__CheckpointedUintLib__InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__CheckpointedUintLib__NotInPast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__InvalidMinimumVotes\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__LockAmountTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__LockAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__QuorumTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__QuorumTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ConfigurationLib__RequiredYeaMarginTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"Governance__ConfigurationLib__TimeTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"Governance__ConfigurationLib__TimeTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__DepositNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__GovernanceProposerCannotBeSelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"Governance__InsufficientPower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ProposalAlreadyDropped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ProposalCannotBeDropped\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"Governance__ProposalDoesNotExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ProposalNotActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__ProposalNotExecutable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__WithdrawalAlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Governance__WithdrawalNotInitiated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Timestamp\",\"name\":\"currentTime\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"unlocksAt\",\"type\":\"uint256\"}],\"name\":\"Governance__WithdrawalNotUnlockedYet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"BeneficiaryAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"Timestamp\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"ConfigurationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FloodGatesOpened\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governanceProposer\",\"type\":\"address\"}],\"name\":\"GovernanceProposerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalDropped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposal\",\"type\":\"address\"}],\"name\":\"Proposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"support\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"VoteCast\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"withdrawalId\",\"type\":\"uint256\"}],\"name\":\"WithdrawFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"withdrawalId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawInitiated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"addBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"dropProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_withdrawalId\",\"type\":\"uint256\"}],\"name\":\"finalizeWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getBallot\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"yea\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nay\",\"type\":\"uint256\"}],\"internalType\":\"struct Ballot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfiguration\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"Timestamp\",\"name\":\"lockDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ProposeWithLockConfiguration\",\"name\":\"proposeConfig\",\"type\":\"tuple\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDuration\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"executionDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"gracePeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredYeaMargin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumVotes\",\"type\":\"uint256\"}],\"internalType\":\"struct Configuration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"getProposal\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"Timestamp\",\"name\":\"votingDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDuration\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"executionDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"gracePeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredYeaMargin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumVotes\",\"type\":\"uint256\"}],\"internalType\":\"struct ProposalConfiguration\",\"name\":\"config\",\"type\":\"tuple\"},{\"internalType\":\"enum ProposalState\",\"name\":\"cachedState\",\"type\":\"uint8\"},{\"internalType\":\"contract IPayload\",\"name\":\"payload\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"creation\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"yea\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nay\",\"type\":\"uint256\"}],\"internalType\":\"struct Ballot\",\"name\":\"summedBallot\",\"type\":\"tuple\"}],\"internalType\":\"struct Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"}],\"name\":\"getProposalState\",\"outputs\":[{\"internalType\":\"enum ProposalState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_withdrawalId\",\"type\":\"uint256\"}],\"name\":\"getWithdrawal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"unlocksAt\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"claimed\",\"type\":\"bool\"}],\"internalType\":\"struct Withdrawal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governanceProposer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"initiateWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isAllBeneficiariesAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"isPermittedInGovernance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"openFloodgates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"Timestamp\",\"name\":\"_ts\",\"type\":\"uint256\"}],\"name\":\"powerAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"powerNow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPayload\",\"name\":\"_proposal\",\"type\":\"address\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPayload\",\"name\":\"_proposal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"proposeWithLock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Timestamp\",\"name\":\"_ts\",\"type\":\"uint256\"}],\"name\":\"totalPowerAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalPowerNow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"Timestamp\",\"name\":\"lockDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ProposeWithLockConfiguration\",\"name\":\"proposeConfig\",\"type\":\"tuple\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"votingDuration\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"executionDelay\",\"type\":\"uint256\"},{\"internalType\":\"Timestamp\",\"name\":\"gracePeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"quorum\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredYeaMargin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumVotes\",\"type\":\"uint256\"}],\"internalType\":\"struct Configuration\",\"name\":\"_configuration\",\"type\":\"tuple\"}],\"name\":\"updateConfiguration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governanceProposer\",\"type\":\"address\"}],\"name\":\"updateGovernanceProposer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_support\",\"type\":\"bool\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aztec Labs\",\"details\":\"KEY CONCEPTS: **Power**: Funds received via `deposit` are held by Governance and tracked 1:1 as \\\"power\\\" for the beneficiary. **Proposals**: Payloads containing actions to be executed by governance (excluding calls to the governance ASSET). **Deposit Control**: A whitelist system controlling who can hold power in governance. - Initially restricted to approved beneficiaries (expected to be only the GSE) - Can be opened to all addresses via `openFloodgates` (one-way valve) - The GSE aggregates stake from all rollup instances and votes on their behalf **Voting Power**: Based on checkpointed deposit history, calculated per proposal.PROPOSAL LIFECYCLE: (see `getProposalState` for details) The current state of a proposal may be retrieved via `getProposalState`. 1. **Pending** (creation \\u2192 creation + votingDelay) - Proposal exists but voting hasn't started - Power snapshot taken at end of this phase 2. **Active** (pendingThrough + 1 \\u2192 pendingThrough + votingDuration) - Voting open using power from snapshot - Multiple partial votes allowed per user 3. **Vote Evaluation** \\u2192 Rejected if criteria not met: - Minimum quorum (% of total power) - Required yea margin (yea votes minus nay votes) 4. **Queued** (activeThrough + 1 \\u2192 activeThrough + executionDelay) - Timelock period before execution 5. **Executable** (queuedThrough + 1 \\u2192 queuedThrough + gracePeriod) - Anyone can execute during this window 6. **Other States**: - Executed: Successfully completed - Expired: Execution window passed - Rejected: Failed voting criteria - Droppable: Proposer changed - Dropped: Proposal dropped via `dropProposal`USER FLOW: 1. **Deposit**: Transfer ASSET to governance for voting power - Only whitelisted beneficiaries can hold power - Power is checkpointed for historical lookups 2. **Vote**: Use power from proposal's snapshot timestamp - Support partial voting (multiple votes allowed, both yea and nay) - A user's total votes may not exceed their power snapshot for the proposal 3. **Withdraw**: Two-step process with delay - Initiate: Reduce power - Finalize: Transfer funds after delay expires - Standard delay: votingDelay/5 + votingDuration + executionDelayPROPOSAL CREATION: - **Standard**: `governanceProposer` calls `propose` - **Emergency**: Anyone with sufficient power calls `proposeWithLock` - Requires withdrawing `lockAmount` of power with a finalization delay of `lockDelay` - Proposal proposer becomes governance itself (cannot be dropped)CONFIGURATION: All timing parameters are controlled by the governance configuration: - votingDelay: Buffer before voting opens - votingDuration: Voting period length - executionDelay: Timelock after voting before the proposal may be executed - gracePeriod: Execution window - minimumVotes: Absolute minimum voting power in system - quorum: Minimum acceptable participation as a percentage of total power - requiredYeaMargin: Required difference between yea and nay votes as a percentage of the votes cast - lockAmount: The amount of power to withdraw when `proposeWithLock` is called - lockDelay: The delay before a withdrawal created by `proposeWithLock` is finalized\",\"errors\":{\"CheckpointUnorderedInsertion()\":[{\"details\":\"A value was attempted to be inserted on a past checkpoint.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"addBeneficiary(address)\":{\"details\":\"The beneficiary may hold power in the governance contract after this call. only callable by the governance contract itself.\",\"params\":{\"_beneficiary\":\"The address to add to the whitelist.\"}},\"constructor\":{\"details\":\"the initial _beneficiary is expected to be the GSE or address(0) for anyone\"},\"deposit(address,uint256)\":{\"details\":\"The beneficiary must be allowed to hold power in the governance contract, according to `depositControl`. Increments the checkpointed power of the specified beneficiary, and the total power of the governance contract. Note that anyone may deposit funds into the governance contract, and the only restriction is that the beneficiary must be allowed to hold power in the governance contract, according to `depositControl`. It is worth pointing out that someone could attempt to spam the deposit function, and increase the cost to vote as a result of creating many checkpoints. In reality though, as the checkpoints are using time as a key it would take ~36 years of continuous spamming to increase the cost to vote by ~66K gas with 12 second block times.\",\"params\":{\"_amount\":\"The amount of funds to deposit, which is converted to power 1:1.\",\"_beneficiary\":\"The beneficiary to increase the power of.\"}},\"dropProposal(uint256)\":{\"details\":\"The proposal must be `Droppable` to mark it permanently as `Dropped`. See `getProposalState` for more details.\",\"params\":{\"_proposalId\":\"The id of the proposal to mark as `Dropped`.\"}},\"execute(uint256)\":{\"details\":\"The proposal must be `Executable` to execute it. If it is, we mark the proposal as `Executed` and execute the actions, simply looping through and calling them. As far as the individual calls, there are 2 safety measures: - The call cannot target the ASSET which underlies the governance contract - The call must succeed\",\"params\":{\"_proposalId\":\"The id of the proposal to execute.\"}},\"finalizeWithdraw(uint256)\":{\"details\":\"The withdrawal must not have been claimed, and the delay specified on the withdrawal must have passed.\",\"params\":{\"_withdrawalId\":\"The id of the withdrawal to finalize.\"}},\"getBallot(uint256,address)\":{\"details\":\"Returns the uncompressed Ballot struct for external callers.\",\"params\":{\"_proposalId\":\"The id of the proposal.\",\"_user\":\"The address of the user.\"},\"returns\":{\"_0\":\"The user's ballot with yea and nay votes.\"}},\"getProposal(uint256)\":{\"details\":\"Will return default values (0) for non-existing proposals\",\"params\":{\"_proposalId\":\"The id of the proposal to get.\"},\"returns\":{\"_0\":\"The proposal.\"}},\"getProposalState(uint256)\":{\"details\":\"Determine the current state of a proposal based on timestamps, vote results, and governance configuration.NB: the state returned here is LOGICAL, and is the \\\"true state\\\" of the proposal: it need not match the state of the proposal in storage, which is effectively just a cache. Flow Logic: 1. Check if proposal exists (revert if not) 2. If the cached state of the proposal is \\\"stable\\\" (Executed/Dropped), return that state 3. Check if governance proposer changed (\\u2192 Droppable, unless proposed via lock) 4. Time-based state transitions: - currentTime \\u2264 pendingThrough() \\u2192 Pending - currentTime \\u2264 activeThrough() \\u2192 Active - Vote tabulation check \\u2192 Rejected if not accepted - currentTime \\u2264 queuedThrough() \\u2192 Queued - currentTime \\u2264 executableThrough() \\u2192 Executable - Otherwise \\u2192 ExpiredState Descriptions: - Pending: Proposal created but voting hasn't started yet - Active: Voting is currently open - Rejected: Voting closed but proposal didn't meet acceptance criteria - Queued: Proposal accepted and waiting for execution window - Executable: Proposal can be executed - Expired: Execution window has passed - Droppable: Proposer changed - Dropped: Proposal dropped by calling `dropProposal` - Executed: Proposal has been successfully executededge case: it is possible that a proposal be \\\"Droppable\\\" according to the logic here, but no one called `dropProposal`, and then be in a different state later. This can happen if, for whatever reason, the governance proposer stored by this contract changes from the one the proposal is made via, (which would cause this function to return `Droppable`), but then a separate proposal is executed which restores the original governance proposer. So, `Dropped` is permanent, but `Droppable` is not.\",\"params\":{\"_proposalId\":\"The ID of the proposal to check\"},\"returns\":{\"_0\":\"The current state of the proposal\"}},\"getWithdrawal(uint256)\":{\"details\":\"Will return default values (0) for non-existing withdrawals\",\"params\":{\"_withdrawalId\":\"The id of the withdrawal to get.\"},\"returns\":{\"_0\":\"The withdrawal.\"}},\"initiateWithdraw(address,uint256)\":{\"details\":\"the withdraw may be finalized by anyone after configuration.getWithdrawalDelay() has passed.\",\"params\":{\"_amount\":\"The amount of power to reduce, and thus funds to withdraw.\",\"_to\":\"The address that will receive the funds when the withdrawal is finalized.\"},\"returns\":{\"_0\":\"The id of the withdrawal, passed to `finalizeWithdraw`.\"}},\"isAllBeneficiariesAllowed()\":{\"returns\":{\"_0\":\"True if everyone is permitted to hold power in Governance.\"}},\"isPermittedInGovernance(address)\":{\"params\":{\"_beneficiary\":\"The address to check.\"},\"returns\":{\"_0\":\"True if the address is permitted to hold power in Governance.\"}},\"openFloodgates()\":{\"details\":\"This is a one-way valve. only callable by the governance contract itself.\"},\"powerAt(address,uint256)\":{\"params\":{\"_owner\":\"The address to get the power of.\",\"_ts\":\"The timestamp to get the power at.\"},\"returns\":{\"_0\":\"The power of the address at the given timestamp.\"}},\"powerNow(address)\":{\"params\":{\"_owner\":\"The address to get the power of.\"},\"returns\":{\"_0\":\"The power of the address at the current block timestamp.\"}},\"propose(address)\":{\"details\":\"the state of the proposal may be retrieved via `getProposalState`. Note that the `proposer` of the proposal is the *current* governanceProposer; if the governanceProposer no longer matches the one stored in the proposal, the state of the proposal will be `Droppable`.\",\"params\":{\"_proposal\":\"The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.\"},\"returns\":{\"_0\":\"The id of the proposal.\"}},\"proposeWithLock(address,address)\":{\"details\":\"proposals made in this way are identical to those made by the governanceProposer, with the exception that the \\\"proposer\\\" stored in the proposal is the address of the governance contract itself, which means it will not transition to a \\\"Droppable\\\" state if the governanceProposer changes.this is intended to only be used in an emergency, where the governanceProposer is compromised.We don't actually need to check available power here, since if the msg.sender does not have sufficient balance, the `_initiateWithdraw` would revert with an underflow.\",\"params\":{\"_proposal\":\"The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.\",\"_to\":\"The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)\"},\"returns\":{\"_0\":\"The id of the proposal\"}},\"totalPowerAt(uint256)\":{\"params\":{\"_ts\":\"The timestamp to get the power at.\"},\"returns\":{\"_0\":\"The total power at the given timestamp.\"}},\"totalPowerNow()\":{\"returns\":{\"_0\":\"The total power at the current block timestamp.\"}},\"updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"details\":\"all existing proposals will use the configuration they were created with.\"},\"updateGovernanceProposer(address)\":{\"details\":\"The governance proposer is the address that is allowed to use `propose`.only callable by the governance contract itself.causes all proposals proposed by the previous governance proposer to be `Droppable`.prevents the governance proposer from being set to the governance contract itself.\",\"params\":{\"_governanceProposer\":\"The new governance proposer.\"}},\"vote(uint256,uint256,bool)\":{\"details\":\"The proposal must be `Active` to vote on it. NOTE: The amount of power to vote is equal to the power of msg.sender at the time just before the proposal became active. The same caller (e.g. the GSE) may `vote` multiple times, voting different ways, so long as their total votes are less than or equal to their available power; each vote is tracked per proposal, per caller within the `ballots` mapping. We keep track of the total yea and nay votes as a `summedBallot` on the proposal in storage.\",\"params\":{\"_amount\":\"The amount of power to vote with, which must be less than the available power.\",\"_proposalId\":\"The id of the proposal to vote on.\",\"_support\":\"The support of the vote.\"}}},\"stateVariables\":{\"ballots\":{\"details\":\"The ballots that have been cast for each proposal. `CompressedBallot`s contain a compressed `yea` and `nay` count (uint128 each packed into uint256), which are the number of votes for and against the proposal. `ballots` is only updated during `vote`.\"},\"configuration\":{\"details\":\"The configuration of the governance contract. `configuration` is set in the constructor, and is only updated during `updateConfiguration`, which must be done via a proposal.\"},\"depositControl\":{\"details\":\"The whitelist of beneficiaries that are allowed to hold power via `deposit`, and the flag to allow all beneficiaries to hold power.\"},\"governanceProposer\":{\"details\":\"The address that is allowed to `propose` new proposals. This address can only be updated by the governance itself through a proposal.\"},\"proposalCount\":{\"details\":\"The count of proposals that have been made. `proposalCount` is only updated during `_propose`.\"},\"proposals\":{\"details\":\"The proposals that have been made. The proposal ID is the current count of proposals (see `proposalCount`). New proposals are created by calling `_propose`, via `propose` or `proposeWithLock`. The storage of a proposal may be modified by calling `vote`, `execute`, or `dropProposal`.\"},\"total\":{\"details\":\"The total power of the governance contract. `total` is only updated during `deposit`, `initiateWithdraw`, and `proposeWithLock`.\"},\"users\":{\"details\":\"Checkpointed deposit amounts for an address. `users` is only updated during `deposit`, `initiateWithdraw`, and `proposeWithLock`.\"},\"withdrawalCount\":{\"details\":\"The count of withdrawals that have been initiated. `withdrawalCount` is only updated during `initiateWithdraw` and `proposeWithLock`.\"},\"withdrawals\":{\"details\":\"Withdrawals that have been initiated. `withdrawals` is only updated during `initiateWithdraw`, `proposeWithLock`, and `finalizeWithdraw`.\"}},\"title\":\"Governance\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addBeneficiary(address)\":{\"notice\":\"Add a beneficiary to the whitelist.\"},\"deposit(address,uint256)\":{\"notice\":\"Deposit funds into the governance contract, transferring ASSET from msg.sender to the governance contract, increasing the power 1:1 of the beneficiary within the governance contract.\"},\"dropProposal(uint256)\":{\"notice\":\"Update a proposal to be `Dropped`.\"},\"execute(uint256)\":{\"notice\":\"Execute a proposal.\"},\"finalizeWithdraw(uint256)\":{\"notice\":\"Finalize a withdrawal of funds from the governance contract, transferring ASSET from the governance contract to the recipient specified in the withdrawal.\"},\"getBallot(uint256,address)\":{\"notice\":\"Get a user's ballot for a specific proposal.\"},\"getProposal(uint256)\":{\"notice\":\"Get a proposal by its id.\"},\"getProposalState(uint256)\":{\"notice\":\"Get the state of a proposal in the governance system\"},\"getWithdrawal(uint256)\":{\"notice\":\"Get a withdrawal by its id.\"},\"initiateWithdraw(address,uint256)\":{\"notice\":\"Initiate a withdrawal of funds from the governance contract, decreasing the power of the beneficiary within the governance contract.\"},\"isAllBeneficiariesAllowed()\":{\"notice\":\"Check if everyone is permitted to hold power in Governance.\"},\"isPermittedInGovernance(address)\":{\"notice\":\"Check if an address is permitted to hold power in Governance.\"},\"openFloodgates()\":{\"notice\":\"Allow all addresses to hold power in the governance contract.\"},\"powerAt(address,uint256)\":{\"notice\":\"Get the power of an address at a given timestamp.\"},\"powerNow(address)\":{\"notice\":\"Get the power of an address at the current block timestamp. Note that `powerNow` with the current block timestamp is NOT STABLE. For example, imagine a transaction that performs the following: 1. deposit 2. powerNow 3. deposit 4. powerNow The powerNow at 4 will be different from the powerNow at 2.\"},\"propose(address)\":{\"notice\":\"Propose a new proposal as the governanceProposer\"},\"proposeWithLock(address,address)\":{\"notice\":\"Propose a new proposal by withdrawing an existing amount of power from Governance with a longer delay.\"},\"totalPowerAt(uint256)\":{\"notice\":\"Get the total power in Governance at a given timestamp.\"},\"totalPowerNow()\":{\"notice\":\"Get the total power in Governance at the current block timestamp. Note that `powerNow` with the current block timestamp is NOT STABLE.\"},\"updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Update the governance configuration. only callable by the governance contract itself.\"},\"updateGovernanceProposer(address)\":{\"notice\":\"Update the governance proposer.\"},\"vote(uint256,uint256,bool)\":{\"notice\":\"Vote on a proposal.\"}},\"notice\":\"A contract that implements governance logic for proposal creation, voting, and execution. Uses a snapshot-based voting model with partial vote support to enable aggregated voting. Partial vote support: Allows voters to split their voting power across multiple proposals or options, rather than using all their votes on a single choice. Aggregated voting: The contract collects and sums votes from multiple sources or over time, combining them to determine the final outcome of each proposal.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/governance/Governance.sol\":\"Governance\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@aztec-blob-lib/=src/mock/libraries/\",\":@aztec/=src/\",\":@generated/=generated/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@oz/=lib/openzeppelin-contracts/contracts/\",\":@test/=test/\",\":@zkpassport-test/=lib/circuits/src/solidity/test/\",\":@zkpassport/=lib/circuits/src/solidity/src/\",\":circuits/=lib/circuits/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca\",\"dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167\",\"dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"]},\"src/governance/Governance.sol\":{\"keccak256\":\"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf\",\"dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw\"]},\"src/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff\",\"dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa\"]},\"src/governance/interfaces/IPayload.sol\":{\"keccak256\":\"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c\",\"dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin\"]},\"src/governance/libraries/CheckpointedUintLib.sol\":{\"keccak256\":\"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1\",\"dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q\"]},\"src/governance/libraries/ConfigurationLib.sol\":{\"keccak256\":\"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a\",\"dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy\"]},\"src/governance/libraries/Errors.sol\":{\"keccak256\":\"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa\",\"dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv\"]},\"src/governance/libraries/ProposalLib.sol\":{\"keccak256\":\"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192\",\"dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT\"]},\"src/governance/libraries/compressed-data/Ballot.sol\":{\"keccak256\":\"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012\",\"dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM\"]},\"src/governance/libraries/compressed-data/Configuration.sol\":{\"keccak256\":\"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482\",\"dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv\"]},\"src/governance/libraries/compressed-data/Proposal.sol\":{\"keccak256\":\"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6\",\"dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN\"]},\"src/shared/libraries/CompressedTimeMath.sol\":{\"keccak256\":\"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3\",\"dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB\"]},\"src/shared/libraries/TimeMath.sol\":{\"keccak256\":\"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914\",\"dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"},{"internalType":"address","name":"_governanceProposer","type":"address"},{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"struct Configuration","name":"_configuration","type":"tuple","components":[{"internalType":"struct ProposeWithLockConfiguration","name":"proposeConfig","type":"tuple","components":[{"internalType":"Timestamp","name":"lockDelay","type":"uint256"},{"internalType":"uint256","name":"lockAmount","type":"uint256"}]},{"internalType":"Timestamp","name":"votingDelay","type":"uint256"},{"internalType":"Timestamp","name":"votingDuration","type":"uint256"},{"internalType":"Timestamp","name":"executionDelay","type":"uint256"},{"internalType":"Timestamp","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"requiredYeaMargin","type":"uint256"},{"internalType":"uint256","name":"minimumVotes","type":"uint256"}]}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"CheckpointUnorderedInsertion"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"Governance__CallFailed"},{"inputs":[],"type":"error","name":"Governance__CallerCannotBeSelf"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"governanceProposer","type":"address"}],"type":"error","name":"Governance__CallerNotGovernanceProposer"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"self","type":"address"}],"type":"error","name":"Governance__CallerNotSelf"},{"inputs":[],"type":"error","name":"Governance__CannotCallAsset"},{"inputs":[],"type":"error","name":"Governance__CannotWithdrawToAddressZero"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"Governance__CheckpointedUintLib__InsufficientValue"},{"inputs":[],"type":"error","name":"Governance__CheckpointedUintLib__NotInPast"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__InvalidMinimumVotes"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__LockAmountTooBig"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__LockAmountTooSmall"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__QuorumTooBig"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__QuorumTooSmall"},{"inputs":[],"type":"error","name":"Governance__ConfigurationLib__RequiredYeaMarginTooBig"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"type":"error","name":"Governance__ConfigurationLib__TimeTooBig"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"type":"error","name":"Governance__ConfigurationLib__TimeTooSmall"},{"inputs":[],"type":"error","name":"Governance__DepositNotAllowed"},{"inputs":[],"type":"error","name":"Governance__GovernanceProposerCannotBeSelf"},{"inputs":[{"internalType":"address","name":"voter","type":"address"},{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"Governance__InsufficientPower"},{"inputs":[],"type":"error","name":"Governance__ProposalAlreadyDropped"},{"inputs":[],"type":"error","name":"Governance__ProposalCannotBeDropped"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"type":"error","name":"Governance__ProposalDoesNotExists"},{"inputs":[],"type":"error","name":"Governance__ProposalNotActive"},{"inputs":[],"type":"error","name":"Governance__ProposalNotExecutable"},{"inputs":[],"type":"error","name":"Governance__WithdrawalAlreadyClaimed"},{"inputs":[],"type":"error","name":"Governance__WithdrawalNotInitiated"},{"inputs":[{"internalType":"Timestamp","name":"currentTime","type":"uint256"},{"internalType":"Timestamp","name":"unlocksAt","type":"uint256"}],"type":"error","name":"Governance__WithdrawalNotUnlockedYet"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address","indexed":false}],"type":"event","name":"BeneficiaryAdded","anonymous":false},{"inputs":[{"internalType":"Timestamp","name":"time","type":"uint256","indexed":true}],"type":"event","name":"ConfigurationUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"depositor","type":"address","indexed":true},{"internalType":"address","name":"onBehalfOf","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[],"type":"event","name":"FloodGatesOpened","anonymous":false},{"inputs":[{"internalType":"address","name":"governanceProposer","type":"address","indexed":true}],"type":"event","name":"GovernanceProposerUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256","indexed":true}],"type":"event","name":"ProposalDropped","anonymous":false},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256","indexed":true}],"type":"event","name":"ProposalExecuted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256","indexed":true},{"internalType":"address","name":"proposal","type":"address","indexed":true}],"type":"event","name":"Proposed","anonymous":false},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256","indexed":true},{"internalType":"address","name":"voter","type":"address","indexed":true},{"internalType":"bool","name":"support","type":"bool","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"VoteCast","anonymous":false},{"inputs":[{"internalType":"uint256","name":"withdrawalId","type":"uint256","indexed":true}],"type":"event","name":"WithdrawFinalized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"withdrawalId","type":"uint256","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"WithdrawInitiated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addBeneficiary"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"dropProposal"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"execute"},{"inputs":[{"internalType":"uint256","name":"_withdrawalId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"finalizeWithdraw"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"view","type":"function","name":"getBallot","outputs":[{"internalType":"struct Ballot","name":"","type":"tuple","components":[{"internalType":"uint256","name":"yea","type":"uint256"},{"internalType":"uint256","name":"nay","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getConfiguration","outputs":[{"internalType":"struct Configuration","name":"","type":"tuple","components":[{"internalType":"struct ProposeWithLockConfiguration","name":"proposeConfig","type":"tuple","components":[{"internalType":"Timestamp","name":"lockDelay","type":"uint256"},{"internalType":"uint256","name":"lockAmount","type":"uint256"}]},{"internalType":"Timestamp","name":"votingDelay","type":"uint256"},{"internalType":"Timestamp","name":"votingDuration","type":"uint256"},{"internalType":"Timestamp","name":"executionDelay","type":"uint256"},{"internalType":"Timestamp","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"requiredYeaMargin","type":"uint256"},{"internalType":"uint256","name":"minimumVotes","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getProposal","outputs":[{"internalType":"struct Proposal","name":"","type":"tuple","components":[{"internalType":"struct ProposalConfiguration","name":"config","type":"tuple","components":[{"internalType":"Timestamp","name":"votingDelay","type":"uint256"},{"internalType":"Timestamp","name":"votingDuration","type":"uint256"},{"internalType":"Timestamp","name":"executionDelay","type":"uint256"},{"internalType":"Timestamp","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"requiredYeaMargin","type":"uint256"},{"internalType":"uint256","name":"minimumVotes","type":"uint256"}]},{"internalType":"enum ProposalState","name":"cachedState","type":"uint8"},{"internalType":"contract IPayload","name":"payload","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"Timestamp","name":"creation","type":"uint256"},{"internalType":"struct Ballot","name":"summedBallot","type":"tuple","components":[{"internalType":"uint256","name":"yea","type":"uint256"},{"internalType":"uint256","name":"nay","type":"uint256"}]}]}]},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getProposalState","outputs":[{"internalType":"enum ProposalState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint256","name":"_withdrawalId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getWithdrawal","outputs":[{"internalType":"struct Withdrawal","name":"","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"Timestamp","name":"unlocksAt","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"claimed","type":"bool"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"governanceProposer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initiateWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"isAllBeneficiariesAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedInGovernance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"openFloodgates"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"Timestamp","name":"_ts","type":"uint256"}],"stateMutability":"view","type":"function","name":"powerAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"view","type":"function","name":"powerNow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IPayload","name":"_proposal","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"propose","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IPayload","name":"_proposal","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"proposeWithLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"Timestamp","name":"_ts","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalPowerAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalPowerNow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Configuration","name":"_configuration","type":"tuple","components":[{"internalType":"struct ProposeWithLockConfiguration","name":"proposeConfig","type":"tuple","components":[{"internalType":"Timestamp","name":"lockDelay","type":"uint256"},{"internalType":"uint256","name":"lockAmount","type":"uint256"}]},{"internalType":"Timestamp","name":"votingDelay","type":"uint256"},{"internalType":"Timestamp","name":"votingDuration","type":"uint256"},{"internalType":"Timestamp","name":"executionDelay","type":"uint256"},{"internalType":"Timestamp","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"quorum","type":"uint256"},{"internalType":"uint256","name":"requiredYeaMargin","type":"uint256"},{"internalType":"uint256","name":"minimumVotes","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updateConfiguration"},{"inputs":[{"internalType":"address","name":"_governanceProposer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateGovernanceProposer"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"vote"},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"addBeneficiary(address)":{"details":"The beneficiary may hold power in the governance contract after this call. only callable by the governance contract itself.","params":{"_beneficiary":"The address to add to the whitelist."}},"constructor":{"details":"the initial _beneficiary is expected to be the GSE or address(0) for anyone"},"deposit(address,uint256)":{"details":"The beneficiary must be allowed to hold power in the governance contract, according to `depositControl`. Increments the checkpointed power of the specified beneficiary, and the total power of the governance contract. Note that anyone may deposit funds into the governance contract, and the only restriction is that the beneficiary must be allowed to hold power in the governance contract, according to `depositControl`. It is worth pointing out that someone could attempt to spam the deposit function, and increase the cost to vote as a result of creating many checkpoints. In reality though, as the checkpoints are using time as a key it would take ~36 years of continuous spamming to increase the cost to vote by ~66K gas with 12 second block times.","params":{"_amount":"The amount of funds to deposit, which is converted to power 1:1.","_beneficiary":"The beneficiary to increase the power of."}},"dropProposal(uint256)":{"details":"The proposal must be `Droppable` to mark it permanently as `Dropped`. See `getProposalState` for more details.","params":{"_proposalId":"The id of the proposal to mark as `Dropped`."}},"execute(uint256)":{"details":"The proposal must be `Executable` to execute it. If it is, we mark the proposal as `Executed` and execute the actions, simply looping through and calling them. As far as the individual calls, there are 2 safety measures: - The call cannot target the ASSET which underlies the governance contract - The call must succeed","params":{"_proposalId":"The id of the proposal to execute."}},"finalizeWithdraw(uint256)":{"details":"The withdrawal must not have been claimed, and the delay specified on the withdrawal must have passed.","params":{"_withdrawalId":"The id of the withdrawal to finalize."}},"getBallot(uint256,address)":{"details":"Returns the uncompressed Ballot struct for external callers.","params":{"_proposalId":"The id of the proposal.","_user":"The address of the user."},"returns":{"_0":"The user's ballot with yea and nay votes."}},"getProposal(uint256)":{"details":"Will return default values (0) for non-existing proposals","params":{"_proposalId":"The id of the proposal to get."},"returns":{"_0":"The proposal."}},"getProposalState(uint256)":{"details":"Determine the current state of a proposal based on timestamps, vote results, and governance configuration.NB: the state returned here is LOGICAL, and is the \"true state\" of the proposal: it need not match the state of the proposal in storage, which is effectively just a cache. Flow Logic: 1. Check if proposal exists (revert if not) 2. If the cached state of the proposal is \"stable\" (Executed/Dropped), return that state 3. Check if governance proposer changed (→ Droppable, unless proposed via lock) 4. Time-based state transitions: - currentTime ≤ pendingThrough() → Pending - currentTime ≤ activeThrough() → Active - Vote tabulation check → Rejected if not accepted - currentTime ≤ queuedThrough() → Queued - currentTime ≤ executableThrough() → Executable - Otherwise → ExpiredState Descriptions: - Pending: Proposal created but voting hasn't started yet - Active: Voting is currently open - Rejected: Voting closed but proposal didn't meet acceptance criteria - Queued: Proposal accepted and waiting for execution window - Executable: Proposal can be executed - Expired: Execution window has passed - Droppable: Proposer changed - Dropped: Proposal dropped by calling `dropProposal` - Executed: Proposal has been successfully executededge case: it is possible that a proposal be \"Droppable\" according to the logic here, but no one called `dropProposal`, and then be in a different state later. This can happen if, for whatever reason, the governance proposer stored by this contract changes from the one the proposal is made via, (which would cause this function to return `Droppable`), but then a separate proposal is executed which restores the original governance proposer. So, `Dropped` is permanent, but `Droppable` is not.","params":{"_proposalId":"The ID of the proposal to check"},"returns":{"_0":"The current state of the proposal"}},"getWithdrawal(uint256)":{"details":"Will return default values (0) for non-existing withdrawals","params":{"_withdrawalId":"The id of the withdrawal to get."},"returns":{"_0":"The withdrawal."}},"initiateWithdraw(address,uint256)":{"details":"the withdraw may be finalized by anyone after configuration.getWithdrawalDelay() has passed.","params":{"_amount":"The amount of power to reduce, and thus funds to withdraw.","_to":"The address that will receive the funds when the withdrawal is finalized."},"returns":{"_0":"The id of the withdrawal, passed to `finalizeWithdraw`."}},"isAllBeneficiariesAllowed()":{"returns":{"_0":"True if everyone is permitted to hold power in Governance."}},"isPermittedInGovernance(address)":{"params":{"_beneficiary":"The address to check."},"returns":{"_0":"True if the address is permitted to hold power in Governance."}},"openFloodgates()":{"details":"This is a one-way valve. only callable by the governance contract itself."},"powerAt(address,uint256)":{"params":{"_owner":"The address to get the power of.","_ts":"The timestamp to get the power at."},"returns":{"_0":"The power of the address at the given timestamp."}},"powerNow(address)":{"params":{"_owner":"The address to get the power of."},"returns":{"_0":"The power of the address at the current block timestamp."}},"propose(address)":{"details":"the state of the proposal may be retrieved via `getProposalState`. Note that the `proposer` of the proposal is the *current* governanceProposer; if the governanceProposer no longer matches the one stored in the proposal, the state of the proposal will be `Droppable`.","params":{"_proposal":"The IPayload address, which is a contract that contains the proposed actions to be executed by the governance."},"returns":{"_0":"The id of the proposal."}},"proposeWithLock(address,address)":{"details":"proposals made in this way are identical to those made by the governanceProposer, with the exception that the \"proposer\" stored in the proposal is the address of the governance contract itself, which means it will not transition to a \"Droppable\" state if the governanceProposer changes.this is intended to only be used in an emergency, where the governanceProposer is compromised.We don't actually need to check available power here, since if the msg.sender does not have sufficient balance, the `_initiateWithdraw` would revert with an underflow.","params":{"_proposal":"The IPayload address, which is a contract that contains the proposed actions to be executed by the governance.","_to":"The address that will receive the withdrawn funds when the withdrawal is finalized (see `finalizeWithdraw`)"},"returns":{"_0":"The id of the proposal"}},"totalPowerAt(uint256)":{"params":{"_ts":"The timestamp to get the power at."},"returns":{"_0":"The total power at the given timestamp."}},"totalPowerNow()":{"returns":{"_0":"The total power at the current block timestamp."}},"updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"details":"all existing proposals will use the configuration they were created with."},"updateGovernanceProposer(address)":{"details":"The governance proposer is the address that is allowed to use `propose`.only callable by the governance contract itself.causes all proposals proposed by the previous governance proposer to be `Droppable`.prevents the governance proposer from being set to the governance contract itself.","params":{"_governanceProposer":"The new governance proposer."}},"vote(uint256,uint256,bool)":{"details":"The proposal must be `Active` to vote on it. NOTE: The amount of power to vote is equal to the power of msg.sender at the time just before the proposal became active. The same caller (e.g. the GSE) may `vote` multiple times, voting different ways, so long as their total votes are less than or equal to their available power; each vote is tracked per proposal, per caller within the `ballots` mapping. We keep track of the total yea and nay votes as a `summedBallot` on the proposal in storage.","params":{"_amount":"The amount of power to vote with, which must be less than the available power.","_proposalId":"The id of the proposal to vote on.","_support":"The support of the vote."}}},"version":1},"userdoc":{"kind":"user","methods":{"addBeneficiary(address)":{"notice":"Add a beneficiary to the whitelist."},"deposit(address,uint256)":{"notice":"Deposit funds into the governance contract, transferring ASSET from msg.sender to the governance contract, increasing the power 1:1 of the beneficiary within the governance contract."},"dropProposal(uint256)":{"notice":"Update a proposal to be `Dropped`."},"execute(uint256)":{"notice":"Execute a proposal."},"finalizeWithdraw(uint256)":{"notice":"Finalize a withdrawal of funds from the governance contract, transferring ASSET from the governance contract to the recipient specified in the withdrawal."},"getBallot(uint256,address)":{"notice":"Get a user's ballot for a specific proposal."},"getProposal(uint256)":{"notice":"Get a proposal by its id."},"getProposalState(uint256)":{"notice":"Get the state of a proposal in the governance system"},"getWithdrawal(uint256)":{"notice":"Get a withdrawal by its id."},"initiateWithdraw(address,uint256)":{"notice":"Initiate a withdrawal of funds from the governance contract, decreasing the power of the beneficiary within the governance contract."},"isAllBeneficiariesAllowed()":{"notice":"Check if everyone is permitted to hold power in Governance."},"isPermittedInGovernance(address)":{"notice":"Check if an address is permitted to hold power in Governance."},"openFloodgates()":{"notice":"Allow all addresses to hold power in the governance contract."},"powerAt(address,uint256)":{"notice":"Get the power of an address at a given timestamp."},"powerNow(address)":{"notice":"Get the power of an address at the current block timestamp. Note that `powerNow` with the current block timestamp is NOT STABLE. For example, imagine a transaction that performs the following: 1. deposit 2. powerNow 3. deposit 4. powerNow The powerNow at 4 will be different from the powerNow at 2."},"propose(address)":{"notice":"Propose a new proposal as the governanceProposer"},"proposeWithLock(address,address)":{"notice":"Propose a new proposal by withdrawing an existing amount of power from Governance with a longer delay."},"totalPowerAt(uint256)":{"notice":"Get the total power in Governance at a given timestamp."},"totalPowerNow()":{"notice":"Get the total power in Governance at the current block timestamp. Note that `powerNow` with the current block timestamp is NOT STABLE."},"updateConfiguration(((uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"notice":"Update the governance configuration. only callable by the governance contract itself."},"updateGovernanceProposer(address)":{"notice":"Update the governance proposer."},"vote(uint256,uint256,bool)":{"notice":"Vote on a proposal."}},"version":1}},"settings":{"remappings":["@aztec-blob-lib/=src/mock/libraries/","@aztec/=src/","@generated/=generated/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@oz/=lib/openzeppelin-contracts/contracts/","@test/=test/","@zkpassport-test/=lib/circuits/src/solidity/test/","@zkpassport/=lib/circuits/src/solidity/src/","circuits/=lib/circuits/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/governance/Governance.sol":"Governance"},"evmVersion":"prague","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4251fed1ac036ad28996501522371736318527d7bf2bf7d66fbd2769d6c4771b","urls":["bzz-raw://b2df261bd4de240f54c5829faeaf0ffc919a01f1497cf7ffd8a9a544bdec8fca","dweb:/ipfs/Qmb9ndUuv9RZPKJXZGzjVuhmNuoizxuGRn4QMBmdmLcxS3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2c33f654cefbbe80a9b436b5792cfe8bda2e87f139f110073c99762558db252f","urls":["bzz-raw://dc7ebd80046a52f28978cf46a24ff3e4c8568264ab6bb138038951c75d576167","dweb:/ipfs/QmQQjXVr4CbDR3DXd8GHEqn3JSJYTnbBHMJp9tvc29yXrc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol":{"keccak256":"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f","urls":["bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44","dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp"],"license":"MIT"},"src/governance/Governance.sol":{"keccak256":"0x07770c3d80369adae51be8e361f63a2aa5ec489b354b10c8590be1e294dfe2e5","urls":["bzz-raw://7219becf3467ea8368dba0bd093ba932b165cf3f214e7286f652e2730bf42eaf","dweb:/ipfs/QmTSCDhSQBTKhzGUk12phxhqohSba6yopYMzF5T5XPFUWw"],"license":"Apache-2.0"},"src/governance/interfaces/IGovernance.sol":{"keccak256":"0xe420d305fbe7c35f4620cd1e0f05f9f4c5a91532621d21a64ea553a3d9a3c005","urls":["bzz-raw://1900ac41f945aa692d5228f134ae63840081d284bf89fdd2a06b45424fe359ff","dweb:/ipfs/QmePFZ1xv5qfftJVDLc98XUVFsrpuKAbKZiro7MoMDTpoa"],"license":"Apache-2.0"},"src/governance/interfaces/IPayload.sol":{"keccak256":"0x5844ea725ce56ac8adeb20b2d37aa431ca087f68a65a7ca91f981be7458737c3","urls":["bzz-raw://5ea670db51b2ccfac05a684b95458ecc015c9d12a6567c3f73d473386533f58c","dweb:/ipfs/QmRUB8mckkGQ4nNsErRhnKMsD9SSkokRSpnr5XZC9dZdin"],"license":"Apache-2.0"},"src/governance/libraries/CheckpointedUintLib.sol":{"keccak256":"0xcd73cf7a62e4ac5cc79f7f8df8b35d5c5e4df5b8a3478bcbc2b29c9aa89ea4b4","urls":["bzz-raw://f56f37060d39d3c9276f23c96be7f6b1ea44676312dbaa1ab16ab3bff6acebf1","dweb:/ipfs/QmPDUEEgdbpTTs9r3fvdMYJo9akCRsWcJXyarBhQgcKb5q"],"license":"Apache-2.0"},"src/governance/libraries/ConfigurationLib.sol":{"keccak256":"0x7cb65bdbd8d077f3cfc01b065fb3a57628db36cd46f68885c74b9131198c2149","urls":["bzz-raw://e37bde50f5f739f479feb95fbe81ed24ee47f841b99f066ecf6782e758d1978a","dweb:/ipfs/QmebPE5REUpYRB8dikUebcGtyk9uy44G9mbchKJtHxJAgy"],"license":"Apache-2.0"},"src/governance/libraries/Errors.sol":{"keccak256":"0x8861ea7508138c83e89f186ce17accb42a6eee7d1d2e52841975d4ba676daae4","urls":["bzz-raw://b0d5b01c2b0a20c3c70a7ab2b8405d083a063bf5758beb87a4d488bda76078fa","dweb:/ipfs/QmfGH6CTCPA6nVA6KidcTSvaJ6MQZkv6KiuDVBTARGBTRv"],"license":"Apache-2.0"},"src/governance/libraries/ProposalLib.sol":{"keccak256":"0x616ffbb24c4454ca9e223e85ff01e8dca139723d5cd312d5d6f6111d79782a90","urls":["bzz-raw://192f9be3355a7a94d19ae4e5b397e5db19dde64ccc671e149da06dfaa2577192","dweb:/ipfs/QmTDcm7XEFLe7o5cXUmuu5wQDyprU78AVMymiWvrmP4tHT"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Ballot.sol":{"keccak256":"0xca07dc8cf36ac2beae7674804af144b34b3c5848153351c17d996e9b3293cd5d","urls":["bzz-raw://6911cc49f1d6977c12f652063c14891697c1ffe49fdf36903c32a8ad73cbd012","dweb:/ipfs/QmQBEZARCAAj1ZLcswkH6FwP1RP8uuNjYTHqthmE9Z5RnM"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Configuration.sol":{"keccak256":"0x40744f275af22d33c38fd9c6a7b822292c9c87b17ac2c78abbef4eb8356fd9f9","urls":["bzz-raw://73c685be7e934516207827a59cbbeb7fc1164e7659dd3ec857a91cfea765b482","dweb:/ipfs/QmQfudRpSSQnG9u4XV8iA2UAyDzQPFqWzpZy5NZbaD6htv"],"license":"Apache-2.0"},"src/governance/libraries/compressed-data/Proposal.sol":{"keccak256":"0x72cf619a21c8e95875c63d4361cbe1a815d9d67f36f3fe32b6c9ca4d9ab0d33a","urls":["bzz-raw://d80f47beb3f91da3cc68264c86fc8fb8f0e4abaf9d92243ab3206407fceed5c6","dweb:/ipfs/QmYyrBTDMfkTBu6EcKcSMR7JyfphZ5xH1VCQ8EHMQUvsoN"],"license":"Apache-2.0"},"src/shared/libraries/CompressedTimeMath.sol":{"keccak256":"0x361023cf30593e7e27417c91af3702e75235fcab251e4ad5ac2e47306a730ec1","urls":["bzz-raw://9b192242472b3126c97a4a4e4fa792809a6bf20b548a57e677f5260c0dbf3ad3","dweb:/ipfs/QmfK4WAucepcqzMLu11rs68HJazwfegVsgK5tTco82SooB"],"license":"Apache-2.0"},"src/shared/libraries/TimeMath.sol":{"keccak256":"0x8da20dc8b4ce296b7c11f117a3381bfe5cd611a3512a74a500e2e54e0353417f","urls":["bzz-raw://18c74be98a4e31e8a16356e573514f639a8fc43928e741f6ead81dd755e9a914","dweb:/ipfs/QmPDEdYYEj3DhXjrCDPuudJbhsBaNj1sK6hH94Z86168Q3"],"license":"Apache-2.0"}},"version":1},"id":132}