@venusprotocol/governance-contracts 1.0.1-dev.1 → 1.0.1-dev.3

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 (57) hide show
  1. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +1 -1
  2. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +1 -1
  3. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  4. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  5. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +1 -1
  6. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +1 -1
  7. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +1 -1
  8. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +1 -1
  9. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  10. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  11. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  12. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  13. package/artifacts/build-info/0e028ff5062f0f59a7ffef92b702c074.json +1 -0
  14. package/artifacts/build-info/56323f6708e82b6f7b159248c3c1268a.json +1 -0
  15. package/artifacts/build-info/bb792d434e41d4003eeb48354b3a6c5c.json +1 -0
  16. package/artifacts/build-info/e5638231ea42ec29d0230b1b013f1a57.json +1 -0
  17. package/artifacts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +1 -1
  18. package/artifacts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +2 -2
  19. package/artifacts/contracts/Governance/AccessControlledV5.sol/AccessControlledV5.dbg.json +1 -1
  20. package/artifacts/contracts/Governance/AccessControlledV5.sol/AccessControlledV5.json +2 -2
  21. package/artifacts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +1 -1
  22. package/artifacts/contracts/Governance/GovernorBravoDelegate.sol/GovernorBravoDelegate.dbg.json +1 -1
  23. package/artifacts/contracts/Governance/GovernorBravoDelegate.sol/GovernorBravoDelegate.json +2 -2
  24. package/artifacts/contracts/Governance/GovernorBravoDelegator.sol/GovernorBravoDelegator.dbg.json +1 -1
  25. package/artifacts/contracts/Governance/GovernorBravoDelegator.sol/GovernorBravoDelegator.json +2 -2
  26. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorAlphaInterface.dbg.json +1 -1
  27. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1.dbg.json +1 -1
  28. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1.json +2 -2
  29. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV2.dbg.json +1 -1
  30. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV2.json +2 -2
  31. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage.dbg.json +1 -1
  32. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage.json +2 -2
  33. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents.dbg.json +1 -1
  34. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents.json +2 -2
  35. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/TimelockInterface.dbg.json +1 -1
  36. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/XvsVaultInterface.dbg.json +1 -1
  37. package/artifacts/contracts/Governance/IAccessControlManagerV5.sol/IAccessControlManagerV5.dbg.json +1 -1
  38. package/artifacts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +1 -1
  39. package/artifacts/contracts/Governance/Timelock.sol/Timelock.dbg.json +1 -1
  40. package/artifacts/contracts/Governance/Timelock.sol/Timelock.json +2 -2
  41. package/artifacts/contracts/Utils/SafeMath.sol/SafeMath.dbg.json +1 -1
  42. package/artifacts/contracts/test/MockAccessTest.sol/MockAccessTest.dbg.json +1 -1
  43. package/artifacts/contracts/test/MockAccessTest.sol/MockAccessTest.json +2 -2
  44. package/contracts/Governance/AccessControlManager.sol +44 -5
  45. package/contracts/Governance/AccessControlledV5.sol +4 -5
  46. package/contracts/Governance/AccessControlledV8.sol +4 -6
  47. package/contracts/Governance/GovernorBravoDelegate.sol +67 -0
  48. package/contracts/Governance/GovernorBravoDelegator.sol +5 -0
  49. package/contracts/Governance/GovernorBravoInterfaces.sol +23 -2
  50. package/contracts/Governance/IAccessControlManagerV5.sol +5 -0
  51. package/contracts/Governance/IAccessControlManagerV8.sol +5 -0
  52. package/contracts/Governance/Timelock.sol +63 -1
  53. package/package.json +1 -1
  54. package/artifacts/build-info/0ed8a45a04a58741f8391cb7a77f7ff9.json +0 -1
  55. package/artifacts/build-info/1659b7cff20ee8b7949bfbefa681db8b.json +0 -1
  56. package/artifacts/build-info/21eeeec59918770851ef762f6f414247.json +0 -1
  57. package/artifacts/build-info/fa9891803c56b8a530ff515ffc45dc03.json +0 -1
@@ -328,8 +328,8 @@
328
328
  "type": "function"
329
329
  }
330
330
  ],
331
- "bytecode": "0x608060405234801561001057600080fd5b5061055b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80635c60da1b11610097578063da35c66411610066578063da35c664146101dc578063ee9799ee146101e4578063f851a440146101f7578063fc4eee42146101ff57610100565b80635c60da1b146101bc5780637bdbe4d0146101c4578063b58131b0146101cc578063d33219b4146101d457610100565b806326782247116100d3578063267822471461017557806335a87de21461018a5780633932abb1146101ac578063452a9320146101b457610100565b8063013cf08b1461010557806302a251a31461013857806317977c611461014d5780631b9ce57514610160575b600080fd5b610118610113366004610381565b610207565b60405161012f9b9a999897969594939291906103fc565b60405180910390f35b610140610273565b60405161012f91906103ee565b61014061015b36600461035b565b610279565b61016861028b565b60405161012f91906103e0565b61017d61029a565b60405161012f91906103d2565b61019d610198366004610381565b6102a9565b60405161012f939291906104a0565b6101406102ca565b61017d6102d0565b61017d6102df565b6101406102ee565b6101406102f4565b6101686102fa565b610140610309565b6101686101f2366004610381565b61030f565b61017d61032a565b610140610339565b600a60208190526000918252604090912080546001820154600283015460078401546008850154600986015496860154600b870154600c880154600e9098015496986001600160a01b039096169794969395929492939192909160ff808316926101009004811691168b565b60045481565b600b6020526000908152604090205481565b6009546001600160a01b031681565b6001546001600160a01b031681565b600e6020526000908152604090208054600182015460029092015490919083565b60035481565b600d546001600160a01b031681565b6002546001600160a01b031681565b600c5481565b60055481565b6008546001600160a01b031681565b60075481565b600f602052600090815260409020546001600160a01b031681565b6000546001600160a01b031681565b60065481565b803561034a816104f8565b92915050565b803561034a8161050f565b60006020828403121561036d57600080fd5b6000610379848461033f565b949350505050565b60006020828403121561039357600080fd5b60006103798484610350565b6103a8816104c8565b82525050565b6103a8816104d3565b6103a8816104ed565b6103a8816104e4565b6103a8816104e7565b6020810161034a828461039f565b6020810161034a82846103b7565b6020810161034a82846103c0565b610160810161040b828e6103c0565b610418602083018d61039f565b610425604083018c6103c0565b610432606083018b6103c0565b61043f608083018a6103c0565b61044c60a08301896103c0565b61045960c08301886103c0565b61046660e08301876103c0565b6104746101008301866103ae565b6104826101208301856103ae565b6104906101408301846103c9565b9c9b505050505050505050505050565b606081016104ae82866103c0565b6104bb60208301856103c0565b61037960408301846103c0565b600061034a826104d8565b151590565b6001600160a01b031690565b90565b60ff1690565b600061034a826104c8565b610501816104c8565b811461050c57600080fd5b50565b610501816104e456fea365627a7a72315820b297d28e59e7f6657a74a4ac0294f4304921bfaa7fe421e5c5ad9d5d3dfea92a6c6578706572696d656e74616cf564736f6c63430005100040",
332
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80635c60da1b11610097578063da35c66411610066578063da35c664146101dc578063ee9799ee146101e4578063f851a440146101f7578063fc4eee42146101ff57610100565b80635c60da1b146101bc5780637bdbe4d0146101c4578063b58131b0146101cc578063d33219b4146101d457610100565b806326782247116100d3578063267822471461017557806335a87de21461018a5780633932abb1146101ac578063452a9320146101b457610100565b8063013cf08b1461010557806302a251a31461013857806317977c611461014d5780631b9ce57514610160575b600080fd5b610118610113366004610381565b610207565b60405161012f9b9a999897969594939291906103fc565b60405180910390f35b610140610273565b60405161012f91906103ee565b61014061015b36600461035b565b610279565b61016861028b565b60405161012f91906103e0565b61017d61029a565b60405161012f91906103d2565b61019d610198366004610381565b6102a9565b60405161012f939291906104a0565b6101406102ca565b61017d6102d0565b61017d6102df565b6101406102ee565b6101406102f4565b6101686102fa565b610140610309565b6101686101f2366004610381565b61030f565b61017d61032a565b610140610339565b600a60208190526000918252604090912080546001820154600283015460078401546008850154600986015496860154600b870154600c880154600e9098015496986001600160a01b039096169794969395929492939192909160ff808316926101009004811691168b565b60045481565b600b6020526000908152604090205481565b6009546001600160a01b031681565b6001546001600160a01b031681565b600e6020526000908152604090208054600182015460029092015490919083565b60035481565b600d546001600160a01b031681565b6002546001600160a01b031681565b600c5481565b60055481565b6008546001600160a01b031681565b60075481565b600f602052600090815260409020546001600160a01b031681565b6000546001600160a01b031681565b60065481565b803561034a816104f8565b92915050565b803561034a8161050f565b60006020828403121561036d57600080fd5b6000610379848461033f565b949350505050565b60006020828403121561039357600080fd5b60006103798484610350565b6103a8816104c8565b82525050565b6103a8816104d3565b6103a8816104ed565b6103a8816104e4565b6103a8816104e7565b6020810161034a828461039f565b6020810161034a82846103b7565b6020810161034a82846103c0565b610160810161040b828e6103c0565b610418602083018d61039f565b610425604083018c6103c0565b610432606083018b6103c0565b61043f608083018a6103c0565b61044c60a08301896103c0565b61045960c08301886103c0565b61046660e08301876103c0565b6104746101008301866103ae565b6104826101208301856103ae565b6104906101408301846103c9565b9c9b505050505050505050505050565b606081016104ae82866103c0565b6104bb60208301856103c0565b61037960408301846103c0565b600061034a826104d8565b151590565b6001600160a01b031690565b90565b60ff1690565b600061034a826104c8565b610501816104c8565b811461050c57600080fd5b50565b610501816104e456fea365627a7a72315820b297d28e59e7f6657a74a4ac0294f4304921bfaa7fe421e5c5ad9d5d3dfea92a6c6578706572696d656e74616cf564736f6c63430005100040",
331
+ "bytecode": "0x608060405234801561001057600080fd5b5061055b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80635c60da1b11610097578063da35c66411610066578063da35c664146101dc578063ee9799ee146101e4578063f851a440146101f7578063fc4eee42146101ff57610100565b80635c60da1b146101bc5780637bdbe4d0146101c4578063b58131b0146101cc578063d33219b4146101d457610100565b806326782247116100d3578063267822471461017557806335a87de21461018a5780633932abb1146101ac578063452a9320146101b457610100565b8063013cf08b1461010557806302a251a31461013857806317977c611461014d5780631b9ce57514610160575b600080fd5b610118610113366004610381565b610207565b60405161012f9b9a999897969594939291906103fc565b60405180910390f35b610140610273565b60405161012f91906103ee565b61014061015b36600461035b565b610279565b61016861028b565b60405161012f91906103e0565b61017d61029a565b60405161012f91906103d2565b61019d610198366004610381565b6102a9565b60405161012f939291906104a0565b6101406102ca565b61017d6102d0565b61017d6102df565b6101406102ee565b6101406102f4565b6101686102fa565b610140610309565b6101686101f2366004610381565b61030f565b61017d61032a565b610140610339565b600a60208190526000918252604090912080546001820154600283015460078401546008850154600986015496860154600b870154600c880154600e9098015496986001600160a01b039096169794969395929492939192909160ff808316926101009004811691168b565b60045481565b600b6020526000908152604090205481565b6009546001600160a01b031681565b6001546001600160a01b031681565b600e6020526000908152604090208054600182015460029092015490919083565b60035481565b600d546001600160a01b031681565b6002546001600160a01b031681565b600c5481565b60055481565b6008546001600160a01b031681565b60075481565b600f602052600090815260409020546001600160a01b031681565b6000546001600160a01b031681565b60065481565b803561034a816104f8565b92915050565b803561034a8161050f565b60006020828403121561036d57600080fd5b6000610379848461033f565b949350505050565b60006020828403121561039357600080fd5b60006103798484610350565b6103a8816104c8565b82525050565b6103a8816104d3565b6103a8816104ed565b6103a8816104e4565b6103a8816104e7565b6020810161034a828461039f565b6020810161034a82846103b7565b6020810161034a82846103c0565b610160810161040b828e6103c0565b610418602083018d61039f565b610425604083018c6103c0565b610432606083018b6103c0565b61043f608083018a6103c0565b61044c60a08301896103c0565b61045960c08301886103c0565b61046660e08301876103c0565b6104746101008301866103ae565b6104826101208301856103ae565b6104906101408301846103c9565b9c9b505050505050505050505050565b606081016104ae82866103c0565b6104bb60208301856103c0565b61037960408301846103c0565b600061034a826104d8565b151590565b6001600160a01b031690565b90565b60ff1690565b600061034a826104c8565b610501816104c8565b811461050c57600080fd5b50565b610501816104e456fea365627a7a7231582063e5e3784b7c1e17fa46bb2ed1e6074ee91409d905f170c6e51f5ba7eaf29fb06c6578706572696d656e74616cf564736f6c63430005100040",
332
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80635c60da1b11610097578063da35c66411610066578063da35c664146101dc578063ee9799ee146101e4578063f851a440146101f7578063fc4eee42146101ff57610100565b80635c60da1b146101bc5780637bdbe4d0146101c4578063b58131b0146101cc578063d33219b4146101d457610100565b806326782247116100d3578063267822471461017557806335a87de21461018a5780633932abb1146101ac578063452a9320146101b457610100565b8063013cf08b1461010557806302a251a31461013857806317977c611461014d5780631b9ce57514610160575b600080fd5b610118610113366004610381565b610207565b60405161012f9b9a999897969594939291906103fc565b60405180910390f35b610140610273565b60405161012f91906103ee565b61014061015b36600461035b565b610279565b61016861028b565b60405161012f91906103e0565b61017d61029a565b60405161012f91906103d2565b61019d610198366004610381565b6102a9565b60405161012f939291906104a0565b6101406102ca565b61017d6102d0565b61017d6102df565b6101406102ee565b6101406102f4565b6101686102fa565b610140610309565b6101686101f2366004610381565b61030f565b61017d61032a565b610140610339565b600a60208190526000918252604090912080546001820154600283015460078401546008850154600986015496860154600b870154600c880154600e9098015496986001600160a01b039096169794969395929492939192909160ff808316926101009004811691168b565b60045481565b600b6020526000908152604090205481565b6009546001600160a01b031681565b6001546001600160a01b031681565b600e6020526000908152604090208054600182015460029092015490919083565b60035481565b600d546001600160a01b031681565b6002546001600160a01b031681565b600c5481565b60055481565b6008546001600160a01b031681565b60075481565b600f602052600090815260409020546001600160a01b031681565b6000546001600160a01b031681565b60065481565b803561034a816104f8565b92915050565b803561034a8161050f565b60006020828403121561036d57600080fd5b6000610379848461033f565b949350505050565b60006020828403121561039357600080fd5b60006103798484610350565b6103a8816104c8565b82525050565b6103a8816104d3565b6103a8816104ed565b6103a8816104e4565b6103a8816104e7565b6020810161034a828461039f565b6020810161034a82846103b7565b6020810161034a82846103c0565b610160810161040b828e6103c0565b610418602083018d61039f565b610425604083018c6103c0565b610432606083018b6103c0565b61043f608083018a6103c0565b61044c60a08301896103c0565b61045960c08301886103c0565b61046660e08301876103c0565b6104746101008301866103ae565b6104826101208301856103ae565b6104906101408301846103c9565b9c9b505050505050505050505050565b606081016104ae82866103c0565b6104bb60208301856103c0565b61037960408301846103c0565b600061034a826104d8565b151590565b6001600160a01b031690565b90565b60ff1690565b600061034a826104c8565b610501816104c8565b811461050c57600080fd5b50565b610501816104e456fea365627a7a7231582063e5e3784b7c1e17fa46bb2ed1e6074ee91409d905f170c6e51f5ba7eaf29fb06c6578706572696d656e74616cf564736f6c63430005100040",
333
333
  "linkReferences": {},
334
334
  "deployedLinkReferences": {}
335
335
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/fa9891803c56b8a530ff515ffc45dc03.json"
3
+ "buildInfo": "../../../build-info/e5638231ea42ec29d0230b1b013f1a57.json"
4
4
  }
@@ -49,8 +49,8 @@
49
49
  "type": "function"
50
50
  }
51
51
  ],
52
- "bytecode": "0x608060405234801561001057600080fd5b50610106806100206000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063267822471460415780635c60da1b14605b578063f851a440146061575b600080fd5b60476067565b6040516052919060a1565b60405180910390f35b60476076565b60476085565b6001546001600160a01b031681565b6002546001600160a01b031681565b6000546001600160a01b031681565b609b8160b3565b82525050565b6020810160ad82846094565b92915050565b60006001600160a01b03821660ad56fea365627a7a723158208970cfc9dd0cf002ce8a7051b247b7b33e7d9d1970c71b17cb28b8cd2fa9349e6c6578706572696d656e74616cf564736f6c63430005100040",
53
- "deployedBytecode": "0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063267822471460415780635c60da1b14605b578063f851a440146061575b600080fd5b60476067565b6040516052919060a1565b60405180910390f35b60476076565b60476085565b6001546001600160a01b031681565b6002546001600160a01b031681565b6000546001600160a01b031681565b609b8160b3565b82525050565b6020810160ad82846094565b92915050565b60006001600160a01b03821660ad56fea365627a7a723158208970cfc9dd0cf002ce8a7051b247b7b33e7d9d1970c71b17cb28b8cd2fa9349e6c6578706572696d656e74616cf564736f6c63430005100040",
52
+ "bytecode": "0x608060405234801561001057600080fd5b50610106806100206000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063267822471460415780635c60da1b14605b578063f851a440146061575b600080fd5b60476067565b6040516052919060a1565b60405180910390f35b60476076565b60476085565b6001546001600160a01b031681565b6002546001600160a01b031681565b6000546001600160a01b031681565b609b8160b3565b82525050565b6020810160ad82846094565b92915050565b60006001600160a01b03821660ad56fea365627a7a723158202a3d8dd9b0bfb56f9aa71474485acf85bff078f8f37b645cbbc9c1ac6fadbdf46c6578706572696d656e74616cf564736f6c63430005100040",
53
+ "deployedBytecode": "0x6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063267822471460415780635c60da1b14605b578063f851a440146061575b600080fd5b60476067565b6040516052919060a1565b60405180910390f35b60476076565b60476085565b6001546001600160a01b031681565b6002546001600160a01b031681565b6000546001600160a01b031681565b609b8160b3565b82525050565b6020810160ad82846094565b92915050565b60006001600160a01b03821660ad56fea365627a7a723158202a3d8dd9b0bfb56f9aa71474485acf85bff078f8f37b645cbbc9c1ac6fadbdf46c6578706572696d656e74616cf564736f6c63430005100040",
54
54
  "linkReferences": {},
55
55
  "deployedLinkReferences": {}
56
56
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/fa9891803c56b8a530ff515ffc45dc03.json"
3
+ "buildInfo": "../../../build-info/e5638231ea42ec29d0230b1b013f1a57.json"
4
4
  }
@@ -305,8 +305,8 @@
305
305
  "type": "event"
306
306
  }
307
307
  ],
308
- "bytecode": "0x6080604052348015600f57600080fd5b50604c80601d6000396000f3fe6080604052600080fdfea365627a7a72315820e013145920e1a9bd877dfe2c3ed873b3ec975ffeec240c717ece17ec87cc8e296c6578706572696d656e74616cf564736f6c63430005100040",
309
- "deployedBytecode": "0x6080604052600080fdfea365627a7a72315820e013145920e1a9bd877dfe2c3ed873b3ec975ffeec240c717ece17ec87cc8e296c6578706572696d656e74616cf564736f6c63430005100040",
308
+ "bytecode": "0x6080604052348015600f57600080fd5b50604c80601d6000396000f3fe6080604052600080fdfea365627a7a72315820364dd31c55c9a70defd7874f6f01047f21edea4a43143255f950aa2c96119dd06c6578706572696d656e74616cf564736f6c63430005100040",
309
+ "deployedBytecode": "0x6080604052600080fdfea365627a7a72315820364dd31c55c9a70defd7874f6f01047f21edea4a43143255f950aa2c96119dd06c6578706572696d656e74616cf564736f6c63430005100040",
310
310
  "linkReferences": {},
311
311
  "deployedLinkReferences": {}
312
312
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/fa9891803c56b8a530ff515ffc45dc03.json"
3
+ "buildInfo": "../../../build-info/e5638231ea42ec29d0230b1b013f1a57.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/fa9891803c56b8a530ff515ffc45dc03.json"
3
+ "buildInfo": "../../../build-info/e5638231ea42ec29d0230b1b013f1a57.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/21eeeec59918770851ef762f6f414247.json"
3
+ "buildInfo": "../../../build-info/56323f6708e82b6f7b159248c3c1268a.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/0ed8a45a04a58741f8391cb7a77f7ff9.json"
3
+ "buildInfo": "../../../build-info/0e028ff5062f0f59a7ffef92b702c074.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/1659b7cff20ee8b7949bfbefa681db8b.json"
3
+ "buildInfo": "../../../build-info/bb792d434e41d4003eeb48354b3a6c5c.json"
4
4
  }
@@ -461,8 +461,8 @@
461
461
  "type": "function"
462
462
  }
463
463
  ],
464
- "bytecode": "0x608060405234801561001057600080fd5b506040516119263803806119268339818101604052604081101561003357600080fd5b508051602090910151610e1081101561007d5760405162461bcd60e51b81526004018080602001828103825260378152602001806118b76037913960400191505060405180910390fd5b62278d008111156100bf5760405162461bcd60e51b81526004018080602001828103825260388152602001806118ee6038913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b0319909316929092179091556002556117c4806100f36000396000f3fe6080604052600436106100c25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e2146105dd578063e177246e146105f2578063f2b065371461061c578063f851a4401461065a576100c2565b80636a42b8f81461059e5780637d645fab146105b3578063b1b43ae5146105c8576100c2565b80630825f38f146100c45780630e18b68114610279578063267822471461028e5780633a66f901146102bf5780634dd18bf51461041e578063591fcdfe14610451575b005b610204600480360360a08110156100da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561010957600080fd5b82018360208201111561011b57600080fd5b803590602001918460018302840111600160201b8311171561013c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460018302840111600160201b831117156101c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061066f915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b506100c2610b88565b34801561029a57600080fd5b506102a3610c24565b604080516001600160a01b039092168252519081900360200190f35b3480156102cb57600080fd5b5061040c600480360360a08110156102e257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561031157600080fd5b82018360208201111561032357600080fd5b803590602001918460018302840111600160201b8311171561034457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610c33915050565b60408051918252519081900360200190f35b34801561042a57600080fd5b506100c26004803603602081101561044157600080fd5b50356001600160a01b0316610f44565b34801561045d57600080fd5b506100c2600480360360a081101561047457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561052857600080fd5b82018360208201111561053a57600080fd5b803590602001918460018302840111600160201b8311171561055b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610fd2915050565b3480156105aa57600080fd5b5061040c611288565b3480156105bf57600080fd5b5061040c61128e565b3480156105d457600080fd5b5061040c611295565b3480156105e957600080fd5b5061040c61129b565b3480156105fe57600080fd5b506100c26004803603602081101561061557600080fd5b50356112a2565b34801561062857600080fd5b506106466004803603602081101561063f57600080fd5b5035611396565b604080519115158252519081900360200190f35b34801561066657600080fd5b506102a36113ab565b6000546060906001600160a01b031633146106bb5760405162461bcd60e51b81526004018080602001828103825260388152602001806114a36038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561072a578181015183820152602001610712565b50505050905090810190601f1680156107575780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561078a578181015183820152602001610772565b50505050905090810190601f1680156107b75780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff16975061082896505050505050505760405162461bcd60e51b815260040180806020018281038252603d8152602001806115f6603d913960400191505060405180910390fd5b826108316113ba565b101561086e5760405162461bcd60e51b81526004018080602001828103825260458152602001806115456045913960600191505060405180910390fd5b610881836212750063ffffffff6113be16565b6108896113ba565b11156108c65760405162461bcd60e51b81526004018080602001828103825260338152602001806115126033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906108ec575083610979565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109415780518252601f199092019160209182019101610922565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b602083106109b85780518252601f199092019160209182019101610999565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a1a576040519150601f19603f3d011682016040523d82523d6000602084013e610a1f565b606091505b509150915081610a605760405162461bcd60e51b815260040180806020018281038252603d8152602001806116d9603d913960400191505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610add578181015183820152602001610ac5565b50505050905090810190601f168015610b0a5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610b3d578181015183820152602001610b25565b50505050905090810190601f168015610b6a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610bd15760405162461bcd60e51b81526004018080602001828103825260388152602001806116336038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610c7d5760405162461bcd60e51b81526004018080602001828103825260368152602001806116a36036913960400191505060405180910390fd5b610c97600254610c8b6113ba565b9063ffffffff6113be16565b821015610cd55760405162461bcd60e51b81526004018080602001828103825260498152602001806117166049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610d44578181015183820152602001610d2c565b50505050905090810190601f168015610d715780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610da4578181015183820152602001610d8c565b50505050905090810190601f168015610dd15780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e9c578181015183820152602001610e84565b50505050905090810190601f168015610ec95780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610efc578181015183820152602001610ee4565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b333014610f825760405162461bcd60e51b815260040180806020018281038252603881526020018061166b6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b0316331461101b5760405162461bcd60e51b81526004018080602001828103825260378152602001806114db6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561108a578181015183820152602001611072565b50505050905090810190601f1680156110b75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156110ea5781810151838201526020016110d2565b50505050905090810190601f1680156111175780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561124257818101518382015260200161122a565b50505050905090810190601f16801561126f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b610e1081565b6212750081565b3330146112e05760405162461bcd60e51b815260040180806020018281038252603181526020018061175f6031913960400191505060405180910390fd5b610e108110156113215760405162461bcd60e51b815260040180806020018281038252603481526020018061158a6034913960400191505060405180910390fd5b62278d008111156113635760405162461bcd60e51b81526004018080602001828103825260388152602001806115be6038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b600061140083836040518060400160405280601b81526020017f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815250611407565b9392505050565b600083830182858210156114995760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145e578181015183820152602001611446565b50505050905090810190601f16801561148b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5094935050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a72315820e179c8457f8527b63eed94aa9ed487706bd0bffd833c09783bf269c91be20ed664736f6c6343000510003254696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
465
- "deployedBytecode": "0x6080604052600436106100c25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e2146105dd578063e177246e146105f2578063f2b065371461061c578063f851a4401461065a576100c2565b80636a42b8f81461059e5780637d645fab146105b3578063b1b43ae5146105c8576100c2565b80630825f38f146100c45780630e18b68114610279578063267822471461028e5780633a66f901146102bf5780634dd18bf51461041e578063591fcdfe14610451575b005b610204600480360360a08110156100da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561010957600080fd5b82018360208201111561011b57600080fd5b803590602001918460018302840111600160201b8311171561013c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460018302840111600160201b831117156101c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061066f915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b506100c2610b88565b34801561029a57600080fd5b506102a3610c24565b604080516001600160a01b039092168252519081900360200190f35b3480156102cb57600080fd5b5061040c600480360360a08110156102e257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561031157600080fd5b82018360208201111561032357600080fd5b803590602001918460018302840111600160201b8311171561034457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610c33915050565b60408051918252519081900360200190f35b34801561042a57600080fd5b506100c26004803603602081101561044157600080fd5b50356001600160a01b0316610f44565b34801561045d57600080fd5b506100c2600480360360a081101561047457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561052857600080fd5b82018360208201111561053a57600080fd5b803590602001918460018302840111600160201b8311171561055b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610fd2915050565b3480156105aa57600080fd5b5061040c611288565b3480156105bf57600080fd5b5061040c61128e565b3480156105d457600080fd5b5061040c611295565b3480156105e957600080fd5b5061040c61129b565b3480156105fe57600080fd5b506100c26004803603602081101561061557600080fd5b50356112a2565b34801561062857600080fd5b506106466004803603602081101561063f57600080fd5b5035611396565b604080519115158252519081900360200190f35b34801561066657600080fd5b506102a36113ab565b6000546060906001600160a01b031633146106bb5760405162461bcd60e51b81526004018080602001828103825260388152602001806114a36038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561072a578181015183820152602001610712565b50505050905090810190601f1680156107575780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561078a578181015183820152602001610772565b50505050905090810190601f1680156107b75780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff16975061082896505050505050505760405162461bcd60e51b815260040180806020018281038252603d8152602001806115f6603d913960400191505060405180910390fd5b826108316113ba565b101561086e5760405162461bcd60e51b81526004018080602001828103825260458152602001806115456045913960600191505060405180910390fd5b610881836212750063ffffffff6113be16565b6108896113ba565b11156108c65760405162461bcd60e51b81526004018080602001828103825260338152602001806115126033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906108ec575083610979565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109415780518252601f199092019160209182019101610922565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b602083106109b85780518252601f199092019160209182019101610999565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a1a576040519150601f19603f3d011682016040523d82523d6000602084013e610a1f565b606091505b509150915081610a605760405162461bcd60e51b815260040180806020018281038252603d8152602001806116d9603d913960400191505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610add578181015183820152602001610ac5565b50505050905090810190601f168015610b0a5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610b3d578181015183820152602001610b25565b50505050905090810190601f168015610b6a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610bd15760405162461bcd60e51b81526004018080602001828103825260388152602001806116336038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610c7d5760405162461bcd60e51b81526004018080602001828103825260368152602001806116a36036913960400191505060405180910390fd5b610c97600254610c8b6113ba565b9063ffffffff6113be16565b821015610cd55760405162461bcd60e51b81526004018080602001828103825260498152602001806117166049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610d44578181015183820152602001610d2c565b50505050905090810190601f168015610d715780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610da4578181015183820152602001610d8c565b50505050905090810190601f168015610dd15780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e9c578181015183820152602001610e84565b50505050905090810190601f168015610ec95780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610efc578181015183820152602001610ee4565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b333014610f825760405162461bcd60e51b815260040180806020018281038252603881526020018061166b6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b0316331461101b5760405162461bcd60e51b81526004018080602001828103825260378152602001806114db6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561108a578181015183820152602001611072565b50505050905090810190601f1680156110b75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156110ea5781810151838201526020016110d2565b50505050905090810190601f1680156111175780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561124257818101518382015260200161122a565b50505050905090810190601f16801561126f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b610e1081565b6212750081565b3330146112e05760405162461bcd60e51b815260040180806020018281038252603181526020018061175f6031913960400191505060405180910390fd5b610e108110156113215760405162461bcd60e51b815260040180806020018281038252603481526020018061158a6034913960400191505060405180910390fd5b62278d008111156113635760405162461bcd60e51b81526004018080602001828103825260388152602001806115be6038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b600061140083836040518060400160405280601b81526020017f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815250611407565b9392505050565b600083830182858210156114995760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145e578181015183820152602001611446565b50505050905090810190601f16801561148b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5094935050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a72315820e179c8457f8527b63eed94aa9ed487706bd0bffd833c09783bf269c91be20ed664736f6c63430005100032",
464
+ "bytecode": "0x608060405234801561001057600080fd5b506040516119263803806119268339818101604052604081101561003357600080fd5b508051602090910151610e1081101561007d5760405162461bcd60e51b81526004018080602001828103825260378152602001806118b76037913960400191505060405180910390fd5b62278d008111156100bf5760405162461bcd60e51b81526004018080602001828103825260388152602001806118ee6038913960400191505060405180910390fd5b600080546001600160a01b039093166001600160a01b0319909316929092179091556002556117c4806100f36000396000f3fe6080604052600436106100c25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e2146105dd578063e177246e146105f2578063f2b065371461061c578063f851a4401461065a576100c2565b80636a42b8f81461059e5780637d645fab146105b3578063b1b43ae5146105c8576100c2565b80630825f38f146100c45780630e18b68114610279578063267822471461028e5780633a66f901146102bf5780634dd18bf51461041e578063591fcdfe14610451575b005b610204600480360360a08110156100da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561010957600080fd5b82018360208201111561011b57600080fd5b803590602001918460018302840111600160201b8311171561013c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460018302840111600160201b831117156101c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061066f915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b506100c2610b88565b34801561029a57600080fd5b506102a3610c24565b604080516001600160a01b039092168252519081900360200190f35b3480156102cb57600080fd5b5061040c600480360360a08110156102e257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561031157600080fd5b82018360208201111561032357600080fd5b803590602001918460018302840111600160201b8311171561034457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610c33915050565b60408051918252519081900360200190f35b34801561042a57600080fd5b506100c26004803603602081101561044157600080fd5b50356001600160a01b0316610f44565b34801561045d57600080fd5b506100c2600480360360a081101561047457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561052857600080fd5b82018360208201111561053a57600080fd5b803590602001918460018302840111600160201b8311171561055b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610fd2915050565b3480156105aa57600080fd5b5061040c611288565b3480156105bf57600080fd5b5061040c61128e565b3480156105d457600080fd5b5061040c611295565b3480156105e957600080fd5b5061040c61129b565b3480156105fe57600080fd5b506100c26004803603602081101561061557600080fd5b50356112a2565b34801561062857600080fd5b506106466004803603602081101561063f57600080fd5b5035611396565b604080519115158252519081900360200190f35b34801561066657600080fd5b506102a36113ab565b6000546060906001600160a01b031633146106bb5760405162461bcd60e51b81526004018080602001828103825260388152602001806114a36038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561072a578181015183820152602001610712565b50505050905090810190601f1680156107575780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561078a578181015183820152602001610772565b50505050905090810190601f1680156107b75780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff16975061082896505050505050505760405162461bcd60e51b815260040180806020018281038252603d8152602001806115f6603d913960400191505060405180910390fd5b826108316113ba565b101561086e5760405162461bcd60e51b81526004018080602001828103825260458152602001806115456045913960600191505060405180910390fd5b610881836212750063ffffffff6113be16565b6108896113ba565b11156108c65760405162461bcd60e51b81526004018080602001828103825260338152602001806115126033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906108ec575083610979565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109415780518252601f199092019160209182019101610922565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b602083106109b85780518252601f199092019160209182019101610999565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a1a576040519150601f19603f3d011682016040523d82523d6000602084013e610a1f565b606091505b509150915081610a605760405162461bcd60e51b815260040180806020018281038252603d8152602001806116d9603d913960400191505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610add578181015183820152602001610ac5565b50505050905090810190601f168015610b0a5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610b3d578181015183820152602001610b25565b50505050905090810190601f168015610b6a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610bd15760405162461bcd60e51b81526004018080602001828103825260388152602001806116336038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610c7d5760405162461bcd60e51b81526004018080602001828103825260368152602001806116a36036913960400191505060405180910390fd5b610c97600254610c8b6113ba565b9063ffffffff6113be16565b821015610cd55760405162461bcd60e51b81526004018080602001828103825260498152602001806117166049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610d44578181015183820152602001610d2c565b50505050905090810190601f168015610d715780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610da4578181015183820152602001610d8c565b50505050905090810190601f168015610dd15780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e9c578181015183820152602001610e84565b50505050905090810190601f168015610ec95780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610efc578181015183820152602001610ee4565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b333014610f825760405162461bcd60e51b815260040180806020018281038252603881526020018061166b6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b0316331461101b5760405162461bcd60e51b81526004018080602001828103825260378152602001806114db6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561108a578181015183820152602001611072565b50505050905090810190601f1680156110b75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156110ea5781810151838201526020016110d2565b50505050905090810190601f1680156111175780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561124257818101518382015260200161122a565b50505050905090810190601f16801561126f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b610e1081565b6212750081565b3330146112e05760405162461bcd60e51b815260040180806020018281038252603181526020018061175f6031913960400191505060405180910390fd5b610e108110156113215760405162461bcd60e51b815260040180806020018281038252603481526020018061158a6034913960400191505060405180910390fd5b62278d008111156113635760405162461bcd60e51b81526004018080602001828103825260388152602001806115be6038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b600061140083836040518060400160405280601b81526020017f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815250611407565b9392505050565b600083830182858210156114995760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145e578181015183820152602001611446565b50505050905090810190601f16801561148b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5094935050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158204790f548d797751316029d540f3b17febb05f4cb3b163ea930802d1e4a01c17264736f6c6343000510003254696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e",
465
+ "deployedBytecode": "0x6080604052600436106100c25760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e2146105dd578063e177246e146105f2578063f2b065371461061c578063f851a4401461065a576100c2565b80636a42b8f81461059e5780637d645fab146105b3578063b1b43ae5146105c8576100c2565b80630825f38f146100c45780630e18b68114610279578063267822471461028e5780633a66f901146102bf5780634dd18bf51461041e578063591fcdfe14610451575b005b610204600480360360a08110156100da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561010957600080fd5b82018360208201111561011b57600080fd5b803590602001918460018302840111600160201b8311171561013c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561018e57600080fd5b8201836020820111156101a057600080fd5b803590602001918460018302840111600160201b831117156101c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061066f915050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b506100c2610b88565b34801561029a57600080fd5b506102a3610c24565b604080516001600160a01b039092168252519081900360200190f35b3480156102cb57600080fd5b5061040c600480360360a08110156102e257600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561031157600080fd5b82018360208201111561032357600080fd5b803590602001918460018302840111600160201b8311171561034457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561039657600080fd5b8201836020820111156103a857600080fd5b803590602001918460018302840111600160201b831117156103c957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610c33915050565b60408051918252519081900360200190f35b34801561042a57600080fd5b506100c26004803603602081101561044157600080fd5b50356001600160a01b0316610f44565b34801561045d57600080fd5b506100c2600480360360a081101561047457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561052857600080fd5b82018360208201111561053a57600080fd5b803590602001918460018302840111600160201b8311171561055b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610fd2915050565b3480156105aa57600080fd5b5061040c611288565b3480156105bf57600080fd5b5061040c61128e565b3480156105d457600080fd5b5061040c611295565b3480156105e957600080fd5b5061040c61129b565b3480156105fe57600080fd5b506100c26004803603602081101561061557600080fd5b50356112a2565b34801561062857600080fd5b506106466004803603602081101561063f57600080fd5b5035611396565b604080519115158252519081900360200190f35b34801561066657600080fd5b506102a36113ab565b6000546060906001600160a01b031633146106bb5760405162461bcd60e51b81526004018080602001828103825260388152602001806114a36038913960400191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561072a578181015183820152602001610712565b50505050905090810190601f1680156107575780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561078a578181015183820152602001610772565b50505050905090810190601f1680156107b75780820380516001836020036101000a031916815260200191505b5060408051601f1981840301815291815281516020928301206000818152600390935291205490995060ff16975061082896505050505050505760405162461bcd60e51b815260040180806020018281038252603d8152602001806115f6603d913960400191505060405180910390fd5b826108316113ba565b101561086e5760405162461bcd60e51b81526004018080602001828103825260458152602001806115456045913960600191505060405180910390fd5b610881836212750063ffffffff6113be16565b6108896113ba565b11156108c65760405162461bcd60e51b81526004018080602001828103825260338152602001806115126033913960400191505060405180910390fd5b6000818152600360205260409020805460ff1916905584516060906108ec575083610979565b85805190602001208560405160200180836001600160e01b0319166001600160e01b031916815260040182805190602001908083835b602083106109415780518252601f199092019160209182019101610922565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405290505b60006060896001600160a01b031689846040518082805190602001908083835b602083106109b85780518252601f199092019160209182019101610999565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a1a576040519150601f19603f3d011682016040523d82523d6000602084013e610a1f565b606091505b509150915081610a605760405162461bcd60e51b815260040180806020018281038252603d8152602001806116d9603d913960400191505060405180910390fd5b896001600160a01b0316847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610add578181015183820152602001610ac5565b50505050905090810190601f168015610b0a5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610b3d578181015183820152602001610b25565b50505050905090810190601f168015610b6a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39998505050505050505050565b6001546001600160a01b03163314610bd15760405162461bcd60e51b81526004018080602001828103825260388152602001806116336038913960400191505060405180910390fd5b60008054336001600160a01b031991821617808355600180549092169091556040516001600160a01b03909116917f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c91a2565b6001546001600160a01b031681565b600080546001600160a01b03163314610c7d5760405162461bcd60e51b81526004018080602001828103825260368152602001806116a36036913960400191505060405180910390fd5b610c97600254610c8b6113ba565b9063ffffffff6113be16565b821015610cd55760405162461bcd60e51b81526004018080602001828103825260498152602001806117166049913960600191505060405180910390fd5b6000868686868660405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610d44578181015183820152602001610d2c565b50505050905090810190601f168015610d715780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610da4578181015183820152602001610d8c565b50505050905090810190601f168015610dd15780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550866001600160a01b0316817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f88888888604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015610e9c578181015183820152602001610e84565b50505050905090810190601f168015610ec95780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610efc578181015183820152602001610ee4565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a39695505050505050565b333014610f825760405162461bcd60e51b815260040180806020018281038252603881526020018061166b6038913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b6000546001600160a01b0316331461101b5760405162461bcd60e51b81526004018080602001828103825260378152602001806114db6037913960400191505060405180910390fd5b6000858585858560405160200180866001600160a01b03166001600160a01b031681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561108a578181015183820152602001611072565b50505050905090810190601f1680156110b75780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156110ea5781810151838201526020016110d2565b50505050905090810190601f1680156111175780820380516001836020036101000a031916815260200191505b5097505050505050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550856001600160a01b0316817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156111e25781810151838201526020016111ca565b50505050905090810190601f16801561120f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561124257818101518382015260200161122a565b50505050905090810190601f16801561126f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a3505050505050565b60025481565b62278d0081565b610e1081565b6212750081565b3330146112e05760405162461bcd60e51b815260040180806020018281038252603181526020018061175f6031913960400191505060405180910390fd5b610e108110156113215760405162461bcd60e51b815260040180806020018281038252603481526020018061158a6034913960400191505060405180910390fd5b62278d008111156113635760405162461bcd60e51b81526004018080602001828103825260388152602001806115be6038913960400191505060405180910390fd5b600281905560405181907f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c90600090a250565b60036020526000908152604090205460ff1681565b6000546001600160a01b031681565b4290565b600061140083836040518060400160405280601b81526020017f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815250611407565b9392505050565b600083830182858210156114995760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145e578181015183820152602001611446565b50505050905090810190601f16801561148b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5094935050505056fe54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206973207374616c652e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774207375727061737365642074696d65206c6f636b2e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d75737420657863656564206d696e696d756d2064656c61792e54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e6f7420657863656564206d6178696d756d2064656c61792e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e206861736e2774206265656e207175657565642e54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737420636f6d652066726f6d2070656e64696e6741646d696e2e54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c206d75737420636f6d652066726f6d2061646d696e2e54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a205472616e73616374696f6e20657865637574696f6e2072657665727465642e54696d656c6f636b3a3a71756575655472616e73616374696f6e3a20457374696d6174656420657865637574696f6e20626c6f636b206d75737420736174697366792064656c61792e54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f6d652066726f6d2054696d656c6f636b2ea265627a7a723158204790f548d797751316029d540f3b17febb05f4cb3b163ea930802d1e4a01c17264736f6c63430005100032",
466
466
  "linkReferences": {},
467
467
  "deployedLinkReferences": {}
468
468
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/1659b7cff20ee8b7949bfbefa681db8b.json"
3
+ "buildInfo": "../../../build-info/bb792d434e41d4003eeb48354b3a6c5c.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/0ed8a45a04a58741f8391cb7a77f7ff9.json"
3
+ "buildInfo": "../../../build-info/0e028ff5062f0f59a7ffef92b702c074.json"
4
4
  }
@@ -187,8 +187,8 @@
187
187
  "type": "function"
188
188
  }
189
189
  ],
190
- "bytecode": "0x608060405234801561001057600080fd5b506107d0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4a0bdf31161005b578063b4a0bdf3146100f5578063c4d66de814610113578063e30c397814610126578063f2fde38b1461014457600080fd5b80630e32cb861461008d578063715018a6146100a257806379ba5097146100aa5780638da5cb5b146100b2575b600080fd5b6100a061009b36600461075d565b610157565b005b6100a061016b565b6100a061017f565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60975473ffffffffffffffffffffffffffffffffffffffff166100cc565b6100a061012136600461075d565b610236565b60655473ffffffffffffffffffffffffffffffffffffffff166100cc565b6100a061015236600461075d565b6103cb565b61015f61047b565b610168816104fc565b50565b61017361047b565b61017d600061061e565b565b606554339073ffffffffffffffffffffffffffffffffffffffff16811461022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101688161061e565b600054610100900460ff16158080156102565750600054600160ff909116105b806102705750303b158015610270575060005460ff166001145b6102fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561035a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103638261064f565b80156103c757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b6103d361047b565b6065805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561043660335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60335473ffffffffffffffffffffffffffffffffffffffff16331461017d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610224565b73ffffffffffffffffffffffffffffffffffffffff811661059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610224565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091016103be565b606580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610168816106e6565b600054610100900460ff1661015f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610224565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006020828403121561076f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461079357600080fd5b939250505056fea2646970667358221220499b728de749bc469a1fcd2a0e47e59f3787f64210d5ac5c1154eebdc6dcfad964736f6c634300080d0033",
191
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4a0bdf31161005b578063b4a0bdf3146100f5578063c4d66de814610113578063e30c397814610126578063f2fde38b1461014457600080fd5b80630e32cb861461008d578063715018a6146100a257806379ba5097146100aa5780638da5cb5b146100b2575b600080fd5b6100a061009b36600461075d565b610157565b005b6100a061016b565b6100a061017f565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60975473ffffffffffffffffffffffffffffffffffffffff166100cc565b6100a061012136600461075d565b610236565b60655473ffffffffffffffffffffffffffffffffffffffff166100cc565b6100a061015236600461075d565b6103cb565b61015f61047b565b610168816104fc565b50565b61017361047b565b61017d600061061e565b565b606554339073ffffffffffffffffffffffffffffffffffffffff16811461022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101688161061e565b600054610100900460ff16158080156102565750600054600160ff909116105b806102705750303b158015610270575060005460ff166001145b6102fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561035a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103638261064f565b80156103c757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b6103d361047b565b6065805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561043660335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60335473ffffffffffffffffffffffffffffffffffffffff16331461017d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610224565b73ffffffffffffffffffffffffffffffffffffffff811661059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610224565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091016103be565b606580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610168816106e6565b600054610100900460ff1661015f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610224565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006020828403121561076f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461079357600080fd5b939250505056fea2646970667358221220499b728de749bc469a1fcd2a0e47e59f3787f64210d5ac5c1154eebdc6dcfad964736f6c634300080d0033",
190
+ "bytecode": "0x608060405234801561001057600080fd5b506107d0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4a0bdf31161005b578063b4a0bdf3146100f5578063c4d66de814610113578063e30c397814610126578063f2fde38b1461014457600080fd5b80630e32cb861461008d578063715018a6146100a257806379ba5097146100aa5780638da5cb5b146100b2575b600080fd5b6100a061009b36600461075d565b610157565b005b6100a061016b565b6100a061017f565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60975473ffffffffffffffffffffffffffffffffffffffff166100cc565b6100a061012136600461075d565b610236565b60655473ffffffffffffffffffffffffffffffffffffffff166100cc565b6100a061015236600461075d565b6103cb565b61015f61047b565b610168816104fc565b50565b61017361047b565b61017d600061061e565b565b606554339073ffffffffffffffffffffffffffffffffffffffff16811461022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101688161061e565b600054610100900460ff16158080156102565750600054600160ff909116105b806102705750303b158015610270575060005460ff166001145b6102fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561035a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103638261064f565b80156103c757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b6103d361047b565b6065805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561043660335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60335473ffffffffffffffffffffffffffffffffffffffff16331461017d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610224565b73ffffffffffffffffffffffffffffffffffffffff811661059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610224565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091016103be565b606580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610168816106e6565b600054610100900460ff1661015f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610224565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006020828403121561076f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461079357600080fd5b939250505056fea2646970667358221220c3115a278068d49108fe8d65a871866cb167594549082c406ef4f2c7b78616f464736f6c634300080d0033",
191
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4a0bdf31161005b578063b4a0bdf3146100f5578063c4d66de814610113578063e30c397814610126578063f2fde38b1461014457600080fd5b80630e32cb861461008d578063715018a6146100a257806379ba5097146100aa5780638da5cb5b146100b2575b600080fd5b6100a061009b36600461075d565b610157565b005b6100a061016b565b6100a061017f565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60975473ffffffffffffffffffffffffffffffffffffffff166100cc565b6100a061012136600461075d565b610236565b60655473ffffffffffffffffffffffffffffffffffffffff166100cc565b6100a061015236600461075d565b6103cb565b61015f61047b565b610168816104fc565b50565b61017361047b565b61017d600061061e565b565b606554339073ffffffffffffffffffffffffffffffffffffffff16811461022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101688161061e565b600054610100900460ff16158080156102565750600054600160ff909116105b806102705750303b158015610270575060005460ff166001145b6102fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561035a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103638261064f565b80156103c757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050565b6103d361047b565b6065805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561043660335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60335473ffffffffffffffffffffffffffffffffffffffff16331461017d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610224565b73ffffffffffffffffffffffffffffffffffffffff811661059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610224565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa091016103be565b606580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610168816106e6565b600054610100900460ff1661015f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610224565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006020828403121561076f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461079357600080fd5b939250505056fea2646970667358221220c3115a278068d49108fe8d65a871866cb167594549082c406ef4f2c7b78616f464736f6c634300080d0033",
192
192
  "linkReferences": {},
193
193
  "deployedLinkReferences": {}
194
194
  }
@@ -4,11 +4,50 @@ import "@openzeppelin/contracts/access/AccessControl.sol";
4
4
  import "./IAccessControlManagerV8.sol";
5
5
 
6
6
  /**
7
- * @title Venus Access Control Contract
8
- * @author venus
9
- * @dev This contract is a wrapper of OpenZeppelin AccessControl
10
- * extending it in a way to standartize access control
11
- * within Venus Smart Contract Ecosystem
7
+ * @title AccessControlManager
8
+ * @author Venus
9
+ * @dev This contract is a wrapper of OpenZeppelin AccessControl extending it in a way to standartize access control within Venus Smart Contract Ecosystem.
10
+ * @notice Access control plays a crucial role in the Venus governance model. It is used to restrict functions so that they can only be called from one
11
+ * account or list of accounts (EOA or Contract Accounts).
12
+ *
13
+ * The implementation of `AccessControlManager`(https://github.com/VenusProtocol/governance-contracts/blob/main/contracts/Governance/AccessControlManager.sol)
14
+ * inherits the [Open Zeppelin AccessControl](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/AccessControl.sol)
15
+ * contract as a base for role management logic. There are two role types: admin and granular permissions.
16
+ *
17
+ * ## Granular Roles
18
+ *
19
+ * Granular roles are built by hashing the contract address and its function signature. For example, given contract `Foo` with function `Foo.bar()` which
20
+ * is guarded by ACM, calling `giveRolePermission` for account B do the following:
21
+ *
22
+ * 1. Compute `keccak256(contractFooAddress,functionSignatureBar)`
23
+ * 1. Add the computed role to the roles of account B
24
+ * 1. Account B now can call `ContractFoo.bar()`
25
+ *
26
+ * ## Admin Roles
27
+ *
28
+ * Admin roles allow for an address to call a function signature on any contract guarded by the `AccessControlManager`. This is particularly useful for
29
+ * contracts created by factories.
30
+ *
31
+ * For Admin roles a null address is hashed in place of the contract address (`keccak256(0x0000000000000000000000000000000000000000,functionSignatureBar)`.
32
+ *
33
+ * In the previous example, giving account B the admin role, account B will have permissions to call the `bar()` function on any contract that is guarded by
34
+ * ACM, not only contract A.
35
+ *
36
+ * ## Protocol Integration
37
+ *
38
+ * All restricted functions in Venus Protocol use a hook to ACM in order to check if the caller has the right permission to call the guarded function.
39
+ * `AccessControlledV5` and `AccessControlledV8` abstract contract makes this integration easier. They call ACM's external method
40
+ * `isAllowedToCall(address caller, string functionSig)`. Here is an example of how `setCollateralFactor` function in `Comptroller` is integrated with ACM:
41
+
42
+ ```
43
+ contract Comptroller is [...] AccessControlledV8 {
44
+ [...]
45
+ function setCollateralFactor(VToken vToken, uint256 newCollateralFactorMantissa, uint256 newLiquidationThresholdMantissa) external {
46
+ _checkAccessAllowed("setCollateralFactor(address,uint256,uint256)");
47
+ [...]
48
+ }
49
+ }
50
+ ```
12
51
  */
13
52
  contract AccessControlManager is AccessControl, IAccessControlManagerV8 {
14
53
  /// @notice Emitted when an account is given a permission to a certain contract function
@@ -4,12 +4,11 @@ pragma solidity 0.5.16;
4
4
  import "./IAccessControlManagerV5.sol";
5
5
 
6
6
  /**
7
- * @title Venus Access Control Contract.
8
- * @dev This contract is helper between access control manager and actual contract
9
- * This contract further inherited by other contract to integrate access controlled mechanism
10
- * It provides initialise methods and verifying access methods
7
+ * @title AccessControlledV5
8
+ * @author Venus
9
+ * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.5.16)
10
+ * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.
11
11
  */
12
-
13
12
  contract AccessControlledV5 {
14
13
  /// @notice Access control manager contract
15
14
  IAccessControlManagerV5 private _accessControlManager;
@@ -7,13 +7,11 @@ import "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol";
7
7
  import "./IAccessControlManagerV8.sol";
8
8
 
9
9
  /**
10
- * @title Venus Access Control Contract.
11
- * @dev The AccessControlledV8 contract is a wrapper around the OpenZeppelin AccessControl contract
12
- * It provides a standardized way to control access to methods within the Venus Smart Contract Ecosystem.
13
- * The contract allows the owner to set an AccessControlManager contract address.
14
- * It can restrict method calls based on the sender's role and the method's signature.
10
+ * @title AccessControlledV8
11
+ * @author Venus
12
+ * @notice This contract is helper between access control manager and actual contract. This contract further inherited by other contract (using solidity 0.8.13)
13
+ * to integrate access controlled mechanism. It provides initialise methods and verifying access methods.
15
14
  */
16
-
17
15
  abstract contract AccessControlledV8 is Initializable, Ownable2StepUpgradeable {
18
16
  /// @notice Access control manager contract
19
17
  IAccessControlManagerV8 private _accessControlManager;
@@ -3,6 +3,73 @@ pragma experimental ABIEncoderV2;
3
3
 
4
4
  import "./GovernorBravoInterfaces.sol";
5
5
 
6
+ /**
7
+ * @title GovernorBravoDelegate
8
+ * @notice Venus Governance latest on chain governance includes several new features including variable proposal routes and fine grained pause control.
9
+ * Variable routes for proposals allows for governance paramaters such as voting threshold and timelocks to be customized based on the risk level and
10
+ * impact of the proposal. Added granularity to the pause control mechanism allows governance to pause individual actions on specific markets,
11
+ * which reduces impact on the protocol as a whole. This is particularly useful when applied to isolated pools.
12
+ *
13
+ * The goal of **Governance** is to increase governance efficiency, while mitigating and eliminating malicious or erroneous proposals.
14
+ *
15
+ * ## Details
16
+ *
17
+ * Governance has **3 main contracts**: **GovernanceBravoDelegate, XVSVault, XVS** token.
18
+ *
19
+ * - XVS token is the protocol token used for protocol users to cast their vote on submitted proposals.
20
+ * - XVSVault is the main staking contract for XVS. Users first stake their XVS in the vault and receive voting power proportional to their staked
21
+ * tokens that they can use to vote on proposals. Users also can choose to delegate their voting power to other users.
22
+ *
23
+ * # Governor Bravo
24
+ *
25
+ * `GovernanceBravoDelegate` is main Venus Governance contract. Users interact with it to:
26
+ * - Submit new proposal
27
+ * - Vote on a proposal
28
+ * - Cancel a proposal
29
+ * - Queue a proposal for execution with a timelock executor contract.
30
+ * `GovernanceBravoDelegate` uses the XVSVault to get restrict certain actions based on a user's voting power. The governance rules it inforces are:
31
+ * - A user's voting power must be greater than the `proposalThreshold` to submit a proposal
32
+ * - If a user's voting power drops below certain amount, anyone can cancel the the proposal. The governance guardian and proposal creator can also
33
+ * cancel a proposal at anytime before it is queued for execution.
34
+ *
35
+ * ## Venus Improvement Proposal
36
+ *
37
+ * Venus Governance allows for Venus Improvement Proposals (VIPs) to be categorized based on their impact and risk levels. This allows for optimizing proposals
38
+ * execution to allow for things such as expediting interest rate changes and quickly updating risk parameters, while moving slower on other types of proposals
39
+ * that can prevent a larger risk to the protocol and are not urgent. There are three different types of VIPs with different proposal paramters:
40
+ *
41
+ * - `NORMAL`
42
+ * - `FASTTRACK`
43
+ * - `CRITICAL`
44
+ *
45
+ * When initializing the `GovernorBravo` contract, the parameters for the three routes are set. The parameters are:
46
+ *
47
+ * - `votingDelay`: The delay in blocks between submitting a proposal and when voting begins
48
+ * - `votingPeriod`: The number of blocks where voting will be open
49
+ * - `proposalThreshold`: The number of votes required in order submit a proposal
50
+ *
51
+ * There is also a separate timelock executor contract for each route, which is used to dispatch the VIP for execution, giving even more control over the
52
+ * flow of each type of VIP.
53
+ *
54
+ * ## Voting
55
+ *
56
+ * After a VIP is proposed, voting is opened after the `votingDelay` has passed. For example, if `votingDelay = 0`, then voting will begin in the next block
57
+ * after the proposal has been submitted. After the delay, the proposal state is `ACTIVE` and users can cast their vote `for`, `against`, or `abstain`,
58
+ * weighted by their total voting power (tokens + delegated voting power). Abstaining from a voting allows for a vote to be cast and optionally include a
59
+ * comment, without the incrementing for or against vote count. The total voting power for the user is obtained by calling XVSVault's `getPriorVotes`.
60
+ *
61
+ * `GovernorBravoDelegate` also accepts [EIP-712](https://eips.ethereum.org/EIPS/eip-712) signatures for voting on proposals via the external function
62
+ * `castVoteBySig`.
63
+ *
64
+ * ## Delegating
65
+ *
66
+ * A users voting power includes the amount of staked XVS the have staked as well as the votes delegate to them. Delegating is the process of a user loaning
67
+ * their voting power to another, so that the latter has the combined voting power of both users. This is an important feature because it allows for a user
68
+ * to let another user who they trust propose or vote in their place.
69
+ *
70
+ * The delegation of votes happens through the `XVSVault` contract by calling the `delegate` or `delegateBySig` functions. These same functions can revert
71
+ * vote delegation by calling the same function with a value of `0`.
72
+ */
6
73
  contract GovernorBravoDelegate is GovernorBravoDelegateStorageV2, GovernorBravoEvents {
7
74
  /// @notice The name of this contract
8
75
  string public constant name = "Venus Governor Bravo";
@@ -3,6 +3,11 @@ pragma experimental ABIEncoderV2;
3
3
 
4
4
  import "./GovernorBravoInterfaces.sol";
5
5
 
6
+ /**
7
+ * @title GovernorBravoDelegator
8
+ * @author Venus
9
+ * @notice The `GovernorBravoDelegator` contract.
10
+ */
6
11
  contract GovernorBravoDelegator is GovernorBravoDelegatorStorage, GovernorBravoEvents {
7
12
  constructor(
8
13
  address timelock_,
@@ -1,6 +1,11 @@
1
1
  pragma solidity ^0.5.16;
2
2
  pragma experimental ABIEncoderV2;
3
3
 
4
+ /**
5
+ * @title GovernorBravoEvents
6
+ * @author Venus
7
+ * @notice Set of events emitted by the GovernorBravo contracts.
8
+ */
4
9
  contract GovernorBravoEvents {
5
10
  /// @notice An event emitted when a new proposal is created
6
11
  event ProposalCreated(
@@ -58,6 +63,11 @@ contract GovernorBravoEvents {
58
63
  event ProposalMaxOperationsUpdated(uint oldMaxOperations, uint newMaxOperations);
59
64
  }
60
65
 
66
+ /**
67
+ * @title GovernorBravoDelegatorStorage
68
+ * @author Venus
69
+ * @notice Storage layout of the `GovernorBravoDelegator` contract
70
+ */
61
71
  contract GovernorBravoDelegatorStorage {
62
72
  /// @notice Administrator for this contract
63
73
  address public admin;
@@ -70,8 +80,8 @@ contract GovernorBravoDelegatorStorage {
70
80
  }
71
81
 
72
82
  /**
73
- * @title Storage for Governor Bravo Delegate
74
- * @notice For future upgrades, do not change GovernorBravoDelegateStorageV1. Create a new
83
+ * @title GovernorBravoDelegateStorageV1
84
+ * @dev For future upgrades, do not change GovernorBravoDelegateStorageV1. Create a new
75
85
  * contract which implements GovernorBravoDelegateStorageV1 and following the naming convention
76
86
  * GovernorBravoDelegateStorageVX.
77
87
  */
@@ -167,6 +177,12 @@ contract GovernorBravoDelegateStorageV1 is GovernorBravoDelegatorStorage {
167
177
  address public guardian;
168
178
  }
169
179
 
180
+ /**
181
+ * @title GovernorBravoDelegateStorageV2
182
+ * @dev For future upgrades, do not change GovernorBravoDelegateStorageV1. Create a new
183
+ * contract which implements GovernorBravoDelegateStorageV2 and following the naming convention
184
+ * GovernorBravoDelegateStorageVX.
185
+ */
170
186
  contract GovernorBravoDelegateStorageV2 is GovernorBravoDelegateStorageV1 {
171
187
  enum ProposalType {
172
188
  NORMAL,
@@ -190,6 +206,11 @@ contract GovernorBravoDelegateStorageV2 is GovernorBravoDelegateStorageV1 {
190
206
  mapping(uint => TimelockInterface) public proposalTimelocks;
191
207
  }
192
208
 
209
+ /**
210
+ * @title TimelockInterface
211
+ * @author Venus
212
+ * @notice Interface implemented by the Timelock contract.
213
+ */
193
214
  interface TimelockInterface {
194
215
  function delay() external view returns (uint);
195
216
 
@@ -1,6 +1,11 @@
1
1
  // SPDX-License-Identifier: BSD-3-Clause
2
2
  pragma solidity 0.5.16;
3
3
 
4
+ /**
5
+ * @title IAccessControlManagerV5
6
+ * @author Venus
7
+ * @notice Interface implemented by the `AccessControlManagerV5` contract.
8
+ */
4
9
  interface IAccessControlManagerV5 {
5
10
  /**
6
11
  * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
@@ -3,6 +3,11 @@ pragma solidity 0.8.13;
3
3
 
4
4
  import "@openzeppelin/contracts/access/IAccessControl.sol";
5
5
 
6
+ /**
7
+ * @title IAccessControlManagerV8
8
+ * @author Venus
9
+ * @notice Interface implemented by the `AccessControlManagerV8` contract.
10
+ */
6
11
  interface IAccessControlManagerV8 is IAccessControl {
7
12
  function giveCallPermission(address contractAddress, string calldata functionSig, address accountToPermit) external;
8
13